Я работал над этим более 2 недель и не могу найти решение.... :(
У меня есть этот файл XSD, и я хочу создать три производных типа от eventType, которые имеют одни и те же характеристики, но: LessonType, в который можно добавить элемент Professor, WorkshopType должен иметь только один элемент 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>
Файл 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>
что я делаю не так????