blob: 07eccc87b9ef03bcee40ba2562acc704db41b8e8 [file] [log] [blame]
<!--***********************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
***********************************************************-->
<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://relaxng.org/ns/structure/1.0"
xmlns:rng="http://relaxng.org/ns/structure/1.0"
xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<ref name="pattern"/>
</start>
<define name="pattern">
<choice>
<element name="element">
<choice>
<attribute name="name">
<data type="QName"/>
</attribute>
<ref name="open-name-class"/>
</choice>
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="attribute">
<ref name="common-atts"/>
<choice>
<attribute name="name">
<data type="QName"/>
</attribute>
<ref name="open-name-class"/>
</choice>
<interleave>
<ref name="other"/>
<optional>
<ref name="pattern"/>
</optional>
</interleave>
</element>
<element name="group">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="interleave">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="choice">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="optional">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="zeroOrMore">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="oneOrMore">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="list">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="mixed">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="ref">
<attribute name="name">
<data type="NCName"/>
</attribute>
<ref name="common-atts"/>
</element>
<element name="parentRef">
<attribute name="name">
<data type="NCName"/>
</attribute>
<ref name="common-atts"/>
</element>
<element name="empty">
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="text">
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="value">
<optional>
<attribute name="type">
<data type="NCName"/>
</attribute>
</optional>
<ref name="common-atts"/>
<text/>
</element>
<element name="data">
<attribute name="type">
<data type="NCName"/>
</attribute>
<ref name="common-atts"/>
<interleave>
<ref name="other"/>
<group>
<zeroOrMore>
<element name="param">
<attribute name="name">
<data type="NCName"/>
</attribute>
<text/>
</element>
</zeroOrMore>
<optional>
<element name="except">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
</optional>
</group>
</interleave>
</element>
<element name="notAllowed">
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="externalRef">
<attribute name="href">
<data type="anyURI"/>
</attribute>
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="grammar">
<ref name="common-atts"/>
<ref name="grammar-content"/>
</element>
</choice>
</define>
<define name="grammar-content">
<interleave>
<ref name="other"/>
<zeroOrMore>
<choice>
<ref name="start-element"/>
<ref name="define-element"/>
<element name="div">
<ref name="common-atts"/>
<ref name="grammar-content"/>
</element>
<element name="include">
<attribute name="href">
<data type="anyURI"/>
</attribute>
<ref name="common-atts"/>
<ref name="include-content"/>
</element>
</choice>
</zeroOrMore>
</interleave>
</define>
<define name="include-content">
<interleave>
<ref name="other"/>
<zeroOrMore>
<choice>
<ref name="start-element"/>
<ref name="define-element"/>
<element name="div">
<ref name="common-atts"/>
<ref name="include-content"/>
</element>
</choice>
</zeroOrMore>
</interleave>
</define>
<define name="start-element">
<element name="start">
<ref name="combine-att"/>
<ref name="common-atts"/>
<ref name="open-pattern"/>
</element>
</define>
<define name="define-element">
<element name="define">
<attribute name="name">
<data type="NCName"/>
</attribute>
<ref name="combine-att"/>
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
</define>
<define name="combine-att">
<optional>
<attribute name="combine">
<choice>
<value>choice</value>
<value>interleave</value>
</choice>
</attribute>
</optional>
</define>
<define name="open-patterns">
<interleave>
<ref name="other"/>
<oneOrMore>
<ref name="pattern"/>
</oneOrMore>
</interleave>
</define>
<define name="open-pattern">
<interleave>
<ref name="other"/>
<ref name="pattern"/>
</interleave>
</define>
<define name="name-class">
<choice>
<element name="name">
<ref name="common-atts"/>
<data type="QName"/>
</element>
<element name="anyName">
<ref name="common-atts"/>
<ref name="except-name-class"/>
</element>
<element name="nsName">
<ref name="common-atts"/>
<ref name="except-name-class"/>
</element>
<element name="choice">
<ref name="common-atts"/>
<ref name="open-name-classes"/>
</element>
</choice>
</define>
<define name="except-name-class">
<interleave>
<ref name="other"/>
<optional>
<element name="except">
<ref name="open-name-classes"/>
</element>
</optional>
</interleave>
</define>
<define name="open-name-classes">
<interleave>
<ref name="other"/>
<oneOrMore>
<ref name="name-class"/>
</oneOrMore>
</interleave>
</define>
<define name="open-name-class">
<interleave>
<ref name="other"/>
<ref name="name-class"/>
</interleave>
</define>
<define name="common-atts">
<optional>
<attribute name="ns"/>
</optional>
<optional>
<attribute name="datatypeLibrary">
<data type="anyURI"/>
</attribute>
</optional>
<zeroOrMore>
<attribute>
<anyName>
<except>
<nsName/>
<nsName ns=""/>
</except>
</anyName>
</attribute>
</zeroOrMore>
</define>
<define name="other">
<zeroOrMore>
<element>
<anyName>
<except>
<nsName/>
</except>
</anyName>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="any"/>
</choice>
</zeroOrMore>
</element>
</zeroOrMore>
</define>
<define name="any">
<element>
<anyName/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="any"/>
</choice>
</zeroOrMore>
</element>
</define>
</grammar>