<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
 targetNamespace="http://www.xstandoff.net/2009/xstandoff/1.1"
 xmlns:all="http://www.xstandoff.net/2009/all" elementFormDefault="qualified"
 xmlns:xsf="http://www.xstandoff.net/2009/xstandoff/1.1">
 <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
 <xs:include schemaLocation="log.xsd"/>
 <xs:annotation>
  <xs:documentation xml:lang="en">
   <![CDATA[
      XSD for the XStandoff format (XSF) base layer
      Version: 1.2r
      Date: 2012-01-03
      Copyright (c) 2008-2012 Maik Stührenberg, Bielefeld University.
      Contact: maik.stuehrenberg@uni-bielefeld.de
      This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
      This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU GNU Lesser General Public License for more details.
      You should have received a copy of the GNU Lesser General Public License along with this program (file 'lgpl-3.0.txt').  If not, see <http://www.gnu.org/licenses/>.
      ]]>
  </xs:documentation>
 </xs:annotation>
 <!-- Element declaration -->
 <xs:element name="corpus">
  <xs:annotation>
   <xs:documentation xml:lang="en">The corpus element stores a whole corpus containing of resources
    (optional), meta data (optional) and corpusData entries (normally texts, other file types
    including video and audio files are supported as well). Usually, one would use the possibility
    to use one file containing the corpus root element which consists of several corpusDataRef
    elements (e.g. pointers to separate corpusData instances).</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:element ref="xsf:resources" minOccurs="0" maxOccurs="1"/>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element ref="xsf:corpusData"/>
     <xs:element ref="xsf:corpusDataRef"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="corpusData">
  <xs:annotation>
   <xs:documentation xml:lang="en">The corpusData element stores all information regarding a single
    corpus file. </xs:documentation>
   <xs:appinfo>
    <sch:title>Schematron primaryData constraint rule</sch:title>
    <sch:ns prefix="base" uri="http://www.text-technology.de/sekimo"/>
    <sch:pattern id="PositionValues">
     <sch:rule context="xsf:corpusData">
      <sch:assert
       test="count(xsf:primaryData) = 1 or count(xsf:primaryData) > 1 and not(xsf:primaryData[@role='master'])"
       >None of the provided primaryData elements is set as master file.</sch:assert>
     </sch:rule>
    </sch:pattern>
   </xs:appinfo>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:element ref="xsf:primaryData" minOccurs="1" maxOccurs="unbounded"/>
    <xs:element ref="xsf:segmentation" minOccurs="0" maxOccurs="1"/>
    <xs:element ref="xsf:annotation" minOccurs="0" maxOccurs="1"/>
   </xs:sequence>
   <xs:attributeGroup ref="xsf:cd.attributes"/>
   <xs:attribute ref="xsf:alt" use="optional"/>
  </xs:complexType>
 </xs:element>
 <xs:element name="corpusDataRef">
  <xs:annotation>
   <xs:documentation xml:lang="en">The corpusDataRef element is used as a placeholder for a single
    corpusData entry saved externally.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="xsf:RefType">
     <xs:attributeGroup ref="xsf:cd.attributes"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
 <xs:element name="metaRef" type="xsf:RefType">
  <xs:annotation>
   <xs:documentation xml:lang="en">The metaRef element is used as a placeholder for external
    metadata.</xs:documentation>
  </xs:annotation>
 </xs:element>
 <xs:element name="primaryData">
  <xs:annotation>
   <xs:documentation xml:lang="en">The primaryData element contains either one (or more)
    reference(s) to a normalized (in terms of whitespace) file serving as base data for the
    annotation, or -- when dealing with shorter texts -- the whole text as a string underneath the
    textualContent child element.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:choice>
     <xs:element ref="xsf:textualContent" minOccurs="1" maxOccurs="1"/>
     <xs:element ref="xsf:primaryDataRef" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:element ref="xsf:checksum" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
   <xs:attributeGroup ref="xsf:base.attributes"/>
   <xs:attributeGroup ref="xsf:pd.attributes"/>
   <xs:attribute ref="xml:id" use="optional"/>
   <xs:attribute ref="xml:lang" use="optional"/>
   <xs:attribute ref="xml:space" use="optional"/>
  </xs:complexType>
 </xs:element>
 <xs:element name="primaryDataRef" type="xsf:RefType">
  <xs:annotation>
   <xs:documentation xml:lang="en">The primaryDataRef element is used to refer to one or externally
    stored representations of the primary data used during the annotation
    process.</xs:documentation>
  </xs:annotation>
 </xs:element>
 <xs:element name="textualContent" type="xs:string">
  <xs:annotation>
   <xs:documentation xml:lang="en">The textualContent element stores the textual primary
    data.</xs:documentation>
  </xs:annotation>
 </xs:element>
 <xs:element name="checksum">
  <xs:annotation>
   <xs:documentation xml:lang="en">The checksum element can be used to preserve integrity of the
    primary data when dealing with multiple annotation layers.</xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
   <xs:attribute name="algorithm" type="xs:string" use="required">
    <xs:annotation>
     <xs:documentation xml:lang="en">It is required to supply the algorithm that was used to
      calculate the checksum.</xs:documentation>
    </xs:annotation>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
 <xs:element name="resources">
  <xs:annotation>
   <xs:documentation xml:lang="en">The resources element is a container element for the resources
    used for segmentation or annotation of the primary data. Resources can be included in an XSF
    file (via the resource element) or referred to by the resourceRef element.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence minOccurs="1" maxOccurs="unbounded">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element ref="xsf:meta"/>
     <xs:element ref="xsf:metaRef"/>
    </xs:choice>
    <xs:element ref="xsf:resource"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="segmentation">
  <xs:annotation>
   <xs:documentation xml:lang="en">The segmentation element is a container element for the
    segmentation units (segment, one or more) that are used to identify text spans in the primary
    data.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:element ref="xsf:segment" minOccurs="1" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="segment">
  <xs:annotation>
   <xs:documentation xml:lang="en">A segment identifies a (character or time) span over the primary
    data. The creator attribute may be used for referencing a resource that was used during
    segmentation, in addition, the alt attribute may be used to mark this segment as an alternative
    segmentation to other segments.</xs:documentation>
   <xs:appinfo>
    <sch:title>Schematron segment constraint rule</sch:title>
    <sch:ns prefix="base" uri="http://www.text-technology.de/sekimo"/>
    <sch:pattern id="PositionValues">
     <sch:rule context="xsf:segment">
      <sch:assert test="xs:integer(@end) >= xs:integer(@start)" diagnostics="checkPositions">End
       position of a segment must be higher than or equal to its start position.</sch:assert>
      <sch:assert test="xs:integer(@start) >= xs:integer(//xsf:corpusData/xsf:primaryData/@start)"
       diagnostics="checkPositionsPrimaryDataStart">Start position of a segment must be higher than
       or equal to the start position of the complete primary data.</sch:assert>
      <sch:assert test="xs:integer(@end) &lt;= xs:integer(//xsf:corpusData/xsf:primaryData/@end)"
       diagnostics="checkPositionsPrimaryDataEnd">End position of a segment must be lower than or
       equal to the position of the complete primary data.</sch:assert>
     </sch:rule>
    </sch:pattern>
    <sch:diagnostics>
     <sch:diagnostic id="checkPositions">DiagnosticsError: End position of segment <sch:value-of
       select="@xml:id"/> is lower than its start position. Start position: <sch:value-of
       select="@start"/>. End position: <sch:value-of select="@end"/>.</sch:diagnostic>
     <sch:diagnostic id="checkPositionsPrimaryDataStart">DiagnosticsError: Start position of segment
       <sch:value-of select="@xml:id"/> is lower than start position of primary data. Start position
      of segment: <sch:value-of select="@start"/>. Start position of primary data: <sch:value-of
       select="//xsf:corpusData/xsf:primaryData/@start"/>.</sch:diagnostic>
     <sch:diagnostic id="checkPositionsPrimaryDataEnd">DiagnosticsError: End position of segment
       <sch:value-of select="@xml:id"/> is greater than end position of primary data. End position
      of segment: <sch:value-of select="@end"/>. End position of primary data: <sch:value-of
       select="//xsf:corpusData/xsf:primaryData/@end"/>.</sch:diagnostic>
    </sch:diagnostics>
   </xs:appinfo>
  </xs:annotation>
  <xs:complexType>
   <xs:choice>
    <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
   </xs:choice>
   <xs:attributeGroup ref="xsf:base.attributes"/>
   <xs:attributeGroup ref="xsf:seg.attributes"/>
   <xs:attribute ref="xsf:creator" use="optional"/>
   <xs:attribute ref="xsf:alt" use="optional"/>
  </xs:complexType>
 </xs:element>
 <xs:element name="resource">
  <xs:annotation>
   <xs:documentation xml:lang="en">The resource element contains optional meta data and the resource
    used for segmentation or annotation.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element ref="xsf:meta"/>
     <xs:element ref="xsf:metaRef"/>
    </xs:choice>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element ref="xsf:resourceContent" minOccurs="1" maxOccurs="1"/>
     <xs:element ref="xsf:resourceRef"/>
    </xs:choice>
   </xs:sequence>
   <xs:attribute ref="xml:id" use="required"/>
  </xs:complexType>
 </xs:element>
 <xs:element name="resourceRef" type="xsf:RefType">
  <xs:annotation>
   <xs:documentation xml:lang="en">The resourceRef element is used for referencing resources used in
    the annotation process that are stored externally.</xs:documentation>
  </xs:annotation>
 </xs:element>
 <xs:element name="resourceContent">
  <xs:annotation>
   <xs:documentation xml:lang="en">The resourceContent contains the content of a
    resource.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="annotation">
  <xs:annotation>
   <xs:documentation xml:lang="en">The annotation element contains annotation levels (and their
    respective layer(s)).</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:element ref="xsf:level" minOccurs="1" maxOccurs="unbounded"/>
    <xs:element ref="xsf:log" minOccurs="0"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="level">
  <xs:annotation>
   <xs:documentation xml:lang="en">The level element stores meta information and the actual
    annotation layer(s). A level refers to the conceptual model of information represented in
    markup.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:element ref="xsf:layer" minOccurs="1" maxOccurs="unbounded"/>
    <xs:element ref="xsf:log" minOccurs="0"/>
   </xs:sequence>
   <xs:attribute ref="xml:id" use="optional"/>
   <xs:attribute name="import" type="xs:IDREFS" use="optional">
    <xs:annotation>
     <xs:documentation xml:lang="en">The import attribute should be used to mark other annotations
      levels that have to be established before this level can be used (i.e. this annotation level
      uses information derived from other levels).</xs:documentation>
    </xs:annotation>
   </xs:attribute>
   <xs:attribute ref="xsf:dcrCategory" use="optional"/>
  </xs:complexType>
 </xs:element>
 <xs:element name="meta">
  <xs:annotation>
   <xs:documentation xml:lang="en">The meta element can be used to store meta information. Elements
    derived from other namespaces are allowed, e.g. OLAC metadata is recommended for textual primary
    data. Note that schema processing is set to lax, i.e. a meta information schema can be provided
    but is optional.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="layer">
  <xs:annotation>
   <xs:documentation xml:lang="en">In contrast to the level the layer element refers to the
    technical realisation (or XML serialisation) of markup. It contains the converted (i.e.
    standoff) representation of inline annotation layers and their respective elements and
    attributes. Note that schema processing is set to lax, i.e. an underlying schema (XSD) should be
    accessible, i.e., all layers should have an corresponding XSD associated, the only exception
    should be the all layer. The priority attribute can be used to prioritize annotation levels (in
    case of overlapping markup during an inline markup unification) -- the highest number correspond
    to the innermost markup. The creator attribute can be used to refer to resources that have been
    provided in an XSF file or to a user/agent who has made an annotation level. Keep in mind, that
    its type is NMTOKENS since resources belong to the corpus as a whole, not to a single corpusData
    file</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:choice>
     <xs:element ref="xsf:meta" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="xsf:metaRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
    <xs:element ref="xsf:log" minOccurs="0"/>
   </xs:sequence>
   <xs:attribute ref="xml:id" use="optional"/>
   <xs:attribute name="priority" type="xs:int" default="0"/>
   <xs:attribute ref="xsf:creator" use="optional"/>
  </xs:complexType>
 </xs:element>
 <xs:element name="inline">
  <xs:annotation>
   <xs:documentation xml:lang="en">The inline element is used as root element for the outcome of an
    XStandoff2Inline transformation.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="milestone">
  <xs:annotation>
   <xs:documentation xml:lang="en">The milestone element is modelled after the TEI milestone element
    and should be used when an XStandoff instance should be serialized into an inline annotation
    format. The xsf:segment attribute can be used to refer to the segment that was used in the
    XStandoff representation, the charPos attribute depicts the character position in the primary
    data where the overlap happened.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:attribute ref="xsf:segment" use="optional"/>
   <xs:attribute name="n" use="optional"/>
   <xs:attribute name="charPos" use="required" type="xs:positiveInteger"/>
   <xs:attribute name="unit" use="required" type="xs:NMTOKENS"/>
   <xs:attribute name="mType">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="start"/>
      <xs:enumeration value="end"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
 <!-- Attribute group declaration -->
 <xs:attributeGroup name="cd.attributes">
  <xs:attribute ref="xml:id" use="required"/>
  <xs:attribute name="xsfVersion" type="xs:decimal" default="1.1"/>
 </xs:attributeGroup>
 <xs:attributeGroup name="seg.attributes">
  <xs:attribute ref="xml:id" use="required"/>
  <xs:attribute name="primaryData" type="xs:IDREFS" use="optional"/>
  <xs:attribute name="type" use="optional">
   <xs:annotation>
    <xs:documentation xml:lang="en">The type attribute shall be used to specify the segment.
     Possible values are: 'empty' for empty segments depicting formerly empty inline elements,
     'char' for (non-whitespace) character data of the primary data, 'ws' for whitespace character
     data, 'pun' for punctuation characters, 'dur' when using a duration (i.e. non-character based)
     segmentation, 'seg' for depicting a segment that is composed via other
     segments.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="empty"/>
     <xs:enumeration value="char"/>
     <xs:enumeration value="ws"/>
     <xs:enumeration value="pun"/>
     <xs:enumeration value="dur"/>
     <xs:enumeration value="seg"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="content" type="xs:string" use="optional">
   <xs:annotation>
    <xs:documentation xml:lang="en">In the very rare case that you want to store the textual content
     of a segment, that is the primary data that is annotated by the annotation elements referring
     to this very segment, use the content attribute. The content can be saved in terms of literal
     characters or in terms of Unicode codepoints. See the unicodeNormalizationForm attribute in the
     latter case.</xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:attribute name="unicodeNormalizationForm" use="optional">
   <xs:annotation>
    <xs:documentation xml:lang="en">Some special characters (such as accented characters) can be
     represented in Unicode character sets by unique code points (precomposed) or with combining
     characters (decomposed). Since XSF requires a unique representation, a normalized form of
     Unicode text shall be used if a Unicode character set is used. Four Unicode Standard
     normalization forms are available: Normalization Form D (NFD), Normalization Form KD (NFKD),
     Normalization Form C (NFC), and Normalization Form KC (NFKC). Roughly speaking, NFD and NFKD
     decompose characters where possible, while NFC and NFKC compose characters where possible. Cf.
     Chapter 2, 'General Structure', Chapter 3, 'Conformance' and the Annex #15, 'Unicode
     Normalization Forms,' of The Unicode Standard for details. This information may be used by
     software processing XStandoff instances.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="NFD"/>
     <xs:enumeration value="NFKD"/>
     <xs:enumeration value="NFC"/>
     <xs:enumeration value="NFKC"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="segments" type="xs:IDREFS" use="optional">
   <xs:annotation>
    <xs:documentation xml:lang="en">The segments attribute can be used together with the mode
     attribute to create a new segment via referring to already established
     segments.</xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:attribute name="mode" default="continuous">
   <xs:annotation>
    <xs:documentation xml:lang="en">The mode attribute marks segments that are created by referring
     to already established segments (cf. the segments attribute) either as continuous or
     disjoint.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="continuous"/>
     <xs:enumeration value="disjoint"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
 </xs:attributeGroup>
 <xs:attributeGroup name="base.attributes">
  <xs:attribute name="start" type="xs:nonNegativeInteger" use="optional"/>
  <xs:attribute name="end" type="xs:nonNegativeInteger" use="optional"/>
 </xs:attributeGroup>
 <xs:attributeGroup name="pd.attributes">
  <xs:attribute name="role" default="master">
   <xs:annotation>
    <xs:documentation xml:lang="en">In case of multiple primary data files one primary data should
     be set as master using the role attribute. The master primary data file specifies the
     timeline/character stream that is used for creating segments.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:NMTOKEN">
     <xs:enumeration value="master"/>
     <xs:enumeration value="slave"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="unit" use="optional" default="chars">
   <xs:annotation>
    <xs:documentation xml:lang="en">The unit used for delimiting the segmentation. XSF does not use
     the built-in data type duration, since it lacks some of the units used here.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="chars"/>
     <xs:enumeration value="bytes"/>
     <xs:enumeration value="microseconds"/>
     <xs:enumeration value="milliseconds"/>
     <xs:enumeration value="seconds"/>
     <xs:enumeration value="minutes"/>
     <xs:enumeration value="hours"/>
     <xs:enumeration value="days"/>
     <xs:enumeration value="weeks"/>
     <xs:enumeration value="months"/>
     <xs:enumeration value="years"/>
     <xs:enumeration value="palFrames"/>
     <xs:enumeration value="ntscFrames"/>
     <xs:enumeration value="other"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="offset" use="optional" type="xs:integer">
   <xs:annotation>
    <xs:documentation xml:lang="en">The offset attribute shall be used for specifying an offset (in
     the same unit that is used for delimiting segments) between different primaryData
     files.</xs:documentation>
   </xs:annotation>
  </xs:attribute>
 </xs:attributeGroup>
 <xs:attributeGroup name="ref.attributes">
  <xs:attribute name="uri" type="xs:anyURI" use="required">
   <xs:annotation>
    <xs:documentation xml:lang="en">The URI specifying the location of the referenced
     file.</xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:attribute name="uriType" use="optional" default="relative">
   <xs:annotation>
    <xs:documentation xml:lang="en">This attribute is used to differentiate between relative and
     absolute URIs.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="relative"/>
     <xs:enumeration value="absolute"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="encoding" type="xs:string" use="optional" default="utf-8"/>
  <xs:attribute name="unicodeNormalizationForm" use="optional">
   <xs:annotation>
    <xs:documentation xml:lang="en">Some special characters (such as accented characters) can be
     represented in Unicode character sets by unique code points (precomposed) or with combining
     characters (decomposed). Since XSF requires a unique representation, a normalized form of
     Unicode text shall be used if a Unicode character set is used. Four Unicode Standard
     normalization forms are available: Normalization Form D (NFD), Normalization Form KD (NFKD),
     Normalization Form C (NFC), and Normalization Form KC (NFKC). Roughly speaking, NFD and NFKD
     decompose characters where possible, while NFC and NFKC compose characters where possible. Cf.
     Chapter 2, 'General Structure', Chapter 3, 'Conformance' and the Annex #15, 'Unicode
     Normalization Forms,' of The Unicode Standard for details. These information may be used by
     software processing XStandoff instances.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="NFD"/>
     <xs:enumeration value="NFKD"/>
     <xs:enumeration value="NFC"/>
     <xs:enumeration value="NFKC"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="mimeType" use="optional">
   <xs:annotation>
    <xs:documentation xml:lang="en">Enumeration of mime-types that can be used for primary data
     files.</xs:documentation>
   </xs:annotation>
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="application/x-bytecode.python"/>
     <xs:enumeration value="application/acad"/>
     <xs:enumeration value="application/applefile"/>
     <xs:enumeration value="application/astound"/>
     <xs:enumeration value="application/arj"/>
     <xs:enumeration value="application/base64"/>
     <xs:enumeration value="application/binhex"/>
     <xs:enumeration value="application/binhex4"/>
     <xs:enumeration value="application/book"/>
     <xs:enumeration value="application/cdf"/>
     <xs:enumeration value="application/clariscad"/>
     <xs:enumeration value="application/commonground"/>
     <xs:enumeration value="application/drafting"/>
     <xs:enumeration value="application/dsptype"/>
     <xs:enumeration value="application/dxf"/>
     <xs:enumeration value="application/envoy"/>
     <xs:enumeration value="application/excel"/>
     <xs:enumeration value="application/fractals"/>
     <xs:enumeration value="application/freeloader"/>
     <xs:enumeration value="application/futuresplash"/>
     <xs:enumeration value="application/gnutar"/>
     <xs:enumeration value="application/groupwise"/>
     <xs:enumeration value="application/hlp"/>
     <xs:enumeration value="application/hta"/>
     <xs:enumeration value="application/i-deas"/>
     <xs:enumeration value="application/iges"/>
     <xs:enumeration value="application/iges"/>
     <xs:enumeration value="application/inf"/>
     <xs:enumeration value="application/java"/>
     <xs:enumeration value="application/java-byte-code"/>
     <xs:enumeration value="application/lha"/>
     <xs:enumeration value="application/lzx"/>
     <xs:enumeration value="application/mac-binary"/>
     <xs:enumeration value="application/mac-binhex"/>
     <xs:enumeration value="application/mac-binhex40"/>
     <xs:enumeration value="application/mac-compactpro"/>
     <xs:enumeration value="application/macbinary"/>
     <xs:enumeration value="application/marc"/>
     <xs:enumeration value="application/mbedlet"/>
     <xs:enumeration value="application/mcad"/>
     <xs:enumeration value="application/mime"/>
     <xs:enumeration value="application/mspowerpoint"/>
     <xs:enumeration value="application/msword"/>
     <xs:enumeration value="application/mswrite"/>
     <xs:enumeration value="application/netmc"/>
     <xs:enumeration value="application/octet-stream"/>
     <xs:enumeration value="application/oda"/>
     <xs:enumeration value="application/pdf"/>
     <xs:enumeration value="application/pkcs-12"/>
     <xs:enumeration value="application/pkcs-crl"/>
     <xs:enumeration value="application/pkcs10"/>
     <xs:enumeration value="application/pkcs7-mime"/>
     <xs:enumeration value="application/pkcs7-signature"/>
     <xs:enumeration value="application/pkix-cert"/>
     <xs:enumeration value="application/pkix-crl"/>
     <xs:enumeration value="application/plain"/>
     <xs:enumeration value="application/postscript"/>
     <xs:enumeration value="application/powerpoint"/>
     <xs:enumeration value="application/pro_eng"/>
     <xs:enumeration value="application/ringing-tones"/>
     <xs:enumeration value="application/rtf"/>
     <xs:enumeration value="application/rtf"/>
     <xs:enumeration value="application/sdp"/>
     <xs:enumeration value="application/sea"/>
     <xs:enumeration value="application/set"/>
     <xs:enumeration value="application/sla"/>
     <xs:enumeration value="application/smil"/>
     <xs:enumeration value="application/solids"/>
     <xs:enumeration value="application/sounder"/>
     <xs:enumeration value="application/step"/>
     <xs:enumeration value="application/streamingmedia"/>
     <xs:enumeration value="application/toolbook"/>
     <xs:enumeration value="application/vda"/>
     <xs:enumeration value="application/vnd.fdf"/>
     <xs:enumeration value="application/vnd.hp-hpgl"/>
     <xs:enumeration value="application/vnd.hp-pcl"/>
     <xs:enumeration value="application/vnd.ms-excel"/>
     <xs:enumeration value="application/vnd.ms-pki.certstore"/>
     <xs:enumeration value="application/vnd.ms-pki.pko"/>
     <xs:enumeration value="application/vnd.ms-pki.seccat"/>
     <xs:enumeration value="application/vnd.ms-pki.stl"/>
     <xs:enumeration value="application/vnd.ms-powerpoint"/>
     <xs:enumeration value="application/vnd.ms-project"/>
     <xs:enumeration value="application/vnd.nokia.configuration-message"/>
     <xs:enumeration value="application/vnd.nokia.ringing-tone"/>
     <xs:enumeration value="application/vnd.rn-realmedia"/>
     <xs:enumeration value="application/vnd.rn-realplayer"/>
     <xs:enumeration value="application/vnd.wap.wmlc"/>
     <xs:enumeration value="application/vnd.wap.wmlscriptc"/>
     <xs:enumeration value="application/vnd.xara"/>
     <xs:enumeration value="application/vocaltec-media-desc"/>
     <xs:enumeration value="application/vocaltec-media-file"/>
     <xs:enumeration value="application/wordperfect"/>
     <xs:enumeration value="application/wordperfect6.0"/>
     <xs:enumeration value="application/wordperfect6.1"/>
     <xs:enumeration value="application/x-123"/>
     <xs:enumeration value="application/x-aim"/>
     <xs:enumeration value="application/x-authorware-bin"/>
     <xs:enumeration value="application/x-authorware-map"/>
     <xs:enumeration value="application/x-authorware-seg"/>
     <xs:enumeration value="application/x-bcpio"/>
     <xs:enumeration value="application/x-binary"/>
     <xs:enumeration value="application/x-binhex40"/>
     <xs:enumeration value="application/x-bsh"/>
     <xs:enumeration value="application/x-bytecode.elisp (compiled elisp)"/>
     <xs:enumeration value="application/x-bzip"/>
     <xs:enumeration value="application/x-bzip2"/>
     <xs:enumeration value="application/x-cdf"/>
     <xs:enumeration value="application/x-cdlink"/>
     <xs:enumeration value="application/x-chat"/>
     <xs:enumeration value="application/x-chat"/>
     <xs:enumeration value="application/x-cmu-raster"/>
     <xs:enumeration value="application/x-cocoa"/>
     <xs:enumeration value="application/x-compactpro"/>
     <xs:enumeration value="application/x-compress"/>
     <xs:enumeration value="application/x-compressed"/>
     <xs:enumeration value="application/x-conference"/>
     <xs:enumeration value="application/x-cpio"/>
     <xs:enumeration value="application/x-cpt"/>
     <xs:enumeration value="application/x-csh"/>
     <xs:enumeration value="application/x-deepv"/>
     <xs:enumeration value="application/x-director"/>
     <xs:enumeration value="application/x-dvi"/>
     <xs:enumeration value="application/x-elc"/>
     <xs:enumeration value="application/x-envoy"/>
     <xs:enumeration value="application/x-envoy"/>
     <xs:enumeration value="application/x-esrehber"/>
     <xs:enumeration value="application/x-excel"/>
     <xs:enumeration value="application/x-frame"/>
     <xs:enumeration value="application/x-freelance"/>
     <xs:enumeration value="application/x-gsp"/>
     <xs:enumeration value="application/x-gss"/>
     <xs:enumeration value="application/x-gtar"/>
     <xs:enumeration value="application/x-gzip"/>
     <xs:enumeration value="application/x-hdf"/>
     <xs:enumeration value="application/x-helpfile"/>
     <xs:enumeration value="application/x-httpd-imap"/>
     <xs:enumeration value="application/x-ima"/>
     <xs:enumeration value="application/x-internett-signup"/>
     <xs:enumeration value="application/x-inventor"/>
     <xs:enumeration value="application/x-ip2"/>
     <xs:enumeration value="application/x-java-class"/>
     <xs:enumeration value="application/x-java-commerce"/>
     <xs:enumeration value="application/x-javascript"/>
     <xs:enumeration value="application/x-koan"/>
     <xs:enumeration value="application/x-ksh"/>
     <xs:enumeration value="application/x-latex"/>
     <xs:enumeration value="application/x-lha"/>
     <xs:enumeration value="application/x-lisp"/>
     <xs:enumeration value="application/x-livescreen"/>
     <xs:enumeration value="application/x-lotus"/>
     <xs:enumeration value="application/x-lotusscreencam"/>
     <xs:enumeration value="application/x-lzh"/>
     <xs:enumeration value="application/x-lzx"/>
     <xs:enumeration value="application/x-mac-binhex40"/>
     <xs:enumeration value="application/x-macbinary"/>
     <xs:enumeration value="application/x-magic-cap-package-1.0"/>
     <xs:enumeration value="application/x-mathcad"/>
     <xs:enumeration value="application/x-meme"/>
     <xs:enumeration value="application/x-midi"/>
     <xs:enumeration value="application/x-mif"/>
     <xs:enumeration value="application/x-mix-transfer"/>
     <xs:enumeration value="application/x-mplayer2"/>
     <xs:enumeration value="application/x-msexcel"/>
     <xs:enumeration value="application/x-mspowerpoint"/>
     <xs:enumeration value="application/x-navi-animation"/>
     <xs:enumeration value="application/x-navidoc"/>
     <xs:enumeration value="application/x-navimap"/>
     <xs:enumeration value="application/x-navistyle"/>
     <xs:enumeration value="application/x-netcdf"/>
     <xs:enumeration value="application/x-netcdf"/>
     <xs:enumeration value="application/x-newton-compatible-pkg"/>
     <xs:enumeration value="application/x-nokia-9000-communicator-add-on-software"/>
     <xs:enumeration value="application/x-omc"/>
     <xs:enumeration value="application/x-omcdatamaker"/>
     <xs:enumeration value="application/x-omcregerator"/>
     <xs:enumeration value="application/x-pagemaker"/>
     <xs:enumeration value="application/x-pcl"/>
     <xs:enumeration value="application/x-pixclscript"/>
     <xs:enumeration value="application/x-pkcs10"/>
     <xs:enumeration value="application/x-pkcs12"/>
     <xs:enumeration value="application/x-pkcs7-certificates"/>
     <xs:enumeration value="application/x-pkcs7-certreqresp"/>
     <xs:enumeration value="application/x-pkcs7-mime"/>
     <xs:enumeration value="application/x-pkcs7-signature"/>
     <xs:enumeration value="application/x-pointplus"/>
     <xs:enumeration value="application/x-portable-anymap"/>
     <xs:enumeration value="application/x-project"/>
     <xs:enumeration value="application/x-qpro"/>
     <xs:enumeration value="application/x-rtf"/>
     <xs:enumeration value="application/x-sdp"/>
     <xs:enumeration value="application/x-sea"/>
     <xs:enumeration value="application/x-seelogo"/>
     <xs:enumeration value="application/x-sh"/>
     <xs:enumeration value="application/x-shar"/>
     <xs:enumeration value="application/x-shockwave-flash"/>
     <xs:enumeration value="application/x-sit"/>
     <xs:enumeration value="application/x-sprite"/>
     <xs:enumeration value="application/x-stuffit"/>
     <xs:enumeration value="application/x-sv4cpio"/>
     <xs:enumeration value="application/x-sv4crc"/>
     <xs:enumeration value="application/x-tar"/>
     <xs:enumeration value="application/x-tbook"/>
     <xs:enumeration value="application/x-tcl"/>
     <xs:enumeration value="application/x-tex"/>
     <xs:enumeration value="application/x-texinfo"/>
     <xs:enumeration value="application/x-troff"/>
     <xs:enumeration value="application/x-troff-man"/>
     <xs:enumeration value="application/x-troff-me"/>
     <xs:enumeration value="application/x-troff-ms"/>
     <xs:enumeration value="application/x-troff-msvideo"/>
     <xs:enumeration value="application/x-ustar"/>
     <xs:enumeration value="application/x-visio"/>
     <xs:enumeration value="application/x-vnd.audioexplosion.mzz"/>
     <xs:enumeration value="application/x-vnd.ls-xpix"/>
     <xs:enumeration value="application/x-vrml"/>
     <xs:enumeration value="application/x-wais-source"/>
     <xs:enumeration value="application/x-winhelp"/>
     <xs:enumeration value="application/x-wintalk"/>
     <xs:enumeration value="application/x-world"/>
     <xs:enumeration value="application/x-wpwin"/>
     <xs:enumeration value="application/x-wri"/>
     <xs:enumeration value="application/x-x509-ca-cert"/>
     <xs:enumeration value="application/x-x509-user-cert"/>
     <xs:enumeration value="application/x-zip-compressed"/>
     <xs:enumeration value="application/xml"/>
     <xs:enumeration value="application/zip"/>
     <xs:enumeration value="audio/aiff"/>
     <xs:enumeration value="audio/basic"/>
     <xs:enumeration value="audio/it"/>
     <xs:enumeration value="audio/make"/>
     <xs:enumeration value="audio/make.my.funk"/>
     <xs:enumeration value="audio/mid"/>
     <xs:enumeration value="audio/midi"/>
     <xs:enumeration value="audio/mod"/>
     <xs:enumeration value="audio/mpeg"/>
     <xs:enumeration value="audio/mpeg3"/>
     <xs:enumeration value="audio/nspaudio"/>
     <xs:enumeration value="audio/s3m"/>
     <xs:enumeration value="audio/tsp-audio"/>
     <xs:enumeration value="audio/tsplayer"/>
     <xs:enumeration value="audio/vnd.qcelp"/>
     <xs:enumeration value="audio/voc"/>
     <xs:enumeration value="audio/voxware"/>
     <xs:enumeration value="audio/wav"/>
     <xs:enumeration value="audio/x-adpcm"/>
     <xs:enumeration value="audio/x-aiff"/>
     <xs:enumeration value="audio/x-au"/>
     <xs:enumeration value="audio/x-gsm"/>
     <xs:enumeration value="audio/x-jam"/>
     <xs:enumeration value="audio/x-liveaudio"/>
     <xs:enumeration value="audio/x-mid"/>
     <xs:enumeration value="audio/x-midi"/>
     <xs:enumeration value="audio/x-mod"/>
     <xs:enumeration value="audio/x-mpeg"/>
     <xs:enumeration value="audio/x-mpeg-3"/>
     <xs:enumeration value="audio/x-mpequrl"/>
     <xs:enumeration value="audio/x-nspaudio"/>
     <xs:enumeration value="audio/x-pn-realaudio"/>
     <xs:enumeration value="audio/x-pn-realaudio-plugin"/>
     <xs:enumeration value="audio/x-psid"/>
     <xs:enumeration value="audio/x-realaudio"/>
     <xs:enumeration value="audio/x-twinvq"/>
     <xs:enumeration value="audio/x-twinvq-plugin"/>
     <xs:enumeration value="audio/x-vnd.audioexplosion.mjuicemediafile"/>
     <xs:enumeration value="audio/x-voc"/>
     <xs:enumeration value="audio/x-wav"/>
     <xs:enumeration value="audio/xm"/>
     <xs:enumeration value="chemical/x-pdb"/>
     <xs:enumeration value="i-world/i-vrml"/>
     <xs:enumeration value="image/bmp"/>
     <xs:enumeration value="image/cmu-raster"/>
     <xs:enumeration value="image/fif"/>
     <xs:enumeration value="image/florian"/>
     <xs:enumeration value="image/g3fax"/>
     <xs:enumeration value="image/gif"/>
     <xs:enumeration value="image/ief"/>
     <xs:enumeration value="image/jpeg"/>
     <xs:enumeration value="image/jutvision"/>
     <xs:enumeration value="image/naplps"/>
     <xs:enumeration value="image/pict"/>
     <xs:enumeration value="image/pjpeg"/>
     <xs:enumeration value="image/png"/>
     <xs:enumeration value="image/tiff"/>
     <xs:enumeration value="image/vasa"/>
     <xs:enumeration value="image/vnd.dwg"/>
     <xs:enumeration value="image/vnd.fpx"/>
     <xs:enumeration value="image/vnd.net-fpx"/>
     <xs:enumeration value="image/vnd.rn-realflash"/>
     <xs:enumeration value="image/vnd.rn-realpix"/>
     <xs:enumeration value="image/vnd.wap.wbmp"/>
     <xs:enumeration value="image/vnd.xiff"/>
     <xs:enumeration value="image/x-cmu-raster"/>
     <xs:enumeration value="image/x-dwg"/>
     <xs:enumeration value="image/x-icon"/>
     <xs:enumeration value="image/x-jg"/>
     <xs:enumeration value="image/x-jps"/>
     <xs:enumeration value="image/x-niff"/>
     <xs:enumeration value="image/x-niff"/>
     <xs:enumeration value="image/x-pcx"/>
     <xs:enumeration value="image/x-pict"/>
     <xs:enumeration value="image/x-portable-anymap"/>
     <xs:enumeration value="image/x-portable-bitmap"/>
     <xs:enumeration value="image/x-portable-greymap"/>
     <xs:enumeration value="image/x-portable-pixmap"/>
     <xs:enumeration value="image/x-quicktime"/>
     <xs:enumeration value="image/x-rgb"/>
     <xs:enumeration value="image/x-tiff"/>
     <xs:enumeration value="image/x-windows-bmp"/>
     <xs:enumeration value="image/x-xbitmap"/>
     <xs:enumeration value="image/x-xbm"/>
     <xs:enumeration value="image/x-xpixmap"/>
     <xs:enumeration value="image/x-xwd"/>
     <xs:enumeration value="image/x-xwindowdump"/>
     <xs:enumeration value="image/xbm"/>
     <xs:enumeration value="image/xpm"/>
     <xs:enumeration value="message/rfc822"/>
     <xs:enumeration value="model/iges"/>
     <xs:enumeration value="model/vnd.dwf"/>
     <xs:enumeration value="model/vrml"/>
     <xs:enumeration value="model/x-pov"/>
     <xs:enumeration value="multipart/x-gzip"/>
     <xs:enumeration value="multipart/x-ustar"/>
     <xs:enumeration value="multipart/x-zip"/>
     <xs:enumeration value="music/crescendo"/>
     <xs:enumeration value="music/x-karaoke"/>
     <xs:enumeration value="paleovu/x-pv"/>
     <xs:enumeration value="text/asp"/>
     <xs:enumeration value="text/css"/>
     <xs:enumeration value="text/html"/>
     <xs:enumeration value="text/mcf"/>
     <xs:enumeration value="text/pascal"/>
     <xs:enumeration value="text/plain"/>
     <xs:enumeration value="text/richtext"/>
     <xs:enumeration value="text/scriplet"/>
     <xs:enumeration value="text/sgml"/>
     <xs:enumeration value="text/tab-separated-values"/>
     <xs:enumeration value="text/uri-list"/>
     <xs:enumeration value="text/vnd.abc"/>
     <xs:enumeration value="text/vnd.fmi.flexstor"/>
     <xs:enumeration value="text/vnd.rn-realtext"/>
     <xs:enumeration value="text/vnd.wap.wml"/>
     <xs:enumeration value="text/vnd.wap.wmlscript"/>
     <xs:enumeration value="text/webviewhtml"/>
     <xs:enumeration value="text/x-asm"/>
     <xs:enumeration value="text/x-audiosoft-intra"/>
     <xs:enumeration value="text/x-c"/>
     <xs:enumeration value="text/x-component"/>
     <xs:enumeration value="text/x-fortran"/>
     <xs:enumeration value="text/x-h"/>
     <xs:enumeration value="text/x-java-source"/>
     <xs:enumeration value="text/x-la-asf"/>
     <xs:enumeration value="text/x-m"/>
     <xs:enumeration value="text/x-pascal"/>
     <xs:enumeration value="text/x-script"/>
     <xs:enumeration value="text/x-script.csh"/>
     <xs:enumeration value="text/x-script.elisp"/>
     <xs:enumeration value="text/x-script.guile"/>
     <xs:enumeration value="text/x-script.ksh"/>
     <xs:enumeration value="text/x-script.lisp"/>
     <xs:enumeration value="text/x-script.perl"/>
     <xs:enumeration value="text/x-script.perl-module"/>
     <xs:enumeration value="text/x-script.phyton"/>
     <xs:enumeration value="text/x-script.rexx"/>
     <xs:enumeration value="text/x-script.scheme"/>
     <xs:enumeration value="text/x-script.sh"/>
     <xs:enumeration value="text/x-script.tcl"/>
     <xs:enumeration value="text/x-script.tcsh"/>
     <xs:enumeration value="text/x-script.zsh"/>
     <xs:enumeration value="text/x-server-parsed-html"/>
     <xs:enumeration value="text/x-setext"/>
     <xs:enumeration value="text/x-sgml"/>
     <xs:enumeration value="text/x-speech"/>
     <xs:enumeration value="text/x-uil"/>
     <xs:enumeration value="text/x-uuencode"/>
     <xs:enumeration value="text/x-vcalendar"/>
     <xs:enumeration value="text/xml"/>
     <xs:enumeration value="video/animaflex"/>
     <xs:enumeration value="video/avi"/>
     <xs:enumeration value="video/avs-video"/>
     <xs:enumeration value="video/dl"/>
     <xs:enumeration value="video/fli"/>
     <xs:enumeration value="video/gl"/>
     <xs:enumeration value="video/mpeg"/>
     <xs:enumeration value="video/msvideo"/>
     <xs:enumeration value="video/quicktime"/>
     <xs:enumeration value="video/vdo"/>
     <xs:enumeration value="video/vivo"/>
     <xs:enumeration value="video/vnd.rn-realvideo"/>
     <xs:enumeration value="video/vnd.vivo"/>
     <xs:enumeration value="video/vosaic"/>
     <xs:enumeration value="video/x-amt-demorun"/>
     <xs:enumeration value="video/x-amt-showrun"/>
     <xs:enumeration value="video/x-atomic3d-feature"/>
     <xs:enumeration value="video/x-dl"/>
     <xs:enumeration value="video/x-dv"/>
     <xs:enumeration value="video/x-dv"/>
     <xs:enumeration value="video/x-fli"/>
     <xs:enumeration value="video/x-gl"/>
     <xs:enumeration value="video/x-isvideo"/>
     <xs:enumeration value="video/x-motion-jpeg"/>
     <xs:enumeration value="video/x-mpeg"/>
     <xs:enumeration value="video/x-mpeq2a"/>
     <xs:enumeration value="video/x-ms-asf"/>
     <xs:enumeration value="video/x-ms-asf-plugin"/>
     <xs:enumeration value="video/x-msvideo"/>
     <xs:enumeration value="video/x-qtc"/>
     <xs:enumeration value="video/x-scm"/>
     <xs:enumeration value="video/x-sgi-movie"/>
     <xs:enumeration value="windows/metafile"/>
     <xs:enumeration value="www/mime"/>
     <xs:enumeration value="x-conference/x-cooltalk"/>
     <xs:enumeration value="x-music/x-midi"/>
     <xs:enumeration value="x-world/x-3dmf"/>
     <xs:enumeration value="x-world/x-svr"/>
     <xs:enumeration value="x-world/x-vrml"/>
     <xs:enumeration value="x-world/x-vrt"/>
     <xs:enumeration value="xgl/drawing"/>
     <xs:enumeration value="xgl/movie"/>
     <xs:enumeration value="other"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
 </xs:attributeGroup>
 <xs:attributeGroup name="imported">
  <xs:annotation>
   <xs:documentation xml:lang="en">This attribute group should be imported into the schema files of
    the respective layers. It consists of the obligatory segment attribute and the optional
    dcrCategory attribute.</xs:documentation>
  </xs:annotation>
  <xs:attribute ref="xsf:segment"/>
  <xs:attribute ref="xsf:dcrCategory" use="optional"/>
 </xs:attributeGroup>
 <!-- Attribute declaration -->
 <xs:attribute name="segment" type="xs:IDREFS"/>
 <xs:attribute name="dcrCategory" type="xs:anyURI">
  <xs:annotation>
   <xs:documentation xml:lang="en">Use this attribute for providing a link to a ISO Data Category
    Registry category (cf. ISO 12620 for details).</xs:documentation>
  </xs:annotation>
 </xs:attribute>
 <xs:attribute name="previousVersionLogEntry" type="xs:IDREF"/>
 <xs:attribute name="creator" type="xs:NMTOKENS">
  <xs:annotation>
   <xs:documentation xml:lang="en">The creator attribute may be used for referring to (non-) human
    agent (e.g. a resource) that was involved in creating an item.</xs:documentation>
  </xs:annotation>
 </xs:attribute>
 <xs:attribute name="affectedItem" type="xs:IDREF"/>
 <xs:attribute name="alt" type="xs:IDREFS">
  <xs:annotation>
   <xs:documentation xml:lang="en">The alt attribute may be used for referring to an alternate
    version, neither in terms of isVersionOf, isBasedOn, isFormatOf or similar relations. The type
    of relation should be specified in the meta data entry of the respective element bearing the alt
    attribute.</xs:documentation>
  </xs:annotation>
 </xs:attribute>
 <!-- complexType declaration -->
 <xs:complexType name="RefType">
  <xs:attributeGroup ref="xsf:ref.attributes"/>
 </xs:complexType>
</xs:schema>

