我的xample架构
<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>
我也有教授作为限制,你不能插入任何其他东西
<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:attribute name="prof" type="Professors"/>
这个错误
'Professors' must refer to an existing simple or complex type.
我想要什么? 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>
我如何创建架构?
答案 0 :(得分:1)
如果“教授”元素没有属性,则可以将其定义为:
<xsd:element name="Professor" type="xsd:int"/>
它不需要具有内部属性。要将教授元素的值限制为一个已定义的教授,您需要使用一个键和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"/>