Appendix C: The Xlinks Schema (Normative)

At the time that GML 2.0 was finalised, the World Wide Web Consortium (W3C) had not produced a normative schema to support its XLink recommendation. As an interim measure, this schema has been produced by the editors of GML 2.0 to provide the XLink attributes for general use; pending the provision of a definitive schema by the W3C, this schema shall be considered a normative component of GML 2.0.

<?xml version="1.0" encoding="UTF-8"?>
<!-- File: xlinks.xsd  -->
<schema targetNamespace="http://www.w3.org/1999/xlink"
        xmlns="http://www.w3.org/2000/10/XMLSchema"
        xmlns:xlink="http://www.w3.org/1999/xlink"
        version="2.01">

  <annotation>
    <appinfo>xlinks.xsd v2.01 2001-02</appinfo>
    <documentation xml:lang="en">
      This schema provides the XLink attributes for general use.
  </documentation>
  </annotation>

  <!-- ==============================================================
       global declarations
  =============================================================== -->

  <!-- locator attribute -->
  <attribute name="href" type="uriReference" />

  <!-- semantic attributes -->
  <attribute name="role" type="uriReference" />
  <attribute name="arcrole" type="uriReference" />
  <attribute name="title" type="string" />

  <!-- behavior attributes -->
  <attribute name="show">
    <annotation>
      <documentation>
        The 'show' attribute is used to communicate the desired
        presentation of the ending resource on traversal from the
        starting resource; it's value should be treated as follows:
        new - load ending resource in a new window, frame, pane, or
              other presentation context
        replace - load the resource in the same window, frame, pane,
                  or other presentation context
        embed - load ending resource in place of the presentation of
                the starting resource
        other - behavior is unconstrained; examine other markup in the
                link for hints
        none - behavior is unconstrained
      </documentation>
    </annotation>
    <simpleType>
      <restriction base="string">
        <enumeration value="new"/>
        <enumeration value="replace"/>
        <enumeration value="embed"/>
        <enumeration value="other"/>
        <enumeration value="none"/>
      </restriction>
    </simpleType>
  </attribute>

  <attribute name="actuate">
    <annotation>
      <documentation>
        The 'actuate' attribute is used to communicate the desired
        timing of traversal from the starting resource to the ending
        resource; it's value should be treated as follows:
        onLoad - traverse to the ending resource immediately on
                 loading the starting resource
        onRequest - traverse from the starting resource to the ending
                    resource only on a post-loading event triggered
                    for this purpose
        other - behavior is unconstrained; examine other markup in
                link for hints
        none - behavior is unconstrained
      </documentation>
    </annotation>
    <simpleType>
      <restriction base="string">
        <enumeration value="onLoad"/>
        <enumeration value="onRequest"/>
        <enumeration value="other"/>
        <enumeration value="none"/>
      </restriction>
    </simpleType>
  </attribute>

  <!-- traversal attributes -->
  <attribute name="label" type="string" />
  <attribute name="from" type="string" />
  <attribute name="to" type="string" />

  <!-- ==============================================================
       Attributes grouped by XLink type, as specified in the W3C
       Proposed Recommendation (dated 2000-12-20)
  =============================================================== -->

  <attributeGroup name="simpleLink">
    <attribute name="type" type="string" use="fixed" value="simple"
      form="qualified"/>
    <attribute ref="xlink:href" use="optional"/>
    <attribute ref="xlink:role" use="optional"/>
    <attribute ref="xlink:arcrole" use="optional"/>
    <attribute ref="xlink:title" use="optional"/>
    <attribute ref="xlink:show" use="optional"/>
    <attribute ref="xlink:actuate" use="optional"/>
  </attributeGroup>

  <attributeGroup name="extendedLink">
    <attribute name="type" type="string" use="fixed" value="extended"
      form="qualified"/>
    <attribute ref="xlink:role" use="optional"/>
    <attribute ref="xlink:title" use="optional"/>
  </attributeGroup>

  <attributeGroup name="locatorLink">
    <attribute name="type" type="string" use="fixed" value="locator"
      form="qualified"/>
    <attribute ref="xlink:href" use="required"/>
    <attribute ref="xlink:role" use="optional"/>
    <attribute ref="xlink:title" use="optional"/>
    <attribute ref="xlink:label" use="optional"/>
  </attributeGroup>

  <attributeGroup name="arcLink">
    <attribute name="type" type="string" use="fixed" value="arc"
      form="qualified"/>
    <attribute ref="xlink:arcrole" use="optional"/>
    <attribute ref="xlink:title" use="optional"/>
    <attribute ref="xlink:show" use="optional"/>
    <attribute ref="xlink:actuate" use="optional"/>
    <attribute ref="xlink:from" use="optional"/>
    <attribute ref="xlink:to" use="optional"/>
  </attributeGroup>

  <attributeGroup name="resourceLink">
    <attribute name="type" type="string" use="fixed" value="resource"
      form="qualified"/>
    <attribute ref="xlink:role" use="optional"/>
    <attribute ref="xlink:title" use="optional"/>
    <attribute ref="xlink:label" use="optional"/>
  </attributeGroup>

  <attributeGroup name="titleLink">
    <attribute name="type" type="string" use="fixed" value="title"
      form="qualified"/>
  </attributeGroup>

  <attributeGroup name="emptyLink">
    <attribute name="type" type="string" use="fixed" value="none"
      form="qualified"/>
    </attributeGroup>
</schema>