我有以下xml架构:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Assignments_Hello">
<xs:complexType>
<xs:sequence>
<xs:element name="Student">
<xs:complexType >
<xs:sequence>
<xs:element name="ID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{3}[0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="Phone" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[1-9][0-9]{2}-[1-9][0-9]{2}-[0-9]{4}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Assignment">
<xs:complexType>
<xs:sequence>
<xs:element name="AssignID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[1-9]{4}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Topic"/>
<xs:element name="StudentID" type or ref =**"#----Palceholder-------#"**/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我希望Assignment下的StudentID元素具有Student / ID类型。我该如何替换占位符? 我尝试过put type =“Assignments_Hello / Student / ID”,但没有用
答案 0 :(得分:0)
您需要在顶层声明类型并在两个位置引用它:
<xs:simpleType name="studentIdType">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{3}[0-9]"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Assignments_Hello">
<xs:complexType>
<xs:sequence>
<xs:element name="Student">
<xs:complexType >
<xs:sequence>
<xs:element name="ID" type="studentIdType"/>
<!-- .... -->
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Assignment">
<xs:complexType>
<xs:sequence>
<!-- ... -->
<xs:element name="StudentID" type="studentIdType" />
目前编写的架构只允许每个Student
有一个Assignment
和一个Assignments_Hello
元素,但如果您将其调整为允许多个StudentID
元素,那么您可能需要考虑使用密钥和 keyref 来确保学生ID是唯一的,并且每个作业的ID
确实对应于{{1}}其中一个学生。