Reputation: 1265
If i use <xs:any processContents="strict"/>
then how do I provide a schema for it?
message.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="messageNS"
elementFormDefault="qualified">
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element name="sender" type="xs:string"/>
<xs:element name="content">
<xs:complexType>
<xs:sequence>
<xs:any processContents="strict"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
content.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="contentNS"
elementFormDefault="qualified">
<xs:element name="text" type="xs:string" />
</xs:schema>
message.xml:
<?xml version="1.0"?>
<message xmlns="messageNS"
xmlns:c="contentNS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="messageNS message.xsd
contentNS content.xsd">
<sender>gfdgf</sender>
<content>
<c:text>asdsad</c:text>
</content>
</message>
If i try to validate message.xml i get the following error:
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'c:text'.
I am using standard Java validator: javax.xml.validation.Validator;
Upvotes: 1
Views: 1093
Reputation: 12817
Create a Schema
that is an aggregate of all the possible schema sources:
SchemaFactory f;
Source messageSource = // your message.xsd;
Source contentSource = // your content.xsd;
Schema schema = f.newSchema(messageSource, contentSurce);
Validator v = schema.newValidator();
Then use the Validator
as usual.
Upvotes: 1