2014-10-29 56 views
1

我在驗證XML文件時遇到了麻煩。錯誤消息是「Element'{some_namespace} contact':沒有匹配的全局聲明可用於驗證根目錄。」驗證xml針對xsd模式 - 沒有匹配的全局聲明

我知道命名空間肯定有問題,但經過數小時的戰鬥後,我無法使其工作(驗證)。

我希望你能幫助我;也許我總是缺少一件愚蠢的東西(我對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(DOM文檔:: schemaValidate) - 全部用相同的結果。

回答

1

在你的架構文檔,更換

xmlns:targetNamespace="some_namespace" 

targetNamespace="some_namespace" 

(模式文檔使用schema元素的targetNamespace屬性標識的目標命名空間,而不是通過結合一個神奇的命名空間前綴到目標命名空間。)

+0

謝謝你,像一個魅力工作。 – Bartosz 2014-10-30 07:49:16

+1

這對我的情況沒有幫助。我在XSD Schema中有targetNamespace,但仍然出現此錯誤。我無法在XML中找到錯誤。我會創建我自己的問題... – 2016-11-23 10:54:30