[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: combine
>In other words, deriving from Address changes what is allowed by a reference >to Address. This is true, but can be easily mimicked as below. Basically, we only have to introduce another named pattern. <grammar> <start> <element name="dmy"> <element name="uk"> <ref name="UKAddress"/> </element> <element name="us"> <ref name="USAddress"/> </element> </element> </start> <define name="AddressForReference"> <ref name="Address"> </define> <define name="AddressForReference" combine="choice"> <ref name="USAddress"> </define> <define name="AddressForReference" combine="choice"> <ref name="UKAddress"> </define> <define name="Address"> <element name="name"><anyString/></element> <element name="street"><anyString/></element> <element name="city"><anyString/></element> </define> <define name="USAddress"> <ref name="Address"/> <element name="state"><anyString/></element> <element name="zip"><anyString/></element> </define> <define name="UKAddress"> <ref name="Address"/> <element name="postcode"><anyString/></element> <attribute name="exportCode"><anyString/></attribute> </define> </grammar> >allow a postCode. Derivation by extension in XML Schema supports this. In >RELAX NG, combine="group" provides similar functionality. You have overshadowed the original definition of "Address"; in other words, postCode has become mandatory in your example. I think that this is very different from what people would expect. ><grammar> > ><include href="invoice.rng"/> > ><define name="Address" combine="group"> > <element name="postCode"> > <text/> > </element> ></define> > ></grammar> ---- MURATA Makoto mura034@attglobal.net
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC