XML和complexType的限制
我的示例的模式XML和complexType的限制,xml,Xml,我的示例的模式 <xsd:element name="Subject" minOccurs="1" maxOccurs="1"> <xsd:annotation> <xsd:documentation>Name of the subject. Values are: Vaje, Kolokvij, Predavanje, Izpit</xsd:documentation> </xsd:annotation> <xsd:si
<xsd:element name="Subject" minOccurs="1" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>Name of the subject. Values are: Vaje, Kolokvij, Predavanje, Izpit</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Vaje"/>
<xsd:enumeration value="Kolokvik"/>
<xsd:enumeration value="Predavanje"/>
<xsd:enumeration value="Izpit"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Professor" minOccurs="1" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>Name of the professors</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:attribute name="prof" type="Professors"/>
</xsd:complexType>
</xsd:element>
我想要什么?XML如下所示:
<Professors id="1" name="sss" surname="sss" code="15426" email="sss@sss.si"/>
<Professors id="2" name="fff" surname="ff" code="15446" email="ff@ff.si"/>
然后在稍后我将使用id中的数字1
<Subject>vaje</Subject>
<Professor>1</Professor>
vaje
1.
如何创建模式 如果“教授”元素没有属性,则可以将其定义为:
<xsd:element name="Professor" type="xsd:int"/>
它不需要具有内部属性。要将Professor元素的值限制为定义的Professor之一,需要使用key和keyref:
<!-- The root element of the instance document -->
<xsd:element name="Root">
<xsd:complexType>
<!-- Subject ref and definition omitted for brevity -->
<xsd:element ref="Professors" maxOccurs="unbounded"/>
<xsd:element ref="Professor" maxOccurs="unbounded"/>
</xsd:complexType>
<xsd:key name="ProfessorId">
<xsd:selector xpath="Professors"/>
<xsd:field xpath="@id"/>
</xsd:key>
<xsd:keyref name="ProfessorIdRef" refer="ProfessorId">
<xsd:selector xpath="Professor"/>
<xsd:field xpath="text()"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="Professors">
<xsd:complexType>
<xsd:attribute name="id"/>
<xsd:attribute name="name"/>
<xsd:attribute name="surname"/>
<xsd:attribute name="code"/>
<xsd:attribute name="email"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Professor" type="xsd:string"/>
<xsd:element name="Professor" type="xsd:int"/>
<!-- The root element of the instance document -->
<xsd:element name="Root">
<xsd:complexType>
<!-- Subject ref and definition omitted for brevity -->
<xsd:element ref="Professors" maxOccurs="unbounded"/>
<xsd:element ref="Professor" maxOccurs="unbounded"/>
</xsd:complexType>
<xsd:key name="ProfessorId">
<xsd:selector xpath="Professors"/>
<xsd:field xpath="@id"/>
</xsd:key>
<xsd:keyref name="ProfessorIdRef" refer="ProfessorId">
<xsd:selector xpath="Professor"/>
<xsd:field xpath="text()"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="Professors">
<xsd:complexType>
<xsd:attribute name="id"/>
<xsd:attribute name="name"/>
<xsd:attribute name="surname"/>
<xsd:attribute name="code"/>
<xsd:attribute name="email"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Professor" type="xsd:string"/>