The following schema describes the structure of a Data Model instance that can be used to specify the settings of serialization parameters using the mechanism described in 3.1 Setting Serialization Parameters by Means of a Data Model Instance.
A copy of this schema is available at http://www.w3.org/2017/01/xslt-xquery-serialization/schema-for-serialization-parameters.xsd.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2010/xslt-xquery-serialization" xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization" elementFormDefault="qualified"> <xs:annotation> <xs:documentation> This is a schema for serialization parameters for XSLT and XQuery Serialization 3.1. This schema is available for use under the conditions of the W3C Software License published at http://www.w3.org/Consortium/Legal/copyright-software-19980720 It defines a schema for XML Infoset instances with which a user of a host language MAY specify serialization parameters for use in serializing an instance of the XQuery and XPath Data Model. It also provides hooks that allow the inclusion of implementation- defined serialization parameters and implementation-defined modifiers to serialization parameters. </xs:documentation> </xs:annotation> <xs:simpleType name="EQName"> <!--* In principle, this could be declared as a single-step * restriction of xs:token with the pattern * "Q\{(.*)\}[\i-[:]][\c-[:]]*". We derive it in two * steps because a bug causes some widely used processors * not to support character-class subtraction. *--> <xs:restriction> <xs:simpleType> <xs:restriction base="xs:token"> <xs:pattern value="Q\{[^{}]*\}[\i][\c]*"/> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> <xs:pattern value="Q\{.*\}[^:]*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="Prefixed-QName"> <xs:annotation> <xs:documentation> Prefixed-QName matches only QNames with a non-null prefix: that is, only QNames with a colon. </xs:documentation> </xs:annotation> <xs:restriction base="xs:QName"> <xs:pattern value=".*:.*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="Qualified-EQName"> <xs:annotation> <xs:documentation> Qualified-EQName matches only EQNames with a non-null namespace name. </xs:documentation> </xs:annotation> <xs:restriction base="output:EQName"> <xs:pattern value=".*\{(.*\S.*)\}.*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="QName-or-EQName"> <xs:union memberTypes="xs:QName output:EQName"/> </xs:simpleType> <xs:simpleType name="QNames-type"> <xs:list itemType="output:QName-or-EQName"/> </xs:simpleType> <xs:simpleType name="yes-no-type"> <xs:restriction base="xs:token"> <xs:enumeration value="no"/> <xs:enumeration value="yes"/> <xs:enumeration value="false"/> <xs:enumeration value="true"/> <xs:enumeration value="0"/> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="yes-no-omit-type"> <xs:restriction base="xs:token"> <xs:enumeration value="no"/> <xs:enumeration value="omit"/> <xs:enumeration value="yes"/> <xs:enumeration value="false"/> <xs:enumeration value="true"/> <xs:enumeration value="0"/> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="char-type"> <xs:restriction base="xs:string"> <xs:maxLength value="1"/> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="encoding-string-type"> <xs:restriction base="xs:token"> <xs:pattern value="[A-Za-z][A-Za-z0-9._\-]*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="json-node-output-method-type"> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="html"/> <xs:enumeration value="text"/> <xs:enumeration value="xml"/> <xs:enumeration value="xhtml"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:restriction base="output:EQName"> <xs:pattern value="Q\{\s*\}(html|text|xml|xhtml)"/> </xs:restriction> </xs:simpleType> <!--* other values must have non-null namespace URI *--> <xs:simpleType> <xs:restriction base="output:Prefixed-QName"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="output:Qualified-EQName"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="method-type"> <xs:union> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="html"/> <xs:enumeration value="text"/> <xs:enumeration value="xml"/> <xs:enumeration value="xhtml"/> <xs:enumeration value="json"/> <xs:enumeration value="adaptive"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:restriction base="output:EQName"> <xs:pattern value="Q\{\s*\}(html|text|xml|xhtml|json|adaptive)"/> </xs:restriction> </xs:simpleType> <!--* other values must have non-null namespace URI *--> <xs:simpleType> <xs:restriction base="output:Prefixed-QName"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="output:Qualified-EQName"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="pubid-char-string-type"> <xs:restriction base="xs:token"> <xs:pattern value="([- \r\n\ta-zA-Z0-9'()+,./:=?;!*#@$_%])*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="system-id-string-type"> <xs:restriction base="xs:string"> <xs:pattern value="[^']*|[^"]*"/> </xs:restriction> </xs:simpleType> <!-- - Base type of all serialization parameter types --> <xs:complexType name="base-param-type"> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:restriction> </xs:complexContent> </xs:complexType> <!-- - Generic string serialization parameters --> <xs:complexType name="string-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="xs:string" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Generic tokenized string serialization parameters --> <xs:complexType name="tokenized-string-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="xs:token" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Generic decimal serialization parameters --> <xs:complexType name="decimal-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="xs:decimal" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter type for "yes", "no", "true", "false", "0" or "1" - serialization parameters --> <xs:complexType name="yes-no-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:yes-no-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter type for list of xs:QName - serialization parameters --> <xs:complexType name="QNames-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:QNames-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter type for "yes", "no", "true", "false", "0", "1" or "omit" - serialization parameters --> <xs:complexType name="yes-no-omit-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:yes-no-omit-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter type for NMTOKEN serialization parameters --> <xs:complexType name="NMTOKEN-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="xs:NMTOKEN" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Base element declaration for all serialization parameter elements --> <xs:element name="serialization-parameter-element" abstract="true" type="output:base-param-type"/> <!-- - Serialization parameter element for allow-duplicate-names parameter --> <xs:element id="allow-duplicate-names" name="allow-duplicate-names" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for byte-order-mark parameter --> <xs:element id="byte-order-mark" name="byte-order-mark" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for cdata-section-elements parameter --> <xs:element id="cdata-section-elements" name="cdata-section-elements" type="output:QNames-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter type for doctype-public parameter --> <xs:complexType name="doctype-public-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:pubid-char-string-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter element for doctype-public parameter --> <xs:element id="doctype-public" name="doctype-public" type="output:doctype-public-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter type for doctype-system parameter --> <xs:complexType name="doctype-system-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:system-id-string-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter element for doctype-system parameter --> <xs:element id="doctype-system" name="doctype-system" type="output:doctype-system-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter type for encoding parameter --> <xs:complexType name="encoding-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:encoding-string-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter element for encoding parameter --> <xs:element id="encoding" name="encoding" type="output:encoding-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for escape-uri-attributes parameter --> <xs:element id="escape-uri-attributes" name="escape-uri-attributes" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for html-version parameter --> <xs:element id="html-version" name="html-version" type="output:decimal-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for include-content-type parameter --> <xs:element id="include-content-type" name="include-content-type" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for indent parameter --> <xs:element id="indent" name="indent" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for item-separator parameter --> <xs:element id="item-separator" name="item-separator" type="output:string-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter type for json-node-output-method parameter --> <xs:complexType name="json-node-output-method-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:json-node-output-method-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter element for json-node-output-method parameter --> <xs:element id="json-node-output-method" name="json-node-output-method" type="output:json-node-output-method-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for media-type parameter --> <xs:element id="media-type" name="media-type" type="output:tokenized-string-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter type for method parameter --> <xs:complexType name="method-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:attribute name="value" type="output:method-type" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter element for method parameter --> <xs:element id="method" name="method" type="output:method-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for normalization-form parameter --> <xs:element id="normalization-form" name="normalization-form" type="output:NMTOKEN-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for omit-xml-declaration parameter --> <xs:element id="omit-xml-declaration" name="omit-xml-declaration" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for standalone parameter --> <xs:element id="standalone" name="standalone" type="output:yes-no-omit-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for suppress-indentation parameter --> <xs:element id="suppress-indentation" name="suppress-indentation" type="output:QNames-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for undeclare-prefixes parameter --> <xs:element id="undeclare-prefixes" name="undeclare-prefixes" type="output:yes-no-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter type for use-character-maps parameter --> <xs:complexType name="use-character-maps-param-type"> <xs:complexContent> <xs:extension base="output:base-param-type"> <xs:sequence> <xs:element name="character-map" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="character" type="output:char-type"/> <xs:attribute name="map-string" type="xs:string"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:element> <xs:any minOccurs="0" namespace="##other" processContents="lax"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- - Serialization parameter element for use-character-maps parameter --> <xs:element id="use-character-maps" name="use-character-maps" type="output:use-character-maps-param-type" substitutionGroup = "output:serialization-parameter-element"/> <!-- - Serialization parameter element for version parameter --> <xs:element id="version" name="version" type="output:tokenized-string-param-type" substitutionGroup = "output:serialization-parameter-element"/> <xs:element name="serialization-parameters"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="output:serialization-parameter-element"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> </xs:complexType> </xs:element> </xs:schema>