W3C home > Mailing lists > Public > public-xml-id@w3.org > August 2008

RELAX NG and xml:id

From: Murata Makoto <EB2M-MRT@asahi-net.or.jp>
Date: 13 Aug 2008 19:12:03 +0900
To: public-xml-id@w3.org
Cc: Michael.Brauer@sun.com, eb2m-mrt@j.asahi-net.or.jp
Message-Id: <48A2B373.37988.001@leopold.j.asahi-net.or.jp>

Dear colleagues,

I have a question about interactions of xml:id and 

Consider a RELAX NG schema that defines xml:id as xsd:NCName rather
than xsd:ID and an DTD-free instance valid against this schema.  The
schema does NOT use the RELAX NG DTD compatibility specification.

Since RELAX NG validation does not change the information set, 
the [attribute type] property of the attribute xml:id is unknown.

I believe that there is nothing wrong in applying "ID attribute
normalization" and "ID type assignment" to xml:id in this instance
document.  In my understanding, xml:id tries to separate ID processing
from validation as much as possible.

However, Section 4 of the xml:id recommendation says:

	The declared type of the attribute, if it has one, is "ID".
	All declarations for xml:id attributes must specify "ID" as
	the type of the attribute.

Does this sentence prohibit my scenario?  The pattern for xml:id 
specifies xsd:NCName rather than xsd:ID.

Furthermore, what will happen if the xml:id attribute is validated
against wildcards?  For example: 

  anyAtt = attribute * { xsd:string }.

Such wildcards are useful when we would like to allow foreign elements
to contain any attribute.   Since the RELAX NG DTD compatibility 
specification allows the use of xsd:ID only when we precisely know 
the element name as well as the attribute name, we cannot 
  anyElement = element * {attribute xml:id {xsd:ID}?, anyElement*}

If the "anyAtt" define statement shown above is what you mean
"declaration", we cannot allow xml:id within foreign elements 
without giving up RELAX NG validation. 

Received on Wednesday, 13 August 2008 10:12:43 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 19:53:50 UTC