Newer
Older
ade-outils-xml / dtd / Wileyml3gv20-rng / Wileyml3g-core.rng
@niederle niederle on 29 Dec 2015 46 KB 1er commit
<?xml version="1.0" encoding="UTF-8"?>
<!--
  =============================================================================================
  WileyML 3G
  
  A model for the content of John Wiley & Sons. 
  
  This file conforms to ISO/IEC 19757-2:2003 AMENDMENT 1 (RELAX NG Compact Syntax). The
  collection of these files normatively defines the XML grammar for WileyNG instances.
  
  Copyright (c) 2011 John Wiley & Sons Inc. All rights reserved worldwide.
  
  $Id: Wileyml3g-core.rnc,v 1.73 2012/11/7 11:01:28 johnp Exp $
  =============================================================================================
-->
<grammar xmlns:cms="http://cms.wiley.com" xmlns:wng="http://www.wiley.com/namespaces/wiley" xmlns:aux="http://www.wiley.com/namespaces/wiley/aux" xmlns="http://relaxng.org/ns/structure/1.0">
  <!--
    Correction, Nov 2012
      1. <p>: added optional @label
  -->
  <!--
    Changes for v2.0 (Aug 2011)
      1. <region>: new element
      2. <mediaResource>: added new element <region>
      3. <displayedItem>: changed model to replace link? by link*, note*
      4. <figure>: added link*, note* to end of model
      5. <caption>: added <figure>, <tabular>, and <feature> to model
      6. <section>: added optional @numbered="yes|no"
      7. <source>: added <email> to model
      8. <figure>: made <mediaResourceGroup> repeatable
      9. <termGroup>: new element
     10. <term>: removed @displayForm
     11. <termDefinition>: added <termGroup>
     12. <infoAsset>: added <infoAsset> (for substrings)
  -->
  <!--
    Correction, Dec 7, 2010
      1. <term>: attribute cms:definitionOfRef changed to cms:definitionRef
    
    Changes for v1.0.3 (Aug 2010):
      1. <record>: added @numbered, @resumeNumberingAt, <label>
      2. <title>: added @href, @entryPoint
      3. <figurePart>: removed @resumeNumberingAt
      4. <feature>: added @sectional
      5. <source>: added <citation> to model
      6. <feature>: added <exerciseSection> parallel to <section>
      7. <figure>: changed model to have <caption> as direct child
      8. <figure>: changed model to have mediaResourceGroup as alternate 
                    for mediaResource
      9. <displayedItem>, <chemicalStructure>: changed @repeatOf to @repeatOfRef
     10. <featureFixed>: made title | titleGroup required because of GR60
     11. <section>: added <definitionListGenerated> parallel to <bibliography> etc.
  -->
  <!--
    Changes for v1.0.1 (Sep 2009):
      1. added <url> to model for <source>
      2. added @entryPoint to mediaResource, link
      3. added b,i,span to accessionId
  -->
  <!--
    =============================================================================================
    accessionId
    =============================================================================================
  -->
  <define name="wng.accessionId.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <attribute name="ref">
          <aux:desc>a URI or IRI identifying the scheme of the ID and providing the id itself</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.accessionId">
    <element>
      <name>wng:accessionId</name>
      <aux:desc aux:cat="inline">An accession key that can be used to access a record in a database (e.g., GenBank, PubMed).</aux:desc>
      <ref name="wng.accessionId.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="wng.b"/>
          <ref name="wng.i"/>
          <ref name="wng.span"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    block element
    =============================================================================================
  -->
  <define name="wng.block.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <ref name="pattern.type.attribute"/>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <ref name="pattern.rights.attributes"/>
    </interleave>
  </define>
  <define name="wng.block">
    <element name="wng:block">
      <aux:desc aux:cat="block">A generic element for one of five types of out-of-flow (floating) objects. The type of block is specified in the type attribute.</aux:desc>
      <ref name="wng.block.attlist"/>
      <optional>
        <ref name="pattern.model.fragment.titling"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="wng.p"/>
        </oneOrMore>
        <choice>
          <ref name="wng.mediaResource"/>
          <oneOrMore>
            <ref name="wng.mediaResourceGroup"/>
          </oneOrMore>
        </choice>
        <oneOrMore>
          <ref name="wng.lineatedText"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="wng.section"/>
        </oneOrMore>
      </choice>
      <optional>
        <ref name="wng.caption"/>
      </optional>
      <optional>
        <ref name="wng.source"/>
      </optional>
    </element>
  </define>
  <!--
    =============================================================================================
    blockFixed element
    =============================================================================================
  -->
  <define name="wng.blockFixed.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <ref name="pattern.type.attribute"/>
      <ref name="pattern.rights.attributes"/>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.blockFixed">
    <element name="wng:blockFixed">
      <aux:desc aux:cat="block">A generic element for several kinds of in-flow (fixed) objects. The type of blockFixed is specified in the type attribute.</aux:desc>
      <ref name="wng.blockFixed.attlist"/>
      <optional>
        <!--  wng.label?, -->
        <ref name="pattern.model.fragment.titling"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="wng.p"/>
        </oneOrMore>
        <choice>
          <ref name="wng.mediaResource"/>
          <oneOrMore>
            <ref name="wng.mediaResourceGroup"/>
          </oneOrMore>
        </choice>
        <oneOrMore>
          <ref name="wng.lineatedText"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="wng.section"/>
        </oneOrMore>
      </choice>
      <optional>
        <ref name="wng.caption"/>
      </optional>
      <optional>
        <ref name="wng.source"/>
      </optional>
    </element>
  </define>
  <!--
    =============================================================================================
    caption element
    =============================================================================================
  -->
  <define name="wng.caption.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.caption">
    <element>
      <name>wng:caption</name>
      <aux:desc aux:cat="block">A caption for a figure or other displayed block or supporting information item.</aux:desc>
      <ref name="wng.caption.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.model.fragment.para.model"/>
          <ref name="wng.source"/>
          <ref name="wng.p"/>
          <ref name="wng.figure"/>
          <ref name="wng.tabular"/>
          <ref name="wng.feature"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    chemicalStructure element
    =============================================================================================
  -->
  <define name="wng.chemicalStructure.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.id.attribute"/>
      <optional>
        <attribute name="numbered">
          <aux:desc>whether this chemical structure is numbered (default value is yes)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="repeatOfRef">
          <aux:desc>URI for the original displayed structure of which this is a repeat</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="cms:repeatOfRef">
          <aux:desc>!suppress!</aux:desc>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
      <optional>
        <attribute name="graphicIsNumbered">
          <aux:desc>whether the contained image has a number as part of its picture (default value is no)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.chemicalStructure">
    <element name="wng:chemicalStructure">
      <aux:desc aux:cat="core">A single displayed chemical structure.</aux:desc>
      <ref name="wng.chemicalStructure.attlist"/>
      <group>
        <optional>
          <ref name="wng.label"/>
        </optional>
        <choice>
          <ref name="math"/>
          <oneOrMore>
            <ref name="wng.p"/>
          </oneOrMore>
          <ref name="wng.mediaResource"/>
          <ref name="wng.mediaResourceGroup"/>
        </choice>
        <optional>
          <ref name="wng.caption"/>
        </optional>
        <optional>
          <ref name="wng.link"/>
        </optional>
      </group>
    </element>
  </define>
  <!--
    =============================================================================================
    computerCode element
    =============================================================================================
  -->
  <define name="wng.computerCode.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <attribute name="monospace">
          <aux:desc>whether the content should be monospaced (default is 'yes')</aux:desc>
          <choice>
            <value>yes</value>
            <value>no</value>
          </choice>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.computerCode">
    <element name="wng:computerCode">
      <aux:desc aux:cat="block">A portion of computer code (or pseudo-code).</aux:desc>
      <ref name="wng.computerCode.attlist"/>
      <optional>
        <ref name="pattern.model.fragment.titling"/>
      </optional>
      <oneOrMore>
        <ref name="wng.lineatedText"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    data
    =============================================================================================
  -->
  <define name="wng.data.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.data">
    <element>
      <name>wng:data</name>
      <aux:desc aux:cat="block">The data of a <xref xmlns="" linkend="wng_mediaResource"/>
+++. This might consist of SVG, CML, TeX/LaTeX (for legacy products), or any other resource type permitted by Wiley.</aux:desc>
      <ref name="wng.data.attlist"/>
      <text/>
    </element>
  </define>
  <!--
    =============================================================================================
    displayedItem element
    =============================================================================================
  -->
  <define name="wng.displayedItem.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.id.attribute"/>
      <ref name="pattern.type.attribute"/>
      <optional>
        <attribute name="numbered">
          <aux:desc>whether this item is numbered (default value is yes)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="repeatOfRef">
          <aux:desc>URI for the original displayed equation of which this is a repeat</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="cms:repeatOfRef">
          <aux:desc>!suppress!</aux:desc>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
      <optional>
        <attribute name="extraLabel">
          <aux:desc>additional labeling text</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.displayedItem">
    <element name="wng:displayedItem">
      <aux:desc aux:cat="equation">A displayed and usually numbered mathematical equation, chemical reaction, or similarly treated piece of text.</aux:desc>
      <ref name="wng.displayedItem.attlist"/>
      <group>
        <optional>
          <ref name="wng.label"/>
        </optional>
        <choice>
          <ref name="math"/>
          <oneOrMore>
            <ref name="wng.p"/>
          </oneOrMore>
          <ref name="wng.mediaResource"/>
          <ref name="wng.mediaResourceGroup"/>
        </choice>
        <zeroOrMore>
          <ref name="wng.link"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="wng.note"/>
        </zeroOrMore>
      </group>
    </element>
  </define>
  <!--
    =============================================================================================
    feature element
    =============================================================================================
  -->
  <define name="wng.feature.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <attribute name="numbered">
          <aux:desc>whether this feature is numbered (default is yes)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <ref name="pattern.rights.attributes"/>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
      <optional>
        <attribute name="sectional">
          <aux:desc>Is this feature at the level of a section? (default is 'no')</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="category">
          <aux:desc>Categorization used by PD</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.feature">
    <element name="wng:feature">
      <aux:desc aux:cat="block">A (floating) feature.</aux:desc>
      <ref name="wng.feature.attlist"/>
      <optional>
        <ref name="wng.label"/>
      </optional>
      <ref name="pattern.model.fragment.titling"/>
      <oneOrMore>
        <choice>
          <ref name="wng.section"/>
          <ref name="wng.exerciseSection"/>
          <ref name="wng.bibliography"/>
          <ref name="wng.noteGroup"/>
        </choice>
      </oneOrMore>
      <optional>
        <ref name="wng.source"/>
      </optional>
    </element>
  </define>
  <!--
    =============================================================================================
    featureFixed element
    =============================================================================================
  -->
  <define name="wng.featureFixed.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <attribute name="category">
          <aux:desc>Categorization used by PD</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.featureFixed">
    <element name="wng:featureFixed">
      <aux:desc aux:cat="block">A feature that is part of the flow of the main text and must remain in place for the text to make sense.</aux:desc>
      <ref name="wng.featureFixed.attlist"/>
      <ref name="pattern.model.fragment.titling"/>
      <oneOrMore>
        <ref name="wng.p"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    field element
    =============================================================================================
  -->
  <define name="wng.field.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <attribute name="name">
        <aux:desc>The field name</aux:desc>
      </attribute>
      <optional>
        <attribute name="optional">
          <aux:desc>Whether this field is optional for presentation (default is 'yes')</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.field">
    <element name="wng:field">
      <aux:desc aux:cat="block">One of the pieces of information held in a <xref xmlns="" linkend="wng_record"/>
+++.</aux:desc>
      <ref name="wng.field.attlist"/>
      <ref name="pattern.para.or.paras"/>
    </element>
  </define>
  <!--
    =============================================================================================
    figure element
    =============================================================================================
  -->
  <define name="wng.figure.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.id.attribute"/>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.figure">
    <element name="wng:figure">
      <aux:desc aux:cat="block">A figure or other image-based floating figure-like object, typically numbered.</aux:desc>
      <ref name="wng.figure.attlist"/>
      <optional>
        <ref name="wng.label"/>
      </optional>
      <optional>
        <ref name="pattern.model.fragment.titling"/>
      </optional>
      <choice>
        <group>
          <ref name="wng.figurePart"/>
          <oneOrMore>
            <ref name="wng.figurePart"/>
          </oneOrMore>
        </group>
        <choice>
          <ref name="wng.mediaResource"/>
          <oneOrMore>
            <ref name="wng.mediaResourceGroup"/>
          </oneOrMore>
        </choice>
        <oneOrMore>
          <choice>
            <ref name="wng.p"/>
            <ref name="wng.section"/>
          </choice>
        </oneOrMore>
      </choice>
      <optional>
        <ref name="wng.caption"/>
      </optional>
      <zeroOrMore>
        <ref name="wng.link"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="wng.note"/>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    figurePart element
    =============================================================================================
  -->
  <define name="wng.figurePart.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.figurePart">
    <element name="wng:figurePart">
      <aux:desc aux:cat="block">A constituent part of a multi-file figure where each part has a separate caption.</aux:desc>
      <ref name="wng.figurePart.attlist"/>
      <optional>
        <ref name="pattern.model.fragment.titling"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="wng.mediaResource"/>
          <choice>
            <ref name="wng.p"/>
            <ref name="wng.mediaResourceGroup"/>
            <ref name="wng.section"/>
          </choice>
        </choice>
      </oneOrMore>
      <optional>
        <ref name="wng.caption"/>
      </optional>
    </element>
  </define>
  <!--
    =============================================================================================
    infoAsset
    =============================================================================================
  -->
  <define name="wng.infoAsset.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.type.attribute"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.infoAsset">
    <element>
      <name>wng:infoAsset</name>
      <aux:desc aux:cat="inline">An item of text with semantic significance, such as a protein name, chemical name, brand name, etc.</aux:desc>
      <ref name="wng.infoAsset.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.formatting"/>
          <ref name="wng.accessionId"/>
          <ref name="wng.infoAsset"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    inlineGraphic
    =============================================================================================
  -->
  <define name="wng.inlineGraphic.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <attribute name="href">
        <aux:desc>a URI or IRI reference for the resource</aux:desc>
      </attribute>
      <optional>
        <attribute name="location">
          <aux:desc>an explicit path for the resource</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="extraInfo">
          <aux:desc>extra information concerning the resource, such as its availability</aux:desc>
        </attribute>
      </optional>
      <attribute name="alt">
        <aux:desc>an alternative description for accessibility requirements</aux:desc>
      </attribute>
      <optional>
        <attribute name="width">
          <aux:desc>resource width</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="height">
          <aux:desc>resource height</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.inlineGraphic">
    <element>
      <name>wng:inlineGraphic</name>
      <aux:desc aux:cat="inline">A small graphic in line with the text, not set off from it.</aux:desc>
      <ref name="wng.inlineGraphic.attlist"/>
      <empty/>
    </element>
  </define>
  <!--
    =============================================================================================
    line
    =============================================================================================
  -->
  <define name="wng.line.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.type.attribute"/>
      </optional>
      <optional>
        <attribute name="countLine">
          <aux:desc>whether this line counts towards the numbering scheme (default value is yes)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="displayNumber">
          <aux:desc>whether the line number of this line should be displayed (default is yes)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="indentLevel">
          <aux:desc>indentation level</aux:desc>
          <choice>
            <value>1</value>
            <value>2</value>
            <value>3</value>
            <value>4</value>
            <value>5</value>
            <value>flushRight</value>
          </choice>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.line">
    <element>
      <name>wng:line</name>
      <aux:desc aux:cat="block">In <xref xmlns="" linkend="wng_lineatedText"/>
+++, a line of text.</aux:desc>
      <ref name="wng.line.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.model.fragment.all.inlines"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    link 
    replaceOnRequest is a preformed combination of XLink attribute values
    that is appropriate for creating a clickable hyperlink within the text to
    the target. Unless instructed otherwise, this is the value to be used in
    general. Other preformed XLink combinations embedOnRequest,
    newOnRequest, and newOnLoad, a
    =============================================================================================
  -->
  <define name="wng.link.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.type.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <attribute name="behavior">
          <aux:desc>link actuation behavior (default value is replaceOnRequest)</aux:desc>
          <choice>
            <value>replaceOnRequest</value>
            <value>newOnRequest</value>
            <value>newOnLoad</value>
            <value>embedOnRequest</value>
          </choice>
        </attribute>
      </optional>
      <attribute name="href">
        <aux:desc>A URI, IRI, or relative reference (or sequence of same) giving the names(s) or location(s) of the object(s)</aux:desc>
      </attribute>
      <optional>
        <attribute name="style">
          <aux:desc>presentational hinting (default value is assoc)</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="entryPoint">
          <aux:desc>root file for a compound media object</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.link">
    <element name="wng:link">
      <aux:desc aux:cat="core">A link (cross-reference) to another location within the document or to a website associated with the document, or to an external document (or a location within one).</aux:desc>
      <ref name="wng.link.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.model.fragment.common.inlines"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    lineatedText
    =============================================================================================
  -->
  <define name="wng.lineatedText.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <attribute name="xml:space">
          <aux:desc>Use default white space processing or preserve source spacing (default value is 'default')</aux:desc>
          <choice>
            <value>default</value>
            <value>preserve</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="numberLines">
          <aux:desc>whether or not line numbers will be generated (default value is 'no')</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="numberingFrequency">
          <aux:desc>the frequency at which generated line numbers will appear (default value is '1')</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.lineatedText">
    <element>
      <name>wng:lineatedText</name>
      <aux:desc aux:cat="block">Text where line breaks are significant, such as poetry or computer code.</aux:desc>
      <ref name="wng.lineatedText.attlist"/>
      <oneOrMore>
        <ref name="wng.line"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    mathDetail
    =============================================================================================
  -->
  <define name="wng.mathDetail.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.mathDetail">
    <element name="wng:mathDetail">
      <aux:desc aux:cat="block">An attribution or date on a <xref xmlns="" linkend="wng_mathStatement"/>
+++.</aux:desc>
      <ref name="wng.mathDetail.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.model.fragment.all.inlines"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    mathStatement
    =============================================================================================
  -->
  <define name="wng.mathStatement.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
      <optional>
        <attribute name="numbered">
          <aux:desc>whether this item is to be counted in the numbering scheme (default value is yes)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.mathStatement">
    <element name="wng:mathStatement">
      <aux:desc aux:cat="block">A mathematical theorem, proof, etc.</aux:desc>
      <ref name="wng.mathStatement.attlist"/>
      <optional>
        <ref name="wng.label"/>
      </optional>
      <ref name="pattern.model.fragment.titling"/>
      <optional>
        <ref name="wng.mathDetail"/>
      </optional>
      <oneOrMore>
        <ref name="wng.p"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    mediaResource
    =============================================================================================
  -->
  <define name="wng.mediaResource.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <attribute name="mimeType">
          <aux:desc>MIME type indicating the specification of the resource's format</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="href">
          <aux:desc>a URI, IRI, or relative reference giving the name or location of the resource (if resource is not provided as element content)</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="specVersion">
          <aux:desc>the version of the specification used by the resource</aux:desc>
        </attribute>
      </optional>
      <ref name="pattern.rights.attributes"/>
      <optional>
        <attribute name="rendition">
          <aux:desc>thumbnail, archive, etc.</aux:desc>
        </attribute>
      </optional>
      <attribute name="alt">
        <aux:desc>an alternative description for accessibility requirements</aux:desc>
      </attribute>
      <optional>
        <attribute name="longdesc">
          <aux:desc>reference to a resource containing a longer description of an image, for accessibility requirements</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="cms:longdesc">
          <aux:desc>!suppress!</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="resourceExtraInfo">
          <aux:desc>Extra information for the type of resource (e.g., whether it is color). Pre-defined values: 'missing', 'missingGifOrJpg', 'notImageGallery', 'animation', 'audio', 'dataset', 'illustration', 'interactivity', lecturePresentation', 'photo', 'realia', 'tutorial', 'video', 'webResource', 'map', 'color', 'clGraphicAdditional', 'clGraphicGenerated'.</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="entryPoint">
          <aux:desc>root file for a compound media object</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="width">
          <aux:desc>resource width</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="height">
          <aux:desc>resource height</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.mediaResource">
    <element>
      <name>wng:mediaResource</name>
      <aux:desc aux:cat="block">An external resource such as an image file or an inline resource such as some SVG code.</aux:desc>
      <ref name="wng.mediaResource.attlist"/>
      <zeroOrMore>
        <ref name="wng.accessionId"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="wng.region"/>
      </zeroOrMore>
      <optional>
        <ref name="wng.data"/>
      </optional>
    </element>
  </define>
  <!--
    =============================================================================================
    mediaResourceGroup
    =============================================================================================
  -->
  <define name="wng.mediaResourceGroup.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.mediaResourceGroup">
    <element>
      <name>wng:mediaResourceGroup</name>
      <aux:desc aux:cat="block">A wrapper for <xref xmlns="" linkend="wng_mediaResource"/>
+++s that refer to, or are renditions of, the same resource.</aux:desc>
      <ref name="wng.mediaResourceGroup.attlist"/>
      <oneOrMore>
        <ref name="wng.mediaResource"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    p element
    =============================================================================================
  -->
  <define name="wng.p.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <attribute name="type">
          <aux:desc>For specializing the use of the element. Pre-defined value: 'annotation'.</aux:desc>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <attribute name="label">
          <aux:desc>a number or other label for this paragraph</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.p">
    <element name="wng:p">
      <aux:desc aux:cat="block">A paragraph or portion of text.</aux:desc>
      <ref name="wng.p.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.model.fragment.para.model"/>
          <ref name="wng.source"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    record element
    =============================================================================================
  -->
  <define name="wng.record.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <attribute name="numbered">
          <aux:desc>whether this item is to be counted in the numbering scheme</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.type.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.record">
    <element name="wng:record">
      <aux:desc aux:cat="block">A container for <xref xmlns="" linkend="wng_field"/>
+++s, representing information corresponding to that stored in a database record.</aux:desc>
      <ref name="wng.record.attlist"/>
      <optional>
        <ref name="wng.label"/>
      </optional>
      <oneOrMore>
        <ref name="wng.field"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    region element
    =============================================================================================
  -->
  <define name="wng.region.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.id.attribute"/>
      <attribute name="upperLeftX">
        <aux:desc>upper left X coordinate of a rectangular region, given on a scale of 0 (left edge of resource) to 1 (right edge)</aux:desc>
      </attribute>
      <attribute name="upperLeftY">
        <aux:desc>upper left Y coordinate of a rectangular region, given on a scale of 0 (top edge of resource) to 1 (bottom edge)</aux:desc>
      </attribute>
      <attribute name="lowerRightX">
        <aux:desc>lower right X coordinate of a rectangular region, given on a scale of 0 (left edge of resource) to 1 (right edge)</aux:desc>
      </attribute>
      <attribute name="lowerRightY">
        <aux:desc>lower right Y coordinate of a rectangular region, given on a scale of 0 (top edge of resource) to 1 (bottom edge)</aux:desc>
      </attribute>
    </interleave>
  </define>
  <define name="wng.region">
    <element name="wng:region">
      <aux:desc aux:cat="block">A rectangular region defined by relative coordinates (0.0 to 1.0) in an image.</aux:desc>
      <ref name="wng.region.attlist"/>
      <optional>
        <ref name="wng.caption"/>
      </optional>
    </element>
  </define>
  <!--
    =============================================================================================
    salutation 
    =============================================================================================
  -->
  <define name="wng.salutation.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.salutation">
    <element name="wng:salutation">
      <aux:desc aux:cat="structural">A salutation in a letter.</aux:desc>
      <ref name="wng.salutation.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.formatting"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    section element
    =============================================================================================
  -->
  <define name="wng.section.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.id.attribute"/>
      <optional>
        <ref name="pattern.type.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <attribute name="numbered">
          <aux:desc>whether this section is numbered (only needed if different from inherited value)</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.autonumber.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.section">
    <element name="wng:section">
      <aux:desc aux:cat="structural">A section.</aux:desc>
      <ref name="wng.section.attlist"/>
      <optional>
        <ref name="wng.label"/>
      </optional>
      <optional>
        <ref name="pattern.model.fragment.titling"/>
      </optional>
      <zeroOrMore>
        <choice>
          <ref name="wng.p"/>
          <ref name="wng.feature"/>
          <ref name="wng.protocol"/>
          <ref name="wng.protocolRecipe"/>
          <ref name="pattern.model.fragment.floats"/>
        </choice>
      </zeroOrMore>
      <zeroOrMore>
        <choice>
          <ref name="wng.section"/>
          <ref name="wng.exerciseSection"/>
          <ref name="wng.bibliography"/>
          <ref name="wng.definitionListGenerated"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    source element
    =============================================================================================
  -->
  <define name="wng.source.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.source">
    <element>
      <name>wng:source</name>
      <aux:desc aux:cat="block">A source of a quotation or content that has previously been published elsewhere.</aux:desc>
      <ref name="wng.source.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="wng.link"/>
          <ref name="wng.url"/>
          <ref name="wng.email"/>
          <ref name="wng.citation"/>
          <ref name="pattern.formatting"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    term element
    =============================================================================================
  -->
  <define name="wng.term.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <ref name="pattern.id.attribute"/>
      </optional>
      <optional>
        <attribute name="type">
          <aux:desc>For specializing the use of the element. Pre-defined values: 'abbreviation', 'key', 'displayForm'.</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="definitionRef">
          <aux:desc>reference to a definition</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="cms:definitionRef">
          <aux:desc>!suppress!</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="emphasis">
          <aux:desc>whether term is emphasized (default value is 'yes')</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="wng.term">
    <element>
      <name>wng:term</name>
      <aux:desc aux:cat="inline">A term or abbreviation.</aux:desc>
      <ref name="wng.term.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.formatting"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    termDefinition
    =============================================================================================
  -->
  <define name="wng.termDefinition.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <ref name="pattern.id.attribute"/>
      <optional>
        <ref name="pattern.type.attribute"/>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <optional>
        <attribute name="hidden">
          <aux:desc>whether to show this definition inline (default value is 'no')</aux:desc>
          <ref name="pattern.boolean.tokens"/>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.termDefinition">
    <element>
      <name>wng:termDefinition</name>
      <aux:desc aux:cat="inline">Definition of a term or expansion or an abbreviation or acronym.</aux:desc>
      <ref name="wng.termDefinition.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.formatting"/>
          <ref name="wng.infoAsset"/>
          <ref name="wng.accessionId"/>
          <ref name="wng.link"/>
          <ref name="wng.term"/>
          <ref name="wng.termGroup"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    termGroup element
    =============================================================================================
  -->
  <define name="wng.termGroup.attlist">
    <ref name="pattern.global.attributes"/>
  </define>
  <define name="wng.termGroup">
    <element name="wng:termGroup">
      <aux:desc aux:cat="metadata">A container for different versions of the same <xref xmlns="" linkend="wng_term"/>
+++.</aux:desc>
      <ref name="wng.termGroup.attlist"/>
      <oneOrMore>
        <ref name="wng.term"/>
      </oneOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    title element
    =============================================================================================
  -->
  <define name="wng.title.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <optional>
        <attribute name="sort">
          <aux:desc>for collation</aux:desc>
        </attribute>
      </optional>
      <optional>
        <ref name="pattern.lang.attribute"/>
      </optional>
      <ref name="pattern.type.attribute">
        <aux:desc>the type of the title</aux:desc>
      </ref>
      <optional>
        <attribute name="alt">
          <aux:desc>plain text version of title for an audio reader, for example, where math or graphics is substituted by a description</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="href">
          <aux:desc>URI to provide a link for this specific instance of the occurrence of an associated icon declared as iconRef for the title type</aux:desc>
        </attribute>
      </optional>
      <optional>
        <attribute name="entryPoint">
          <aux:desc>entry point if the href URI is a compound media object</aux:desc>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="wng.title">
    <element name="wng:title">
      <aux:desc aux:cat="shared">A title of a publication or of some item in it.</aux:desc>
      <ref name="wng.title.attlist"/>
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="pattern.model.fragment.common.inlines"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <!--
    =============================================================================================
    url element
    =============================================================================================
  -->
  <define name="wng.url.attlist">
    <interleave>
      <ref name="pattern.global.attributes"/>
      <attribute name="href">
        <aux:desc>the URL reference, conforming to RFC 3986.</aux:desc>
      </attribute>
    </interleave>
  </define>
  <define name="wng.url">
    <element name="wng:url">
      <aux:desc aux:cat="shared">A URL or IRL.</aux:desc>
      <ref name="wng.url.attlist"/>
      <text/>
    </element>
  </define>
</grammar>