[
Lists Home |
Date Index |
Thread Index
]
Elements don't have kinds or types, they just have names. The most that
can be said of the two <a> instances is that they have the same name.
How elements are interpreted is up to the application. Different
applications can process the same elements in different ways.
When Manes wrote that the two instances were "obviously" not the same
"kind", she was drawing on her intuition that they weren't the same kind
because they didn't have the same kind of content, and recursively. But
"kind" of content can be elusive. Do these have the same kind of content?
<a>pi</a>
<a>2</a>
One application might say no, one is a string and the other is a number,
another might say no, one is real while the other is an integer, another
might say yes, both are numeric values, and another might say yes, they
are both text.
Content models just confuse the issue, as they are the point of view of
a particular application, a validator. Different kinds of validators
have different points of view: an element may have no content model
(Schematron), a single content model (XML Schema) or many different
content models (RELAX NG).
"Kind", as used in this thread, is just another word for "type". XQuery
has types but XML does not.
Bob Foster
http://xmlbuddy.com/
Elliotte Harold wrote:
> Anne Thomas Manes wrote:
>
>> If you go with the reasoning that elements with no namespace are
>> elements in the namespace with no name, then the following two
>> elements would be the same kind of element, when obviously they are
>> not:
>>
>> <a>pi</a>
>>
>> <a>
>> <b>3.14156</b>
>> </a>
>
>
> No, I think they are the same kind of element; the element that has the
> content model (if there's a DTD) something like this:
>
> <!ELEMENT a (#PCDATA | b)>
>
> Anything designed to process arbitrary a elements had better be ready to
> handle both cases. This isn't uncommon. Many elements in many XML
> vocabularies can have different content models in different places.
>
> The tricky bit here that I've struggled with while writing this is what
> does it mean for two elements to be the same. In this context, that
> we're talking about the element "kind" rather than the element instance.
> Otherwise the first element <a>1</a> is not the same as the second
> element <a>1</a>. At the same time, I want to avoid the word "type"
> which has just way too many connotations. However, I don't really want
> to say that the names are the same either, since that doesn't really
> reflect how namespaces are used in practice.
>
> I'm still not perfectly happy with my language here. Improvements are
> solicited and appreciated. The difficulty we have explaining this stuff
> clearly and correctly I think reflects some underlying problems in the
> whole namespace model.
>
> Maybe this isn't even a namespace problem. Ignoring namespaces and going
> back to XML 1.0, can we say that two FOO elements share some part of
> their nature? Maybe not, Clearly an HTML table is not a furniture table,
> but isn't this exactly the problem namespaces were supposed to solve?
> i.e. a {http://www.w3.org/199/xhtml}table is always one kind of thing,
> never some other kind of thing?
>
|