<!-- ............................................................. -->
<!-- XML Topic Map Schema ....................................... -->
<!-- XML Topic Map (XTM) Schema, Version 2.0
This is XTM 2.0, an XML interchange syntax for ISO 13250 Topic
Maps, defined by ISO 13250-3.
See http://www.isotopicmaps.org/sam/sam-xtm/
-->
<xs:schema targetNamespace="http://www.topicmaps.org/xtm/"
elementFormDefault="qualified"
xmlns="http://www.topicmaps.org/xtm/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<xs:annotation>
<xs:appinfo>
<dc:title>W3C XML Schema for XTM 2.0</dc:title>
<dc:owner>ISO/IEC JTC1 SC34</dc:owner>
<dc:contributor>Max Voskob</dc:contributor>
<dc:contributor>Lars Marius Garshol</dc:contributor>
<dc:contributor>Ann Wrightson</dc:contributor>
</xs:appinfo>
</xs:annotation>
<!-- any-markup ................................................ -->
<xs:complexType name="any-markup" mixed="true">
<xs:complexContent mixed="true">
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="datatype" type="xs:anyURI"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- topicMap .................................................. -->
<xs:element name="topicMap">
<xs:complexType>
<xs:sequence>
<xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mergeMap" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="topic"/>
<xs:element ref="association"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="reifier" type="xs:anyURI"/>
<xs:attribute name="version" fixed="2.0"/>
</xs:complexType>
</xs:element>
<!-- topic ..................................................... -->
<xs:element name="topic">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="itemIdentity"/>
<xs:element ref="subjectLocator"/>
<xs:element ref="subjectIdentifier"/>
</xs:choice>
<xs:element ref="instanceOf" minOccurs="0" maxOccurs="1"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="name"/>
<xs:element ref="occurrence"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
</xs:element>
<!-- itemIdentity .............................................. -->
<xs:element name="itemIdentity">
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<!-- subjectLocator ............................................ -->
<xs:element name="subjectLocator">
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<!-- subjectIdentifier ......................................... -->
<xs:element name="subjectIdentifier">
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<!-- name ...................................................... -->
<xs:element name="name">
<xs:complexType>
<xs:sequence>
<xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="type" minOccurs="0"/>
<xs:element ref="scope" minOccurs="0"/>
<xs:element ref="value"/>
<xs:element ref="variant" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="reifier" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!-- value ..................................................... -->
<xs:element name="value" type="xs:string"/>
<!-- variant ................................................... -->
<xs:element name="variant">
<xs:complexType>
<xs:sequence>
<xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="scope"/>
<xs:choice>
<xs:element ref="resourceData"/>
<xs:element ref="resourceRef"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="reifier" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!-- scope ..................................................... -->
<xs:element name="scope">
<xs:complexType>
<xs:choice>
<xs:element ref="topicRef" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- instanceOf ................................................ -->
<xs:element name="instanceOf">
<xs:complexType>
<xs:choice>
<xs:element ref="topicRef" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- type ...................................................... -->
<xs:element name="type">
<xs:complexType>
<xs:choice>
<xs:element ref="topicRef"/>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- occurrence ................................................ -->
<xs:element name="occurrence">
<xs:complexType>
<xs:sequence>
<xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="type"/>
<xs:element ref="scope" minOccurs="0"/>
<xs:choice>
<xs:element ref="resourceRef"/>
<xs:element ref="resourceData"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="reifier" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!-- resourceData .............................................. -->
<xs:element name="resourceData" type="any-markup"/>
<!-- association ............................................... -->
<xs:element name="association">
<xs:complexType>
<xs:sequence>
<xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="type"/>
<xs:element ref="scope" minOccurs="0"/>
<xs:element ref="role" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="reifier" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!-- role ...................................................... -->
<xs:element name="role">
<xs:complexType>
<xs:sequence>
<xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="type"/>
<xs:element ref="topicRef"/>
</xs:sequence>
<xs:attribute name="reifier" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!-- topicRef .................................................. -->
<xs:element name="topicRef">
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<!-- resourceRef ............................................... -->
<xs:element name="resourceRef">
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<!-- mergeMap .................................................. -->
<xs:element name="mergeMap">
<xs:complexType>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
