根据xsd模式验证xml - 没有匹配的全局声明

时间:2014-10-29 09:51:29

标签: xml xsd xml-namespaces

我在验证XML文件时遇到了麻烦。错误消息是“元素'{some_namespace} contact':没有可用于验证根的匹配全局声明。”

我确实知道命名空间一定有问题,但经过数小时的战斗后,我无法使其工作(验证)。

我希望你能帮助我;也许有一个我一直都缺少的蠢事(我对XML / XSD主题很陌生)。

我的XML

   <?xml version="1.0" encoding="utf-8" ?>
   <abc:contact xmlns:abc="some_namespace">
     <session>d22737b4aad7b641eea7c85e7294426b84b73713</session>
     <id>23372455488</id>
   </abc:contact>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:targetNamespace="some_namespace">
  <xsd:element name="contact">
    <xsd:complexType>
      <xsd:all>
        <xsd:element name="session" type="xsd:string"/>
        <xsd:element name="id" type="xsd:integer"/>
      </xsd:all>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

要验证我使用xmllint(控制台),NPP + XML工具和PHP(DOMDocument :: schemaValidate) - 都具有相同的结果。

1 个答案:

答案 0 :(得分:1)

在架构文档中,替换

xmlns:targetNamespace="some_namespace"

targetNamespace="some_namespace"

(使用targetNamespace元素上的schema属性标识模式文档的目标名称空间,而不是通过将魔术名称空间前缀绑定到目标名称空间。)