<?xml version="1.0" encoding="UTF-8"?>
<!--
  
  RELAX NG Compact Schema for DAWG Variable Bindings result
  
  This schema is experimental and may change at any time.
  
  Dave Beckett 2004-09-28
  
  The RELAX NG Compact Syntax is described at
    http://www.oasis-open.org/committees/relax-ng/compact-20020607.html
  and RELAX NG at
    http://relaxng.org/
  
-->
<grammar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:res="http://www.w3.org/sw/2001/DataAccess/result2#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="">
  <start>
    <ref name="results"/>
  </start>
  <define name="xmllang">
    <attribute name="xml:lang"/>
  </define>
  <!-- xmlbase = attribute xml:base { text } -->
  <define name="results">
    <element name="res:results">
      <optional>
        <ref name="xmllang"/>
      </optional>
      <optional>
        <ref name="schemaLoc"/>
      </optional>
      <zeroOrMore>
        <ref name="result"/>
      </zeroOrMore>
    </element>
  </define>
  <!-- Actually value is a whitespace-separated pair of namespace / XSD location -->
  <define name="schemaLoc">
    <attribute name="xsi:schemaLocation">
      <data type="string"/>
    </attribute>
  </define>
  <define name="result">
    <element name="res:result">
      <optional>
        <ref name="xmllang"/>
      </optional>
      <zeroOrMore>
        <ref name="var"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="var">
    <element name="res:var">
      <optional>
        <ref name="xmllang"/>
      </optional>
      <optional>
        <ref name="nameAttr"/>
      </optional>
      <optional>
        <ref name="hrefAttr"/>
      </optional>
      <optional>
        <ref name="datatypeAttr"/>
      </optional>
      <ref name="literal"/>
    </element>
  </define>
  <define name="nameAttr">
    <attribute name="name">
      <data type="string"/>
    </attribute>
  </define>
  <define name="hrefAttr">
    <attribute name="href">
      <ref name="URI-reference"/>
    </attribute>
  </define>
  <define name="datatypeAttr">
    <attribute name="datatype">
      <ref name="URI-reference"/>
    </attribute>
  </define>
  <define name="URI-reference">
    <data type="string"/>
  </define>
  <!-- xsd:anyURI -->
  <define name="literal">
    <data type="string"/>
  </define>
</grammar>
