From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

<?xml version="1.0" encoding="UTF-8"?>
<!--
/=====================================================================\
| LaTeXML-meta.rnc |
| RelaxNG model for LaTeXML generated documents |
|=====================================================================|
| Part of LaTeXML: |
| Public domain software, produced as part of work done by the |
| United States Government & not subject to copyright in the US. |
|=====================================================================|
| Bruce Miller <bruce.miller@nist.gov> #_# |
\=========================================================ooo==U==ooo=/
-->
<define name="Meta.class" combine="choice">
<a:documentation>Meta elements are generally hidden;
they can appear in both inline and block contexts.</a:documentation>
<choice>
<ref name="note"/>
<ref name="indexmark"/>
<ref name="glossaryphrase"/>
<ref name="rdf"/>
<ref name="ERROR"/>
<ref name="resource"/>
<ref name="navigation"/>
</choice>
</define>
<!-- ====================================================================== -->
<define name="note">
<element name="note">
<a:documentation>Metadata that covers several `out of band' annotations.
It's content allows both inline and block-level content.</a:documentation>
<ref name="note_attributes"/>
<ref name="note_model"/>
</element>
</define>
<define name="note_attributes">
<a:documentation>Attributes for \elementref{note}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="Labelled.attributes"/>
<optional>
<attribute name="mark">
<a:documentation>indicates the desired visible marker to be linked to the note.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="role">
<a:documentation>indicates the kind of note</a:documentation>
<choice>
<value>footnote</value>
<text/>
</choice>
</attribute>
</optional>
</define>
<define name="note_model">
<a:documentation>Content model for \elementref{note}.</a:documentation>
<ref name="Flow.model"/>
</define>
<!-- should mark be more like label/refnum ? -->
<!-- ====================================================================== -->
<define name="indexmark">
<element name="indexmark">
<a:documentation>Metadata to record an indexing position. The content is
a sequence of \elementref{indexphrase}, each representing a level in
a multilevel indexing entry.</a:documentation>
<ref name="indexmark_attributes"/>
<ref name="indexmark_model"/>
</element>
</define>
<define name="indexmark_attributes">
<a:documentation>Attributes for \elementref{indexmark}.</a:documentation>
<ref name="Common.attributes"/>
<optional>
<attribute name="see_also">
<a:documentation>a flattened form (like \attr{key}) of another \elementref{indexmark},
used to crossreference.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="style">
<a:documentation>NOTE: describe this.</a:documentation>
</attribute>
</optional>
</define>
<define name="indexmark_model">
<a:documentation>Content model for \elementref{indexmark}.</a:documentation>
<zeroOrMore>
<ref name="indexphrase"/>
</zeroOrMore>
<zeroOrMore>
<ref name="indexsee"/>
</zeroOrMore>
</define>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<define name="indexphrase">
<element name="indexphrase">
<a:documentation>A phrase within an \elementref{indexmark}</a:documentation>
<ref name="indexphrase_attributes"/>
<ref name="indexphrase_model"/>
</element>
</define>
<define name="indexphrase_attributes">
<a:documentation>Attributes for \elementref{indexphrase}.</a:documentation>
<ref name="Common.attributes"/>
<optional>
<attribute name="key">
<a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
</attribute>
</optional>
</define>
<define name="indexphrase_model">
<a:documentation>Content model for \elementref{indexphrase}.</a:documentation>
<ref name="Inline.model"/>
</define>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<define name="indexsee">
<element name="indexsee">
<a:documentation>A see-also phrase within an \elementref{indexmark}</a:documentation>
<ref name="indexsee_attributes"/>
<ref name="indexsee_model"/>
</element>
</define>
<define name="indexsee_attributes">
<a:documentation>Attributes for \elementref{indexsee}.</a:documentation>
<ref name="Common.attributes"/>
<optional>
<attribute name="key">
<a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="name">
<a:documentation>a name for the see phrase, such as "see also".</a:documentation>
</attribute>
</optional>
</define>
<define name="indexsee_model">
<a:documentation>Content model for \elementref{indexsee}.</a:documentation>
<ref name="Inline.model"/>
</define>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<define name="glossaryphrase">
<element name="glossaryphrase">
<a:documentation>A phrase being clarified within an \elementref{glossaryentry}</a:documentation>
<ref name="glossaryphrase_attributes"/>
<ref name="glossaryphrase_model"/>
</element>
</define>
<define name="glossaryphrase_attributes">
<a:documentation>Attributes for \elementref{glossaryphrase}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="IDREF.attributes"/>
<optional>
<attribute name="role">
<a:documentation>The kind of \elementref{glossary} this mark belongs to.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="key">
<a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="show">
<a:documentation>a keyword naming the format of this phrase (to match \attr{show} in \elementref{glossaryref}).</a:documentation>
</attribute>
</optional>
</define>
<define name="glossaryphrase_model">
<a:documentation>Content model for \elementref{glossaryphrase}.</a:documentation>
<ref name="Inline.model"/>
</define>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<define name="glossarydefinition">
<element name="glossarydefinition">
<a:documentation>A definition within an \elementref{glossaryentry}</a:documentation>
<ref name="glossarydefinition_attributes"/>
<ref name="glossarydefinition_model"/>
</element>
</define>
<define name="glossarydefinition_attributes">
<a:documentation>Attributes for \elementref{glossarydefinition}.</a:documentation>
<ref name="Common.attributes"/>
<optional>
<attribute name="key">
<a:documentation>a flattened form of the definition for generating an \attr{ID}.</a:documentation>
</attribute>
</optional>
</define>
<define name="glossarydefinition_model">
<a:documentation>Content model for \elementref{glossarydefinition}.</a:documentation>
<ref name="Inline.model"/>
</define>
<!-- ====================================================================== -->
<define name="rdf">
<element name="rdf">
<a:documentation>A container for RDF annotations.
(See document structure for rdf-prefixes attribute)</a:documentation>
<ref name="rdf_attributes"/>
<ref name="rdf_model"/>
</element>
</define>
<define name="rdf_attributes">
<a:documentation>Attributes for \elementref{rdf}</a:documentation>
<ref name="Common.attributes"/>
</define>
<define name="rdf_model">
<a:documentation>Content model for \elementref{rdf}</a:documentation>
<ref name="Flow.model"/>
</define>
<!-- ====================================================================== -->
<define name="ERROR">
<element name="ERROR">
<a:documentation>error object for undefined control sequences, or whatever</a:documentation>
<ref name="ERROR_attributes"/>
<ref name="ERROR_model"/>
</element>
</define>
<define name="ERROR_attributes">
<a:documentation>Attributes for \elementref{ERROR}.</a:documentation>
<ref name="Common.attributes"/>
<ref name="ID.attributes"/>
</define>
<define name="ERROR_model">
<a:documentation>Content model for \elementref{ERROR}.</a:documentation>
<zeroOrMore>
<text/>
</zeroOrMore>
</define>
<!--
======================================================================
Document-level (or sub-document level) Meta objects
-->
<define name="resource">
<element name="resource">
<a:documentation>a resource for use in further processing such as javascript or CSS</a:documentation>
<ref name="resource_attributes"/>
<ref name="resource_model"/>
</element>
</define>
<define name="resource_attributes">
<a:documentation>Attributes for \elementref{resource}.</a:documentation>
<ref name="Common.attributes"/>
<optional>
<attribute name="src">
<a:documentation>the source url to the resource</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="type">
<a:documentation>the mime type of the resource</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="media">
<a:documentation>the media for which this resource is applicable
(in the sense of CSS).</a:documentation>
</attribute>
</optional>
</define>
<!-- anyElement = element * { (attribute * { text } | text | anyElement) * } -->
<!-- resource_model = (text | anyElement)* -->
<define name="resource_model">
<zeroOrMore>
<text/>
</zeroOrMore>
</define>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<define name="navigation">
<element name="navigation">
<a:documentation>Records navigation cross-referencing information,
or serves as a container for page navigational blocks.</a:documentation>
<ref name="navigation_attributes"/>
<ref name="navigation_model"/>
</element>
</define>
<define name="navigation_attributes">
<a:documentation>Attributes for \elementref{navigation}.</a:documentation>
<ref name="Common.attributes"/>
</define>
<define name="navigation_model">
<a:documentation>Content model for \elementref{navigation}.
A \elementref{inline-para} child should have attribute \attr{class}
being one of \texttt{ltx_page_navbar}, \texttt{ltx_page_header}
or \texttt{ltx_page_footer} and its contents will be used to create those components of webpages.
Lacking those, a \elementref{TOC} requests a table of contents
in the navigation bar. Page headers and footers will be synthesized from
Links from the current page or document to related ones;
these are represented by \elementref{ref} elements with \attr{rel}
being up, down, previous, next, and so forth.
top-level elements, presumably block-level,</a:documentation>
<zeroOrMore>
<choice>
<ref name="ref"/>
<ref name="TOC"/>
<ref name="inline-para"/>
</choice>
</zeroOrMore>
</define>
</grammar>
<!-- ====================================================================== -->