以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  schema中的key,keyref问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=9625)


--  作者:wanderingdog
--  发布时间:8/30/2004 7:32:00 PM

--  schema中的key,keyref问题
有以下xsd文件。记录某工作流.其中每一步有可能有一个或者多个分支。每个分支的brach-target元素指向另一个step的id.

<?xml version="1.0" encoding="utf_8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="flow">
  <xs:complexType>
   <xs:sequence>
    <!--type -->
    <xs:element name="type" type="xs:string" minOccurs="1" maxOccurs="1"/>
    <!--name-->
    <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
    <!--all steps-->
    <xs:element ref="steps" minOccurs="1" maxOccurs="1"/>
   </xs:sequence>
  </xs:complexType>
  <xs:key name="step-id">
   <xs:selector xpath="./steps/step"></xs:selector>
   <xs:field xpath="@step-id"></xs:field>
  </xs:key>
  <xs:keyref name="target-step-id"  refer="step-id">
   <xs:selector xpath="./steps/step/branch"></xs:selector>
   <xs:field xpath="branch-target"></xs:field>
  </xs:keyref>
 </xs:element>

 <!--all steps->
 <xs:element name="steps">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="step" minOccurs="2"></xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <!--step-->
 <xs:element name="step">
  <xs:complexType>
   <xs:sequence>
    <!--branches-->
    <xs:element ref="branch"></xs:element>
   </xs:sequence>
   <!--step id-->
   <xs:attribute ref="step-id" use="required"></xs:attribute>
   <!--step name-->
   <xs:attribute ref="step-name" use="required"></xs:attribute>
  </xs:complexType>
 </xs:element>

 <!--branch definition-->
 <xs:element name="branch">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="branch-action" minOccurs="1" maxOccurs="1"></xs:element>
    <!--target ID-->
    <xs:element ref="branch-target" minOccurs="1" maxOccurs="1"></xs:element>
   </xs:sequence>
   <xs:attribute ref="branch-id" use="required"></xs:attribute>
  </xs:complexType>
 </xs:element>

 <!--step id-->
 <xs:attribute name="step-id" use="required">
  <xs:simpleType>
   <xs:restriction base="xs:string">
    <xs:pattern value="\d"></xs:pattern>
   </xs:restriction>
  </xs:simpleType>
 </xs:attribute>

 <!--step name-->
 <xs:attribute name="step-name">
  <xs:simpleType>
   <xs:restriction base="xs:string"></xs:restriction>
  </xs:simpleType>
 </xs:attribute>

 <!--branch id-->
 <xs:attribute name="branch-id">
  <xs:simpleType>
   <!--integer--> 
   <xs:restriction base="xs:integer"></xs:restriction>
  </xs:simpleType>
 </xs:attribute>

 <!--branch action-->
 <xs:element name="branch-action">
  <xs:simpleType>
   <xs:restriction base="xs:string">
    <!--start-->
    <xs:enumeration value="start"></xs:enumeration>
    <!--continue-->
    <xs:enumeration value="continue"></xs:enumeration>
    <!--back-->
    <xs:enumeration value="back"></xs:enumeration>
    <!--break-->
    <xs:enumeration value="break"></xs:enumeration>
    <!--end-->
    <xs:enumeration value="end"></xs:enumeration>
   </xs:restriction>
  </xs:simpleType>
 </xs:element>

 <!--branch target-->
 <xs:element name="branch-target">
 </xs:element>
 
</xs:schema>

现在我想用step的step-id属性做一个key,在branch的brach-target属性中引用他。现在的引用好像是错误的。请问怎么引用才是正确的呢?


--  作者:sheisman
--  发布时间:9/2/2004 12:44:00 PM

--  
你有一个注释少一个结束符,在steps元素前的那个
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms