[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xml-dev] IDs considered harmful or why keys might be better than IDs...
Hi Jonathan,
Jonathan Borden wrote:
> Eric van der Vlist wrote:
>
>>I have mixed feelings about this long discussion about XML IDs.
>>
>>On one hand, the concept of ID seems to be very useful and we obviously
>>need unique IDs to avoid ambiguity.
>>
>>OTH, can an ID for application X be exactly the same than an ID for
>>application Y? Can we be sure that their needs will be close enough to
>>guarantee that they will refer to the same "object" with the same scope?
>>
>
> An ID is the name of a subresource (fragment) that _the document asserts_.
> Applications are free to use these document defined names, or choose others.
Yes, and I have been provocative on purpose... This is, nevertheless,
not completely pointless and the fact to provide a "hardwired" IDs will
push many people who would otherwise have needed to be more creative
into using these IDs.
>
> Fragment identifiers of URIs are intended to be parsed according to media
> type (perhaps application/xml) and as such the idea that there is an "XML
> name" for a fragment of a document is a completely valid one, of course
> realizing that other applications may choose to name things in different
> ways. For example XSLT keys or XML Schema keys, the point being that if the
> HTTP server returns the document of media type application/xml, that the
> fragment identifier will have a consistent interpretation. It is important
> to start with this as a basis.
But, the basis that will be chosen will be more or less extensible.
Using "xml:id" is probably the less extensible basis (even less
extensible than DTD's IDs were).
{http://purl.org/xmlid}:id is hardly more extensible and the first
solution which IMO gives it some flexibility is James Clark's xml:idatt.
The keys which I was thinking of could follow the syntax defined by XSLT
and be defined either:
1) In the document:
<foo><xxx:key
name = qname
match = pattern
use = expression />
</foo>
2) Linked from the document:
<foo><xxx:key-ref
xlink:href="mykey.xml"
xlink:type="simple"/>
</foo>
3) Defined in the URL
In the first 2 cases, this would be the usual http://foo.xml#bar, but
http://foo.xml#key(http://mykey.xml,bar)
with the same tricks than XPointer is using to declare namespaces URIs
could be used to point on another key.
Eric (day dreaming)
> Jonathan
--
Rendez-vous à Paris pour le Forum XML.
http://www.technoforum.fr/Pages/forumXML01/index.html
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
http://xsltunit.org http://4xt.org http://examplotron.org
------------------------------------------------------------------------