[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] XML Schema Checklist
- From: Michael Sokolov <sokolov@ifactory.com>
- To: "Costello, Roger L." <costello@mitre.org>
- Date: Sat, 20 Oct 2012 11:07:06 -0400
On 10/20/2012 7:19 AM, Costello, Roger L. wrote:
> Hi Folks,
>
> Before publishing your XML Schemas, check that they contains these 4 things:
>
> 1. xml:lang
> 2. xml:id
> 3. pattern facets
> 4. user-defined entities
>
> More ... http://www.xfront.com/XML-Schema-Checklist.pdf
>
> Comments welcome.
If you are going to advise people to use xml:id for identifiers, you
should mention some of its practical limitations:
1) it requires the use of XML namespaces, which people have sometimes
found confusing
2) depending on the processing environment, xs:ID formatting
restrictions may or may not be imposed. If they are, ids won't be able
to be numeric, or be formed as paths containing "/", for example. You
may see this an advantage, but there are many cases where identifiers
are in fact formed like that.
And if you rely on the restriction, but the processor doesn't enforce
it, trouble may ensue.
3) Again, depending on the processing environment, the status of the
attribute as an "id" in an XSLT processor, or xinclude is up for grabs.
Historically, in my experience, there has been a problem with incomplete
implementation by tool sets (see eg
https://issues.apache.org/jira/browse/XERCESJ-1113 and many posts
complaining about similar problems). My recommendation is to use "id"
or "uri", or "doi" or "isbn" or something else domain-specific, and not
"xml:id." Even if the situation has changed with more recent parsers
(has it?), what xml:id buys you, is in my opinion not worth the xs:ID
limitation and the need to worry about getting the right tools lined up
just right. If an id key is required in XSLT, for example, you can
always define one yourself, rather than relying on the built-in id()
function.
I'm sure someone more fully steeped in xml:id lore will explain how
wrong-headed this is - please do!
-Mike
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]