簡體   English   中英

XML-XSD驗證錯誤:驗證根無匹配的全局聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM