<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:z="http://www.daisy.org/ns/z3998/annotations/#" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" ns="http://www.daisy.org/ns/z3998/authoring/"> <info xmlns="http://docbook.org/ns/docbook" xml:lang="en"> <title>The address module </title> <annotation annotates="/"> <para>This module defines the address element for marking up postal, http, email and other types of addresses in documents. </para> <para>More information about this module is available at http://www.daisy.org/z3998/2012/auth/cm/#z3998.address.module</para> </annotation> <author> <personname>Markus Gylling</personname> <email>mgylling@daisy.org</email> </author> <copyright> <year>2009</year> <year>2010</year> <year>2011</year> <year>2012</year> <holder>DAISY Consortium</holder> </copyright> <legalnotice> <para>This module is licensed under a Creative Commons Attribution 3.0 license, a copy of which is available at <link xlink:href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</link> </para> <para>For complete licensing information, please refer to the LICENSE file that came with this distribution, a copy of which is also available from the DAISY web site at <link xlink:href="http://www.daisy.org">www.daisy.org</link> </para> </legalnotice> <revhistory> <revision> <date>2012-12-19</date> <authorinitials>MGy</authorinitials> <revdescription> <para>Initial version</para> </revdescription> </revision> </revhistory> </info> <div> <define name="z3998.address"> <element name="address"> <a:documentation>The address element represents both physical locations (postal, geographic, etc.) and virtual locations (http, email, ftp, etc.). The Block variant is an adaptation for use marking multi-line addresses (e.g., postal addresses). The role attribute optionally expresses the type of address. If omitted, the implicit value postal is assumed. </a:documentation> <ref name="z3998.address.attlist"/> <ref name="z3998.address.content"/> </element> </define> <define name="z3998.address.content"> <oneOrMore> <choice> <ref name="z3998.lngroup"/> <ref name="z3998.ln"/> <ref name="z3998.Global.extra.class"/> </choice> </oneOrMore> </define> <define name="z3998.address.attlist" combine="interleave"> <ref name="z3998.global.core.attrib"/> <optional> <ref name="z3998.address.role.attrib"/> </optional> <optional> <ref name="z3998.ref.attrib"/> </optional> <optional> <ref name="xlink.attrib"/> </optional> </define> <define name="z3998.address.role.attrib"> <attribute name="role"> <list> <oneOrMore> <ref name="z3998.address.role.attrib.content.enum"/> </oneOrMore> </list> </attribute> </define> <define name="z3998.address.role.attrib.content.enum" combine="choice"> <ref name="CURIE.datatype"/> </define> </div> <div> <define name="z3998.address.phrase"> <element name="address"> <a:documentation>The address element represents both physical locations (postal, geographic, etc.) and virtual locations (http, email, ftp, etc.). The Phrase variant is an adaptation for use for addresses that are embedded within the text flow (typically web and email addresses). The role attribute optionally expresses the type of address. If omitted, the implicit value postal is assumed. </a:documentation> <ref name="z3998.address.phrase.attlist"/> <ref name="z3998.address.phrase.content"/> <sch:rule context="default:address"> <sch:assert test="normalize-space(.) or *">The address element must neither be empty nor contain only whitespace. </sch:assert> </sch:rule> </element> </define> <define name="z3998.address.phrase.content"> <ref name="z3998.Flow.choice.model"/> </define> <define name="z3998.address.phrase.attlist" combine="interleave"> <ref name="z3998.global.core.attrib"/> <optional> <ref name="z3998.address.role.attrib"/> </optional> <ref name="z3998.Phrase.extern.attrib"/> <optional> <ref name="xlink.attrib"/> </optional> </define> </div> <div> <a:documentation>address - default content model contribution </a:documentation> <define name="z3998.Block.core.class" combine="choice"> <ref name="z3998.address"/> </define> <define name="z3998.Phrase.core.class" combine="choice"> <ref name="z3998.address.phrase"/> </define> </div> </grammar>