-- 作者: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属性中引用他。现在的引用好像是错误的。请问怎么引用才是正确的呢? 
|