- From: Mukul Gandhi <gandhi.mukul@gmail.com>
- Date: Sat, 31 Oct 2020 17:18:31 +0530
- To: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
- Message-ID: <CABuuzNPa7J9JDe=XG9KLbDaJg2fG-EOGkhYmx_YZDfVq-qzDdw@mail.gmail.com>
Hi all,
Please look at following XSD validation use case, and my doubts
mentioned after that.
My XML instance document is following (that I wish to validate with XSD),
x.xml
<?xml version="1.0"?>
<X>
<a>
<p/>
</a>
<a>
<q/>
</a>
</X>
I'm validating the above cited XML instance document, with following XSD
document,
x.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="x1.xsd"/>
<xs:element name="X">
<xs:complexType>
<xs:sequence>
<xs:element name="a" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Following is XSD document x1.xsd, that's included by above cited XSD
document,
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="p"/>
<xs:element name="q"/>
</xs:schema>
When I do an XSD validation as stated above, the XML validation outcome is
reported as valid. This is ok with me.
Below are my doubts and concerns,
Due to an xs:include that I'm using, within the XSD document x.xsd, the
valid XML instance root elements can be X, p or q. But, I wish that, the
XML schema for my example above, should prohibit the XML instances root
elements p or q. I wish that, only an XML instance element X should be a
valid XML instance root. Is this achievable, with the current XSD 1.0 or
1.1 languages? If not, I'd like to suggest following changes to my XSD
document x.xsd,
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="x1.xsd"/>
<xs:root>
<xs:assert test="not(self::p | self::q)"/>
</xs:root>
<xs:element name="X">
<xs:complexType>
<xs:sequence>
<xs:element name="a" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
i.e, I wish the following change to XSD language,
We should be able to specify an optional xs:root element as child of
xs:schema element, that can mention XML schema validation constraints for
the XML instance root element. With the above XSD document example, xs:root
element specifies that, XML elements p and q cannot be the root XML
elements of the XML document that's validated.
Any thoughts please?
--
Regards,
Mukul Gandhi
Received on Saturday, 31 October 2020 11:48:46 UTC