<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <a:documentation> datatatypes.rng Last edit by: jpritchett@rfbd.org, 25 October 2007 </a:documentation> <define name="datatype.idrefs"> <data type="IDREFS" datatypeLibrary="http://relaxng.org/ns/compatibility/datatypes/1.0"/> </define> <define name="datatype.idref"> <data type="IDREF" datatypeLibrary="http://relaxng.org/ns/compatibility/datatypes/1.0"/> </define> <define name="datatype.id"> <data type="ID" datatypeLibrary="http://relaxng.org/ns/compatibility/datatypes/1.0"/> </define> <define name="datatype.rfc1766"> <data type="language"/> </define> <define name="datatype.string"> <data type="string"/> </define> <define name="datatype.string.non-null"> <data type="string"> <param name="pattern">.*\S.*</param> </data> </define> <define name="datatype.romannumeral"> <data type="string"> <param name="pattern">\s*[Mm]*([Dd]?[Cc]{0,3}|[Cc][DdMm])([Ll]?[Xx]{0,3}|[Xx][LlCc])([Vv]?[Ii]{0,3}|[Ii][VvXx])\s*</param> </data> </define> <define name="datatype.integer"> <data type="integer"/> </define> <define name="datatype.uri"> <data type="anyURI"/> </define> <define name="datatype.uri.z3986-2005.subset"> <data type="string"> <param name="pattern">[A-Za-z0-9/\.\-_#]+</param> </data> </define> <define name="datatype.uri.relative.smilwithfragment"> <data type="string"> <param name="pattern">.+\.[Ss][Mm][Ii][Ll]#.+</param> </data> </define> <define name="datatype.uri.z3986-2005.subset.relative.smilwithfragment"> <data type="string"> <param name="pattern">[A-Za-z0-9/\.\-_]+\.[Ss][Mm][Ii][Ll]#.+</param> </data> </define> <define name="datatype.string.nondtbns"> <data type="string"> <a:documentation>when other meta elems in group must have other ns than dtb</a:documentation> <param name="pattern">(([^d].{3})|(.[^t].{2})|(.{2}[^b].)|(.{3}[^:])).*|(.{1,3})</param> </data> </define> <define name="datatype.string.prodPrefix"> <data type="string"> <param name="pattern">prod:.*</param> </data> </define> <define name="datatype.mime"> <data type="string"/> </define> <define name="datatype.mime.z2005list"> <choice> <value>audio/mpeg4-generic</value> <value>audio/mpeg</value> <value>audio/x-wav</value> <value>image/jpeg</value> <value>image/png</value> <value>image/svg+xml</value> <value>text/css</value> <value>application/smil</value> <value>text/xml</value> <value>application/xml-dtd</value> <value>application/x-dtbncx+xml</value> <value>application/x-dtbook+xml</value> <value>application/x-dtbresource+xml</value> <value>application/xml</value> <value>application/xslt+xml</value> </choice> </define> <define name="datatype.iso8601"> <a:documentation>[ISO8601] the syntax is YYYY[-MM[-DD]] with a mandatory 4-digit year, an optional 2-digit month, and, if the month is present, an optional 2-digit day of month.</a:documentation> <choice> <ref name="datatype.iso8601.yyyy"/> <ref name="datatype.iso8601.yyyyMm"/> <ref name="datatype.iso8601.yyyyMmDd"/> </choice> </define> <define name="datatype.iso8601.yyyy"> <a:documentation>[ISO8601] subset: requires yyyy format</a:documentation> <data type="string"> <param name="pattern">[0-9]{4}</param> </data> </define> <define name="datatype.iso8601.yyyyMm"> <a:documentation>[ISO8601] subset: requires yyyy-mm format</a:documentation> <data type="string"> <param name="pattern">[0-9]{4}-[0-9]{2}</param> </data> </define> <define name="datatype.iso8601.yyyyMmDd"> <a:documentation>[ISO8601] subset: requires yyyy-mm-dd format</a:documentation> <data type="string"> <param name="pattern">[0-9]{4}-[0-9]{2}-[0-9]{2}</param> </data> </define> <define name="datatype.nonNegativeInteger"> <data type="nonNegativeInteger"/> </define> <define name="datatype.positiveInteger"> <data type="positiveInteger"/> </define> <define name="datatype.string.charset"> <data type="string"/> </define> <define name="datatype.string.identifier"> <data type="string"/> </define> <define name="datatype.smilclock"> <choice> <a:documentation> Below defined as a datatype as per http://www.w3.org/TR/smil20/smil-timing.html#Timing-ClockValueSyntax with additional restrictions as per Z39-86-2002.html#Clock </a:documentation> <data type="string"> <a:documentation>Full-clock-val</a:documentation> <param name="pattern">(\s*)(npt=)?[0-9]+:[0-5][0-9]:[0-5][0-9](\.[0-9]+)?(\s*)</param> </data> <data type="string"> <a:documentation>Partial-clock-val</a:documentation> <param name="pattern">(\s*)(npt=)?[0-5][0-9]:[0-5][0-9](\.[0-9]+)?(\s*)</param> </data> <data type="string"> <a:documentation>Timecount-val</a:documentation> <param name="pattern">(\s*)(npt=)?[0-9]+(\.[0-9]+)?(h|min|s|ms)?(\s*)</param> </data> </choice> </define> <define name="datatype.resxpathsubset"> <data type="string"> <param name="pattern">//(\*|(\p{L}|_)(\p{L}|[0-9]|[\.\-_])+)(\[@(\p{L}|_)(\p{L}|[0-9]|[\.\-_])+=("[^"]*"|'[^']*')\])*</param> </data> </define> <define name="datatype.pkg.guide.reference.type.values"> <choice> <value>cover</value> <value>title-page</value> <value>toc</value> <value>index</value> <value>glossary</value> <value>acknowledgements</value> <value>bibliography</value> <value>colophon</value> <value>copyright-page</value> <value>dedication</value> <value>epigraph</value> <value>foreword</value> <value>loi</value> <value>lot</value> <value>notes</value> <value>preface</value> <value>[other.].*</value> </choice> </define> <define name="datatype.dtbook.element.names"> <choice> <value>dtbook</value> <value>head</value> <value>title</value> <value>link</value> <value>meta</value> <value>style</value> <value>book</value> <value>frontmatter</value> <value>bodymatter</value> <value>rearmatter</value> <value>level</value> <value>level1</value> <value>level2</value> <value>level3</value> <value>level4</value> <value>level5</value> <value>level6</value> <value>br</value> <value>linenum</value> <value>address</value> <value>div</value> <value>author</value> <value>notice</value> <value>prodnote</value> <value>sidebar</value> <value>note</value> <value>annotation</value> <value>line</value> <value>a</value> <value>em</value> <value>strong</value> <value>dfn</value> <value>kbd</value> <value>code</value> <value>samp</value> <value>cite</value> <value>abbr</value> <value>acronym</value> <value>sub</value> <value>sup</value> <value>span</value> <value>bdo</value> <value>sent</value> <value>w</value> <value>pagenum</value> <value>noteref</value> <value>annoref</value> <value>q</value> <value>img</value> <value>imggroup</value> <value>hr</value> <value>p</value> <value>doctitle</value> <value>docauthor</value> <value>levelhd</value> <value>h1</value> <value>h2</value> <value>h3</value> <value>h4</value> <value>h5</value> <value>h6</value> <value>hd</value> <value>blockquote</value> <value>dl</value> <value>dt</value> <value>dd</value> <value>list</value> <value>li</value> <value>lic</value> <value>table</value> <value>caption</value> <value>thead</value> <value>tfoot</value> <value>tbody</value> <value>colgroup</value> <value>col</value> <value>tr</value> <value>th</value> <value>td</value> </choice> </define> <define name="datatype.id.and.dtbook.element.names"> <data type="ID"> <param name="pattern">dtbook|head|title|link|meta|style|book|frontmatter|bodymatter|rearmatter|level|level1|level2|level3|level4|level5|level6|br|linenum|address|div|author|notice|prodnote|sidebar|note|annotation|line|a|em|strong|dfn|kbd|code|samp|cite|abbr|acronym|sub|sup|span|bdo|sent|w|pagenum|noteref|annoref|q|img|imggroup|hr|p|doctitle|docauthor|levelhd|h1|h2|h3|h4|h5|h6|hd|blockquote|dl|dt|dd|list|li|lic|table|caption|thead|tfoot|tbody|colgroup|col|tr|th|td</param> </data> </define> </grammar>