【发布时间】:2017-09-14 18:04:44
【问题描述】:
我有一个 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 错误(也许我抓错了?)
感谢您提供的任何帮助!
【问题讨论】:
标签: php xml validation xsd