[
Lists Home |
Date Index |
Thread Index
]
At 10:34 AM -0400 10/23/02, John Cowan wrote:
>The XPath data model and the Infoset were made compatible thanks to a
>conspiracy between James Clark and myself. I note that the XPath data
>model also does not forbid names made up of seven spaces, but you don't
>rant about that.
>
That's because I don't think it's true:
XPath operates on an XML document as a tree. This section describes
how XPath models an XML document as a tree. This model is conceptual
only and does not mandate any particular implementation. The
relationship of this model to the XML Information Set [XML Infoset]
is described in [B XML Information Set Mapping].
XML documents operated on by XPath must conform to the XML
Namespaces Recommendation [XML Names].
There's no notion of a synthetic XPath data model that can somehow avoid
the constraints of well-formedness. I also note that in discussion of
the location path and expression syntax, things are normatively QNames
as defined in namespaces in XML (and by extension XML .10.) For example,
A node test that is a QName is true if and only if the type of the
node (see [5 Data Model]) is the principal node type and has an
expanded-name equal to the expanded-name specified by the QName. For
example, child::para selects the para element children of the
context node; if the context node has no para children, it will
select an empty set of nodes. attribute::href selects the href
attribute of the context node; if the context node has no href
attribute, it will select an empty set of nodes.
A QName in the node test is expanded into an expanded-name using the
namespace declarations from the expression context. This is the same
way expansion is done for element type names in start and end-tags
except that the default namespace declared with xmlns is not used:
if the QName does not have a prefix, then the namespace URI is null
(this is the same way attribute names are expanded). It is an error
if the QName has a prefix for which there is no namespace
declaration in the expression context.
There are many more cases I could cite.
I also note that in XSLT, well-formedness is also required (aside
from allowing document fragments). For instance, when discussing the
name attribute of the xsl:element element that creates a new element
with a particular name, the XSLT spec states:
The name attribute is interpreted as an attribute value template. It
is an error if the string that results from instantiating the
attribute value template is not a QName.
Clearly, seven spaces is not a legal QName in XSLT. I'm not sure if this
language has been carefully inserted into every location in the XSLT
spec., but it's obviously the intent.
--
+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | elharo@metalab.unc.edu | Writer/Programmer |
+-----------------------+------------------------+-------------------+
| XML in a Nutshell, 2nd Edition (O'Reilly, 2002) |
| http://www.cafeconleche.org/books/xian2/ |
| http://www.amazon.com/exec/obidos/ISBN%3D0596002920/cafeaulaitA/ |
+----------------------------------+---------------------------------+
| Read Cafe au Lait for Java News: http://www.cafeaulait.org/ |
| Read Cafe con Leche for XML News: http://www.cafeconleche.org/ |
+----------------------------------+---------------------------------+
|