![](/img/trans.png)
[英]XML validation: 'No matching global declaration available for the validation root' error
[英]XML - XSD validation error: No matching global declaration available for the validation root
我有一個XML文件,我正在嘗試使用CDA架構基礎結構進行驗證。
$domxml = new DOMdocument();
$domxml->load($fil);
if($domxml->SchemaValidate('filepath/cda/POCD_MT000040_SDTC.xsd')) {
//do stuff
} else {
print_recursive(libxml_get_errors())
}
我的XML文件具有以下標頭:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ccda.xsl"?>
<ClinicalDocument
xsi:schemaLocation="urn:hl7-org:v3
http://xreg2.nist.gov:8080/hitspValidation/schema/cdar2c32/infrastructure/cda/C32_CDA.xsd"
xmlns="urn:hl7-org:v3"
xmlns:sdtc="urn:hl7-org:sdtc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<realmCode code="US"/>
<typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040"/>
我的XSD文件具有以下標頭:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema targetNamespace="urn:hl7-org:v3"
xmlns:mif="urn:hl7-org:v3/mif"
xmlns="urn:hl7-org:v3"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns:sdtc="urn:hl7-org:sdtc">
libxml提供的錯誤消息是這樣的:
錯誤1845:行:1列:0:元素'{urn:hl7-org:v3} ClinicalDocument':沒有匹配的全局聲明可用於驗證根。
我查看了出現此錯誤消息的其他示例,這是一個非常模棱兩可的錯誤,在我的搜索中,這意味着大約15種不同的,完全矛盾的內容-但我將其縮小為標頭中的一個錯誤XML或XSD的標頭。 我認為我沒有在PHP中錯誤地加載或驗證它,但是我可能會誤會。
有人告訴我要使用此文件(以及其中包括的所有文件)作為我正在使用的XML文檔的XSD驗證器,所以我不確定是否做錯了(下載了XSD文件,上載它們到服務器,使用domdocument schemavalidate指向它們),或者我的XML文件頭錯誤(不太可能,因為正在向我提供按照其標准正確運行的測試用例),或者XSD錯誤(也許我抓錯了嗎?)
感謝您提供的任何幫助!
不知道我是否應該回答我自己的問題,但是如果有人遇到相同問題,我將其留在這里。
經過更多分析之后,我尋找了CDA XSD的不同版本-最終找到了一個包含以下行的文件(CDA_SDTC.xsd):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Bob Dolin (HL7 CDA TC) -->
<xs:schema targetNamespace="urn:hl7-org:v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sdtc="urn:hl7-org:sdtc" xmlns="urn:hl7-org:v3" xmlns:mif="urn:hl7-org:v3/mif"
elementFormDefault="qualified">
<xs:annotation>
<xs:documentation>Manually edited to add SDTC Schema Extension (authenticator/signatureText, legalAuthenticator/signatureText), 14 July 2013</xs:documentation>
<xs:documentation>Manually edited to add SDTC Schema Extensions, July 2012</xs:documentation>
</xs:annotation>
<xs:include schemaLocation="POCD_MT000040_SDTC.xsd"/>
<xs:element name="ClinicalDocument" type="POCD_MT000040.ClinicalDocument"/>
</xs:schema>
其中包括的文件(POCD_MT000040_SDTC.xsd)是我粘貼上面標題的XSD,並且至關重要的是,此文件包括以下行
<xs:element name="ClinicalDocument" type="POCD_MT000040.ClinicalDocument"/>
這是我實際上開始處理XSD所需的類型聲明。 現在,它可以針對此新CDA_SDTC.xsd文件進行完美驗證(並且在不應該驗證的時候也不進行驗證!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.