schema Documentation

Revision History
Revision 0.12010-11-05T08:54:36.595ZDave P
Initial Issue. Created with /files/nvdl/xsl/rng2xweb.xsl
Revision 0.22010-11-05T08:54:36.595ZDave P
Bugfix. CDATA sections and tag attribute

Table of Contents

Start template
Pattern trigger
Pattern mode
Pattern includedMode
Pattern rule
Pattern ruleModel
Pattern elementsOrAttributes
Pattern actions
Pattern cancelAction
Pattern noResultAction
Pattern schema
Pattern message
Pattern resultAction
Pattern option
Pattern modeUsage
Pattern nestedMode
Pattern schemaType
Pattern mediaType
Pattern path
Pattern foreignElement
Pattern anyElement
Pattern foreignAttribute
Pattern foreign

Start template

The root element is identified from this content

Pattern trigger

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="trigger">
         <element name="trigger">
            <attribute name="ns">
               <data type="string"/>
            </attribute>
            <attribute name="nameList">
               <list>
                  <oneOrMore>
                     <data type="NCName"/>
                  </oneOrMore>
               </list>
            </attribute>
         </element>
      </define><element name="trigger">
            <attribute name="ns">
               <data type="string"/>
            </attribute>
            <attribute name="nameList">
               <list>
                  <oneOrMore>
                     <data type="NCName"/>
                  </oneOrMore>
               </list>
            </attribute>
         </element>

Pattern mode

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="mode">
         <element name="mode">
            <attribute name="name">
               <data type="NCName"/>
            </attribute>
            <zeroOrMore>
               <ref name="includedMode"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="rule"/>
            </zeroOrMore>
         </element>
      </define><element name="mode">
            <attribute name="name">
               <data type="NCName"/>
            </attribute>
            <zeroOrMore>
               <ref name="includedMode"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="rule"/>
            </zeroOrMore>
         </element>

Pattern includedMode

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="includedMode">
         <element name="mode">
            <optional>
               <attribute name="name">
                  <data type="NCName"/>
               </attribute>
            </optional>
            <zeroOrMore>
               <ref name="includedMode"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="rule"/>
            </zeroOrMore>
         </element>
      </define><element name="mode">
            <optional>
               <attribute name="name">
                  <data type="NCName"/>
               </attribute>
            </optional>
            <zeroOrMore>
               <ref name="includedMode"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="rule"/>
            </zeroOrMore>
         </element>

Pattern rule

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="rule">
         <choice>
            <element name="namespace">
               <attribute name="ns">
                  <data type="string"/>
               </attribute>
               <optional>
                  <attribute name="wildCard">
                     <data type="string">
                        <param name="maxLength">1</param>
                     </data>
                  </attribute>
               </optional>
               <ref name="ruleModel"/>
            </element>
            <element name="anyNamespace">
               <ref name="ruleModel"/>
            </element>
         </choice>
      </define><choice>
            <element name="namespace">
               <attribute name="ns">
                  <data type="string"/>
               </attribute>
               <optional>
                  <attribute name="wildCard">
                     <data type="string">
                        <param name="maxLength">1</param>
                     </data>
                  </attribute>
               </optional>
               <ref name="ruleModel"/>
            </element>
            <element name="anyNamespace">
               <ref name="ruleModel"/>
            </element>
         </choice>

Pattern ruleModel

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="ruleModel">
         <optional>
            <attribute name="match">
               <ref name="elementsOrAttributes"/>
            </attribute>
         </optional>
         <ref name="actions"/>
      </define><optional>
            <attribute name="match">
               <ref name="elementsOrAttributes"/>
            </attribute>
         </optional><ref name="actions"/>

Pattern elementsOrAttributes

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="elementsOrAttributes">
         <list>
            <choice>
               <group>
                  <value>elements</value>
                  <value>attributes</value>
               </group>
               <group>
                  <value>attributes</value>
                  <value>elements</value>
               </group>
               <value>elements</value>
               <value>attributes</value>
            </choice>
         </list>
      </define><list>
            <choice>
               <group>
                  <value>elements</value>
                  <value>attributes</value>
               </group>
               <group>
                  <value>attributes</value>
                  <value>elements</value>
               </group>
               <value>elements</value>
               <value>attributes</value>
            </choice>
         </list>

Pattern actions

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="actions">
         <choice>
            <ref name="cancelAction"/>
            <group>
               <zeroOrMore>
                  <ref name="noResultAction"/>
               </zeroOrMore>
               <choice>
                  <ref name="noResultAction"/>
                  <ref name="resultAction"/>
               </choice>
               <zeroOrMore>
                  <ref name="noResultAction"/>
               </zeroOrMore>
            </group>
         </choice>
      </define><choice>
            <ref name="cancelAction"/>
            <group>
               <zeroOrMore>
                  <ref name="noResultAction"/>
               </zeroOrMore>
               <choice>
                  <ref name="noResultAction"/>
                  <ref name="resultAction"/>
               </choice>
               <zeroOrMore>
                  <ref name="noResultAction"/>
               </zeroOrMore>
            </group>
         </choice>

Pattern cancelAction

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="cancelAction">
         <element name="cancelNestedActions">
            <empty/>
         </element>
      </define><element name="cancelNestedActions">
            <empty/>
         </element>

Pattern noResultAction

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="noResultAction">
         <choice>
            <element name="validate">
               <optional>
                  <ref name="schemaType"/>
               </optional>
               <zeroOrMore>
                  <choice>
                     <ref name="message"/>
                     <ref name="option"/>
                  </choice>
               </zeroOrMore>
               <ref name="schema"/>
               <ref name="modeUsage"/>
            </element>
            <element>
               <choice>
                  <name>allow</name>
                  <name>reject</name>
               </choice>
               <zeroOrMore>
                  <ref name="message"/>
               </zeroOrMore>
               <ref name="modeUsage"/>
            </element>
         </choice>
      </define><choice>
            <element name="validate">
               <optional>
                  <ref name="schemaType"/>
               </optional>
               <zeroOrMore>
                  <choice>
                     <ref name="message"/>
                     <ref name="option"/>
                  </choice>
               </zeroOrMore>
               <ref name="schema"/>
               <ref name="modeUsage"/>
            </element>
            <element>
               <choice>
                  <name>allow</name>
                  <name>reject</name>
               </choice>
               <zeroOrMore>
                  <ref name="message"/>
               </zeroOrMore>
               <ref name="modeUsage"/>
            </element>
         </choice>

Pattern schema

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="schema">
         <choice>
            <attribute name="schema">
               <data type="anyURI"/>
            </attribute>
            <element name="schema">
               <choice>
                  <text/>
                  <ref name="foreignElement"/>
               </choice>
            </element>
         </choice>
      </define><choice>
            <attribute name="schema">
               <data type="anyURI"/>
            </attribute>
            <element name="schema">
               <choice>
                  <text/>
                  <ref name="foreignElement"/>
               </choice>
            </element>
         </choice>

Pattern message

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="message">
         <choice>
            <attribute name="message"/>
            <element name="message">
               <interleave>
                  <text/>
                  <optional>
                     <attribute name="xml:lang"/>
                  </optional>
               </interleave>
            </element>
         </choice>
      </define><choice>
            <attribute name="message"/>
            <element name="message">
               <interleave>
                  <text/>
                  <optional>
                     <attribute name="xml:lang"/>
                  </optional>
               </interleave>
            </element>
         </choice>

Pattern resultAction

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="resultAction">
         <element>
            <choice>
               <name>attach</name>
               <name>attachPlaceholder</name>
               <name>unwrap</name>
            </choice>
            <zeroOrMore>
               <ref name="message"/>
            </zeroOrMore>
            <ref name="modeUsage"/>
         </element>
      </define><element>
            <choice>
               <name>attach</name>
               <name>attachPlaceholder</name>
               <name>unwrap</name>
            </choice>
            <zeroOrMore>
               <ref name="message"/>
            </zeroOrMore>
            <ref name="modeUsage"/>
         </element>

Pattern option

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="option">
         <element name="option">
            <attribute name="name">
               <data type="anyURI"/>
            </attribute>
            <optional>
               <attribute name="arg"/>
            </optional>
            <optional>
               <attribute name="mustSupport">
                  <data type="boolean"/>
               </attribute>
            </optional>
         </element>
      </define><element name="option">
            <attribute name="name">
               <data type="anyURI"/>
            </attribute>
            <optional>
               <attribute name="arg"/>
            </optional>
            <optional>
               <attribute name="mustSupport">
                  <data type="boolean"/>
               </attribute>
            </optional>
         </element>

Pattern modeUsage

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="modeUsage">
         <optional>
            <choice>
               <attribute name="useMode">
                  <data type="NCName"/>
               </attribute>
               <ref name="nestedMode"/>
            </choice>
         </optional>
         <zeroOrMore>
            <element name="context">
               <attribute name="path">
                  <ref name="path"/>
               </attribute>
               <optional>
                  <choice>
                     <attribute name="useMode">
                        <data type="NCName"/>
                     </attribute>
                     <ref name="nestedMode"/>
                  </choice>
               </optional>
            </element>
         </zeroOrMore>
      </define><optional>
            <choice>
               <attribute name="useMode">
                  <data type="NCName"/>
               </attribute>
               <ref name="nestedMode"/>
            </choice>
         </optional><zeroOrMore>
            <element name="context">
               <attribute name="path">
                  <ref name="path"/>
               </attribute>
               <optional>
                  <choice>
                     <attribute name="useMode">
                        <data type="NCName"/>
                     </attribute>
                     <ref name="nestedMode"/>
                  </choice>
               </optional>
            </element>
         </zeroOrMore>

Pattern nestedMode

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="nestedMode">
         <element name="mode">
            <zeroOrMore>
               <ref name="includedMode"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="rule"/>
            </zeroOrMore>
         </element>
      </define><element name="mode">
            <zeroOrMore>
               <ref name="includedMode"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="rule"/>
            </zeroOrMore>
         </element>

Pattern schemaType

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="schemaType">
         <attribute name="schemaType">
            <ref name="mediaType"/>
         </attribute>
      </define><attribute name="schemaType">
            <ref name="mediaType"/>
         </attribute>

Pattern mediaType

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="mediaType">
         
<!--5.1 of RFC 2045 allows <any (US-ASCII) CHAR except SPACE, CTLs, 
or tspecials>, where

    tspecials :=  "(" / ")" / "<" / ">" / "@" /
                  "," / ";" / ":" / "\" / <">
                  "/" / "[" / "]" / "?" / "="
-->
         <data type="string">
            <param name="pattern">\s*[0-9A-Za-z!#$%&amp;'\*\+\-\.\^_`\{\|\}~]*/[0-9A-Za-z!#$%&amp;'\*\+\-\.\^_`\{\|\}~]*\s*</param>
         </data>
      </define>
<!--5.1 of RFC 2045 allows <any (US-ASCII) CHAR except SPACE, CTLs, 
or tspecials>, where

    tspecials :=  "(" / ")" / "<" / ">" / "@" /
                  "," / ";" / ":" / "\" / <">
                  "/" / "[" / "]" / "?" / "="
--><data type="string">
            <param name="pattern">\s*[0-9A-Za-z!#$%&amp;'\*\+\-\.\^_`\{\|\}~]*/[0-9A-Za-z!#$%&amp;'\*\+\-\.\^_`\{\|\}~]*\s*</param>
         </data>

Pattern path

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="path">
         <data type="string">
            <param name="pattern">\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*(\|\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*)*</param>
         </data>
      </define><data type="string">
            <param name="pattern">\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*(\|\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*)*</param>
         </data>

Pattern foreignElement

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="foreignElement">
         <element>
            <anyName>
               <except>
                  <nsName/>
               </except>
            </anyName>
            <zeroOrMore>
               <attribute>
                  <anyName/>
               </attribute>
            </zeroOrMore>
            <mixed>
               <zeroOrMore>
                  <ref name="anyElement"/>
               </zeroOrMore>
            </mixed>
         </element>
      </define><element>
            <anyName>
               <except>
                  <nsName/>
               </except>
            </anyName>
            <zeroOrMore>
               <attribute>
                  <anyName/>
               </attribute>
            </zeroOrMore>
            <mixed>
               <zeroOrMore>
                  <ref name="anyElement"/>
               </zeroOrMore>
            </mixed>
         </element>

Pattern anyElement

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="anyElement">
         <element>
            <anyName/>
            <zeroOrMore>
               <attribute>
                  <anyName/>
               </attribute>
            </zeroOrMore>
            <mixed>
               <zeroOrMore>
                  <ref name="anyElement"/>
               </zeroOrMore>
            </mixed>
         </element>
      </define><element>
            <anyName/>
            <zeroOrMore>
               <attribute>
                  <anyName/>
               </attribute>
            </zeroOrMore>
            <mixed>
               <zeroOrMore>
                  <ref name="anyElement"/>
               </zeroOrMore>
            </mixed>
         </element>

Pattern foreignAttribute

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="foreignAttribute">
         <attribute>
            <anyName>
               <except>
                  <nsName/>
                  <nsName ns=""/>
               </except>
            </anyName>
         </attribute>
      </define><attribute>
            <anyName>
               <except>
                  <nsName/>
                  <nsName ns=""/>
               </except>
            </anyName>
         </attribute>

Pattern foreign

<define xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="foreign">
         <zeroOrMore>
            <ref name="foreignAttribute"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="foreignElement"/>
         </zeroOrMore>
      </define><zeroOrMore>
            <ref name="foreignAttribute"/>
         </zeroOrMore><zeroOrMore>
            <ref name="foreignElement"/>
         </zeroOrMore>