cvc-elt.1:找不到元素'Root'的声明

时间:2015-08-31 01:52:41

标签: xml validation xsd-validation

XSD示例

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string" />
      <xs:element name="name" type="xs:string" />
      <xs:element name="address" type="xs:string" />  
    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" />
  </xs:complexType>
</xs:element>
</xs:schema>

XML响应示例

<?xml version="1.0" encoding="utf-8"?>
<shiporder orderid="str1234">
  <orderperson>str1234</orderperson>
  <name>str1234</name>
  <address>str1234</address>
</shiporder>

架构验证Dom源

http://hostcode.sourceforge.net/view/3307

架构验证StreamSource

http://hostcode.sourceforge.net/view/3306

验证为Stream源工作正常。使用DomSource验证时,我遇到了错误。 cvc-elt.1:找不到元素'shiporder'的声明。

这种行为的原因是什么。?

My main question why validator.validate(new DOMSource(node));  does not work in shema validation. What is the reason ?

1 个答案:

答案 0 :(得分:1)

在创建DOM结构期间,您需要明确指定您的DOM元素不属于任何名称空间。您可以通过调用org.w3c.dom.Document#createElementNS而不是org.w3c.dom.Document#createElement来执行此操作,其中namespaceURI的值为null

示例:document.createElementNS(null, qualifiedName)