我在
下面有一条xml消息<web:Add xmlns:web="http://my/web/">
<web:a>1</web:a>
<web:b>2</web:b>
</web:Add>
这是我的架构
<?xml version="1.0" encoding="utf-8"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" >
<s:element name="Add">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
这是我的代码
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
File f = new File("C:\\temp\\my.xsd");
Schema schema = factory.newSchema(f);
Validator validator = schema.newValidator();
Document requestDoc = getDocumentFromString(request,true);
validator.validate(new DOMSource(requestDoc));
为什么这会失败 cvc-complex-type.2.4.a:从元素'web:a'开始发现无效内容。预计会有一个“{a}”。
如果我修改消息并为这样的元素取前缀oul
<web:Add xmlns:web="http://my/web/">
<a>1</a>
<b>2</b>
</web:Add>
然后一切正常。为什么?这两个消息都是提供的架构的有效xml。 任何帮助表示赞赏
答案 0 :(得分:2)
查看架构元素的targetNamespace
和elementFormDefault
属性。