Section 1.2 Use of XML should have a new subsection for namespaces only before the 1.2.1 Use of XML Schema.
Section 2.4.1 Foreign Namespaces and it's parent should be re-written to talk about extensibility only and (if necessary only) reference new Use of namespaces section.
During this process the objectives are to explain
- Must declare PrintTalk namespace with default or 'ptk' prefix in root.
- Is using Must declare XJDF namespace with default or 'xjdf' prefix in root.
- We'd rather not use ptk and default for XJDF (permitted by XJDF specification)
- Other namespaces SHOULD be declared in the root PrintTalk element
Also note that a tidy up of Values Include to reference NMTOKE extention might be a good idea.
1.2 Use of XML
PrintTalk is encoded as XML and SHALL be a valid XML document according to [XML]. The namespace prefix for items that are defined in the PrintTalk namespace should be one of 'ptk' or no prefix, i.e. the default namespace.
Note: Most data in PrintTalk is encoded in XML attributes; XML elements provide the hierarchical structure of the data.
Note: The data model does not require use of XML. Conceptually, any hierarchical data syntax could be used. XML was chosen to align with the XJDF specification and because it is in widespread use. In addition, leaving the choice of an underlying grammar open would lead to non interoperable implementations.
1.2.1 Use of XML namespaces
A PrintTalk implementation shall support standard namespace handling as defined in [XMLNS].
The PrintTalk namespace shall be declared in the PrintTalk element using the standard @xmlns attribute. For version 2.0 of PrintTalk the value SHALL be "http://www.printtalk.org/schema_20". The namespace prefix for items that are defined in the PrintTalk namespace SHOULD be one of 'ptk' or no prefix, i.e. the default namespace.
If a PrintTalk instance contains items from the XJDF namespace, then the XJDF namespace SHALL be declared in the PrintTalk element using the standard @xmlns attribute and SHOULD conform to the recommended use of prefix identifiers as specified in [XJDF 2.0].
Note: It is not recommended to use the empty, i.e. default namespace, for declaring XJDF items.
If a PrintTalk instance contains items from namespaces other than PrintTalk or XJDF, then the namespace for those item SHOULD be declared in the PrintTalk element using the standard @xmlns attribute and SHALL NOT use a prefix that is reserved for either PrintTalk or XJDF.
Note: Such namespaces are referred to as 'foreign namespaces' throughout this document.
1.2.12 Use of XML Schema
The XML schema for PrintTalk is designed to ensure that PrintTalk documents are syntactically valid, thus PrintTalk documents that are successfully validated against the PrintTalk schema SHALL be considered conformant to the syntax requirements described in this specification.
A PrintTalk implementation SHALL support standard namespace handling as defined in [XMLNS], and SHOULD conform to the recommended use of prefix identifiers as specified in [XJDF 2.0].
The namespace SHALL be declared in the PrintTalk element using the standard @xmlns attribute. For version 2.0 of PrintTalk the value SHALL be "http://www.printtalk.org/schema_20".
All elements that are defined in this specification are defined in the XML schema for this namespace, including those derived directly from [cXML 1.2], but excluding those defined in [XJDF 2.0].
2.4 PrintTalk Extensibility
The PrintTalk specification aims to support plug-and-play as much as possible. Nonetheless, PrintTalk is meant to be flexible and therefore, as each vendor may have private data to include in the PrintTalk files, it allows for this data to be added using a foreign namespace. See Section 1.2.1 Use of XML namespaces. However, fForeign namespace extensions SHOULD NOT duplicate functionality of attributes and elements defined by PrintTalk.
This section describes how PrintTalk MAY be extended. PrintTalk extensibility SHALL be implemented using XML
namespaces; see [XMLNS].
2.4.1 Foreign Namespaces
For PrintTalk foreign namespaces are defined to be any namespace except for those reserved for PrintTalk and XJDF.
The namespace for PrintTalk is defined in PrintTalk/@xmlns. See [XJDF 2.0] for the XJDF definition. The namespace prefixes reserved for PrintTalk and XJDF SHOULD NOT be used for foreign namespaces.
Elements in a foreign namespace SHALL NOT be specified in any PrintTalk element other than the Request element. The children of the Request element SHALL be ordered so that all elements in a foreign namespace follow all of the elements in the PrintTalk namespace. The valid locations of foreign namespace elements in XJDF are also valid in XJDF descendents
2.4.2 AttributesAttributes in a foreign namespace MAY be added to any PrintTalk element.
2.4.3 Attribute values
Throughout the specification NMTOKEN is used as a data type which allows for an unbounded set of values; the writer is free to use any value that conforms to the NMTOKEN requirements.
In a number of cases, e.g. Credential/@Domain, the specification lists a set of values for specific uses. The writer is free to use other values as long as they do not duplicate the functionality of those already listed. In these cases it is RECOMMENDED that the value uses a namespace like prefix as an indication of the source namespace, e.g. "pfx:Value".
Find all cases where NMTOKEN(S) have a suggested list make reference to 2.4.3