OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: [xml-dev] Can XML Schemas do this?

[ Lists Home | Date Index | Thread Index ]

From: "Brian Burridge" <maillist@burridge.net>

> I have an xml document, where we want elements to be able to appear in
> any order. Some are required, others aren't. And in many cases if you
> have tag A then you don't need tag B, and vice versa.
> Problem is, I need to use the ALL tag and have choices and groups within
> it, but you can't.

If you have choices and groups, then how can you need the ALL tag?
If you really need the strong constraints, you may have to just make an
enormous content model.

Rick Jelliffe?

P.S. If you want to do this kind of thing using Schematron (or some mix
of XML Schemas and Schematron) you can use the following idioms

<rule context="myElement">
    <assert test="count(x) + count(y) + count(z) = count(*)">
        myElement can only contain the elements x,y,z <!-- n.b. in any order-->
    <assert test="x">
        myElement must contain at least one x  <!-- n.b. anywhere -->
    <assert test="count(y)=1">
        myElement must contain a single y <!-- n.b. anywhere -->
    <assert test="count(z) = count(z[previous-sibling::y])">
        a z element can only follow a y 

Grammars allow exquisite modelling of sequence, at the cost that
they generally are weak when sequence is only occasionally
important in a content model. XPath-based constraint languages 
(such as Schematron) are strong for that, but are weaker (or, at least,
more verbose) when elements re-appear in content models with different

However, complex content models are usually either a sign of a missing
element, or that there is some simple constraint required that cannot
be well expressed by a regular expression.  In the latter case, it is
better engineering to express the constraint more directly, using explicit
rules rather than simulate them using a grammar.


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS