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


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xml-dev] Query regarding attribute grouping in XML Schema


> > <ADDRESS doorno="" streetname=""/>
> >
> > I have this requirement. I need to specify in the
> > schema that doorno and street name must occur together
> > or both should not occur at all. I can't have doorno
> > without streetname and streetname without doorno. I'm
> > unable to do this in the XML schema. I tried doing
> > this using XML Spy v3.5. Could someone please help
> > out?
> You would have to use an annotation with W3C XML Schemas.  It's trivially
> easy in RELAX NG:

As Eric pointed out this yesterday there is also another approach using
substituitionGroups. However, this solution requires you to use the xsi:type
in the instance document to specify which type you will use (the one with no
attributes or the type with two attributes).

> <element name="ADDRESS">
>   <optional>
>     <attribute name="doorno"/>
>     <attribute name="streetname"/>
>   </optional>
> </element>

I have no experience in RELAX-NG but this look like a good and simple way of
specifying the above constaint. But if this is how you specify that an
element should either have no attributes or both then how would you specify
that element ADDRESS can optionally have attributes doorno and streetname but
without the connection between the attributes?
Would that be something like:

<element name="ADDRESS">
    <attribute name="doorno"/>
    <attribute name="streetname"/>