It turned out, based on some private e-mail with Daniel
that what confused him was the spec's wording in describing how well-formedness
works: that each element must be inside one other element, and (I
believe) he thought he had a problem with the name element being inside
both the chapters and subsection elements.
He was confused by a sloppiness in XML terminology that
has been around since SGML days but was unfortunately made official in the W3C
Schema spec[1]: while XML 1.0 [2] (and SGML) carefully distinguished between
element types and elements (with the object-oriented analogies being classes and
instances), XSD replaced the term "element type" with "element" and
"element" with "element item." "Element item," however, is just more of the
abstruse vocabulary of the XSD Part 1 spec, and no one actually uses the phrase.
(Try a Google search on "element item" and see what comes up.)
Now people refer to both a particular class of elements
and a specific element instance as an "element," e.g. "DocBook's para element is similar to XHTML's p
element" and "<p>this</p> is a p element." This won't confuse anyone
who's been using XML long enough, but it's still sloppy terminology, and makes
explanations to beginners and precise discussions among experts difficult. I
asked about this in comments on an early draft of the XSD spec five years ago
[3] and never heard a good explanation for why it was done. I just looked
in the Infoset spec to see if that clarified at all; it never uses the term
"element item," but it does say [4] that "There is an element information
item for each element appearing in the XML document." AAAAHHHHHH! (This calls
for my old sig...)
Bob
DuCharme www.snee.com/bob
<bob@ snee.com> "The elements be kind to thee, and make
thy spirits all of comfort!" Anthony and Cleopatra, III
ii
Adding to the point that Bob DuCharme made earlier: In XML Schema, it is
not illegal to reference or declare (as a local declaration) an element within
multiple "content models" (an example of a content model would be your
<chapters> element and its subelements and any attributes). One approach
within XML Schema would be to declare a global element <name> and
reference it in the multiple content models (IMHO, this is the best approach
versus re-declaring the element multiple times as a local declaration).
If, for some reason, the format of a global element <name> is
different within the <subsection> content model than it is within the
<chapters> content model (for example, a subsection name may be max 30
characters while a chapter name may be max 20 characters), one would could
reference the global element <name> within the <chapters> content
model, and declare a local element <name> within the <subsection>
content model - or vice versa.
Kind Regards,
Joe Chiusano
Booz Allen Hamilton
Strategy and Technology Consultants to
the World
Hi all,
According to the XML specification, I believe the
following nesting structure to be invalid in XML. However, rxp on my
Windows machine issues no warnings to me when parsed. Is this in fact
invalid?
<?xml
version="1.1"?> <library> <book> <title>Book
Name</title> <chapters> <name>first
chapter</name> <name>second</name> ... <name>last</name> <subsection> <name>I
expect this to be illegal, since name is defined in chapters, and also somewhere else in its content, namely
subsection.</name> </subsection> </chapters>
</book> </library>
Thanks very much,
Dan
|