[Home] [By Thread] [By Date] [Recent Entries]
Hi Rick,
Le vendredi 20 octobre 2006 à 18:00 +1000, Rick Jelliffe a écrit :
> You might try
> <xsd:all>
> <xsd:element name="a">...</xsd:element>
> <xsd:element name="b">...</xsd:element>
> <xsd:element name="c">...</xsd:element>
> <xsd:element name="d">...</xsd:element>
> <xsd:any namespace="##any" processContents="skip" />
> </xsd:all>
>
> If that doesn't work (I presume it doesn't)
No, it doesn't: xs:any isn't allowed within xs:all :) ...
> you could try unfolding it
> to give every
> permutation. Or just do something like the following
>
> <xsd:choice maxOccurs="unbounded">
> <xsd:element name="a">...</xsd:element>
> <xsd:element name="b">...</xsd:element>
> <xsd:element name="c">...</xsd:element>
> <xsd:element name="d">...</xsd:element>
> <xsd:any namespace="##any" processContents="skip" />
> </xsd:choice>
This is violating the UPS rule and doesn't work either...
Instead of that, you need to use xs:any with processContents set to
"lax" so that validation is applied only yo elements that are defined:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EleParent">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##any" processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="a"/>
<xs:element name="b"/>
<xs:element name="c"/>
<xs:element name="d"/>
</xs:schema>
> then use a Schematron schema to enforce the single rule
>
> <sch:rule context="whatever">
> <sch:assert test="count(a)=1">There should be one a</sch:assert>
> <sch:assert test="count(b)=1">There should be one b</sch:assert>
> <sch:assert test="count(c)=1">There should be one c</sch:assert>
> <sch:assert test="count(d)=1">There should be one d</sch:assert>
> </sch:rule>
This is still needed with the schema that I am proposing, and in
addition, you might want to check that <EleParent/> isn't included
within <EleParent/> (which is allowed by this schema) and write:
<sch:report test="EleParent">EleParent shouldn't be included
there!</sch:assert>
Of course, all that becomes simpler if you only allow elements from
foreign namespaces.
Hope this helps.
Eric
--
GPG-PGP: 2A528005
Le premier annuaire des apiculteurs 100% XML!
http://apiculteurs.info/
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
Ceci est une partie de message=?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |

Cart



