Xml XSD如何验证<;任何>;使用模式?
如果我使用Xml XSD如何验证<;任何>;使用模式?,xml,validation,xsd,any,Xml,Validation,Xsd,Any,如果我使用,那么如何为它提供模式 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"&g
,那么如何为它提供模式
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>
gfdgf
asdsad
如果尝试验证message.xml,则会出现以下错误:
cvc复杂类型.2.4.c:匹配的通配符是严格的,但找不到元素“c:text”的声明
我正在使用标准Java验证器:javax.xml.validation.validator 创建一个
模式
,它是所有可能的模式源的集合:
SchemaFactory f;
Source messageSource = // your message.xsd;
Source contentSource = // your content.xsd;
Schema schema = f.newSchema(messageSource, contentSurce);
Validator v = schema.newValidator();
然后像往常一样使用
验证器。您所拥有的看起来是正确的。我怀疑您可能存在与
无关的XSD位置问题。您确定在日志中没有发现XSD文件的早期警告吗?