我在验证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) - 都具有相同的结果。
答案 0 :(得分:1)
在架构文档中,替换
xmlns:targetNamespace="some_namespace"
与
targetNamespace="some_namespace"
(使用targetNamespace
元素上的schema
属性标识模式文档的目标名称空间,而不是通过将魔术名称空间前缀绑定到目标名称空间。)