繁体   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