Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

XSD newbie: Element based choice.

1 view
Skip to first unread message

BLUE

unread,
Mar 23, 2007, 5:30:00 PM3/23/07
to
Suppose I have an XML file like this:

<type>...</type>
<positionID>...</positionID>
<category>...</category>


I want to specify in my XML Schema that:

- if "type" is "One" I must have
<positionID>A_STRING</positionID>

- if "type" is "Two" I must have
<positionID>
<zoneID>A_POSITIVE_NUM</zoneID>
<sectorID>A_POSITIVE_NUM</sectorID>
<cellID>A_POSITIVE_NUM</cellID>
</positionID>

- if "type" is "Three" I must have
no category or empty category

- if "type" is "Four" I must have
the same thing as for case "Two" and "Three"


If this is not possible can I check this from my application or it would be
a semantic error and it would be better to separate the two schemas?


Thank you for any help!
Luigi.


John Saunders

unread,
Mar 23, 2007, 7:15:40 PM3/23/07
to
"BLUE" <blue> wrote in message
news:460446d5$0$37193$4faf...@reader3.news.tin.it...

> Suppose I have an XML file like this:
>
> <type>...</type>
> <positionID>...</positionID>
> <category>...</category>

That's not a well-formed XML document. You need root element around all of
those.

> I want to specify in my XML Schema that:
>
> - if "type" is "One" I must have
> <positionID>A_STRING</positionID>
>
> - if "type" is "Two" I must have
> <positionID>
> <zoneID>A_POSITIVE_NUM</zoneID>
> <sectorID>A_POSITIVE_NUM</sectorID>
> <cellID>A_POSITIVE_NUM</cellID>
> </positionID>
>
> - if "type" is "Three" I must have
> no category or empty category
>
> - if "type" is "Four" I must have
> the same thing as for case "Two" and "Three"
>
>
> If this is not possible can I check this from my application or it would
> be a semantic error and it would be better to separate the two schemas?

XML Schema cannot describe this situation. You'll have to check yourself.

John


Priya Lakshminarayanan

unread,
Mar 29, 2007, 2:29:16 PM3/29/07
to
These constraints are called co-occurrence constraints and cannot be
specified using XML Schema. You can embed Schematron rules in your schema to
specify the same.
For more information on Schematron, check the following:
http://xml.ascc.net/resource/schematron/
http://www.xml.com/pub/a/2000/11/22/schematron.html

Thanks,
Priya

"BLUE" <blue> wrote in message
news:460446d5$0$37193$4faf...@reader3.news.tin.it...

0 new messages