- From: Burak Emir <Burak.Emir@epfl.ch>
- Date: Wed, 18 Aug 2004 11:27:29 +0200
- To: Mik Lernout <mik@futurestreet.org>
- CC: xmlschema-dev@w3.org
Mik Lernout wrote:
>
> Er... correct me if I am wrong but this prefix-in-attributes-thingie
> is not really related to XMLSchema but rather to XML.
>
I don't see it that way. The XML-Namespaces Recommendation has a section
on "Applying namespaces to elements and attributes" which talks about
element and attribute names, as in <foo:bar baz:value="..."/>. It does
not talk on the use of namespaces (via prefixes) in content, which is
therefore special. XML Schema makes use of prefixes in a "special" way,
which makes implementation slightly harder.
> The basic idea is that in any location in an XML file there is always
> a namespace context: a mapping of prefixes to namespaces. The usage of
> this mapping in element names or in attribute names/values does not
> really matter. Even the actual value of the prefix is not really
> important, it is what namespace it represents in that specific spot of
> the XML file....
>
OK, seen as a stream of characters, you are probably right. However, I
like to think of XML in terms of a "core" Infoset (strictly less than
Infoset, namespace prefixes should not be part of it): An XML document
is a labelled tree, with labels being URI:name pairs. This simple view
works for most XML documents, however, for the above reasons, it does
not work for XML Schema - one has to remember the prefixes.
This dependence on prefixes has direct influence on how to design an XML
API... if you include prefix mappings in a tree model, it becomes larger
(every tree node needs to have the possibility to store prefix-URI
mappings).
cheers,
Burak
> Mik
>
> PS: You mentioned that you are working on schema validator, in which
> language is it and is it open source? I am also doing one in java and
> maybe we could merge some work...
>
I am writing a data binding tool for Scala, http://scala.epfl.ch. Surely
we can exchange some information (maybe the list is not the best place
for that, though). My design of Scala's XML API follows the above principle.
>
> Burak Emir wrote:
>
>>
>> Hello Volker,
>>
>> 1. which parser are you using? Is it possible that is has
>> namespace-support disabled?
>>
>> 2. [unsure] does it work when you remove the "plem:" prefix from the
>> schema (both in root and in the type="plem:" attribute) ?
>>
>> I am implementing a schema validator myself, and I stubbed my toe on
>> a similar thing. The fact is, common sense would suggest namespaces
>> make element names unique by adding the URI to them. It would then be
>> ok to forget the namespace prefixes, representing element names as
>> {uri:name}.
>>
>> Unfortunately, in XML schema this is not the entire truth - one has
>> to remember also the prefixes, because they appear in attribute
>> values. I consider this a real shortcoming of the XML schema
>> definition language - it is counter-intuitive, because one is forced
>> to mix the structure of the definition (a declaration xmlns:foo="..."
>> in the root element <schema ...>) with the structure of the instances
>> (as in type="foo:...").
>>
>> Since there is no element "plem:...", it could be that your software
>> just "forgot" about that prefix, and defaulted it to "" - in any
>> case, a bug.
>>
>> cheers,
>> Burak
>
Received on Wednesday, 18 August 2004 09:27:33 UTC