0
我曾在這超過2周,現在我不能找到一個解決方案來限制屬性或元素.... :(如何使用派生類型
我有這個XSD文件,我想提出三點派生類型從具有某些相同特徵的eventType開始,但是:可以添加Professor元素的lessonType, seminarType只有一個Lecture元素,labType不具有屬性教室。 我有這個xsd代碼,但它似乎沒有做我想要的...
<xsd:element name="Event" type="eventType"/>
<!-- global declaration of elements Lesson,
Seminar, Lab that are equivalent
lessonType, seminarType, labType-->
<!-- Substitution group for Event-->
<xsd:element name="Lesson"
substitutionGroup="Event"
type="lessonType"/>
<xsd:element name="Seminar"
substitutionGroup="Event"
type="seminarType"/>
<xsd:element name="Lab"
substitutionGroup="Event"
type="labType"/>
<!--end of global declaration of elements Lesson,
Seminar, Lab-->
<!-- End of Substitution group for Event-->
<xsd:attribute name="Classroom">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:complexType name="eventType">
<xsd:sequence>
<xsd:element name="Title"
type="xsd:string"/>
<xsd:element maxOccurs="5"
minOccurs="0"
name="Lecture">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Day">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Monday"/>
<xsd:enumeration value="Tuesday"/>
<xsd:enumeration value="Wednesday"/>
<xsd:enumeration value="Thursday"/>
<xsd:enumeration value="Friday"/>
<xsd:enumeration value="Saturday"/>
<xsd:enumeration value="Sunday"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Time">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern
value="[0-9]{2}:[0-9]{2}\-[0-9]{2}:[0-9]{2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Classroom">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!--extension lessonType of eventType -->
<xsd:complexType name="lessonType">
<xsd:complexContent>
<xsd:extension base="eventType">
<xsd:sequence>
<xsd:element name="Professor" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!--end of lessonType-->
<!--extension seminarType of eventType -->
<xsd:complexType name="seminarType">
<xsd:complexContent>
<xsd:extension base="eventType">
<xsd:sequence>
<xsd:element name="Lecture" maxOccurs="1" minOccurs="0" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!--end of seminarType-->
<!--extension labType of eventType -->
<xsd:complexType name="labType">
<xsd:complexContent>
<xsd:extension base="eventType">
<xsd:attribute name="Classroom" use="prohibited"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!--end of labType-->
<xsd:element name="Schedule">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded"
ref="Event"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
不應該是VA的XML文件蓋子下面的 - 但它是由架構所接受... :(
<Schedule xsi:schemaLocation="schedule schedule9.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="schedule">
<Lesson>
<Title>Artificial Intelligence</Title>
<Lecture Classroom="BA">
<Day>Wednesday</Day>
<Time>09:00-11:00</Time>
</Lecture>
<Lecture Classroom="BA">
<Day>Thursday</Day>
<Time>09:00-11:00</Time>
</Lecture>
<Professor>Hatzilygeroudis</Professor>
</Lesson>
<Lab>
<Title>Artificial Intelligence</Title>
<Lecture Classroom="BA">
<Day>Friday</Day>
<Time>17:00-18:00</Time>
</Lecture>
</Lab>
<Seminar>
<Title>Constraint Satisfaction Problems</Title>
<Lecture Classroom="B3">
<Day>Monday</Day>
<Time>19:00-21:00</Time>
</Lecture>
</Seminar>
<Lesson>
<Title>Knowledge Representation in Web</Title>
<Lecture Classroom="P200">
<Day>Friday</Day>
<Time>15:00-17:00</Time>
</Lecture>
<Professor>Hatzilygeroudis</Professor>
</Lesson>
</Schedule>
我該怎麼辦錯了????