2017-09-14 31 views
1

XMLファイルがあります。私はCDAスキーマインフラストラクチャを使用して検証しようとしています。XML - XSD検証エラー:検証ルートに一致するグローバル宣言がありません

$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によって提供されるエラーメッセージのようなある:

Error 1845: Line: 1 Col: 0: Element '{urn:hl7-org:v3}ClinicalDocument': No matching global declaration available for the validation root.

私は見ましたこのエラーメッセージの他の例が現れています。私の検索では15種類の完全に矛盾するものを意味する非常にあいまいなエラーですが、XMLヘッダーやヘッダーの間違いに絞っていますXSDのために。 PHPで間違って読み込んだり、検証したりしているとは思えませんが、間違いかもしれません。

私は使用しているXML文書のXSDバリデータとしてこのファイル(およびそれに含まれるすべてのファイル)を使用するように指示されています。 XSDファイルをサーバーにアップロードし、domdocument schemavalidateを使用してそれらを指している)、またはXMLファイルのヘッダーが間違っている(おそらく、標準に従って正しく機能するテストケースが提供されているため)間違っている(間違ったものを手に入れたかもしれない)

ご協力いただきありがとうございます!

答えて

0

私は自分の質問に答えるはずですが、誰かが同じ問題に遭遇した場合にはここに残しておきます。

もう少しこれを分析した後、私はCDA XSDの異なるバージョンの周りを見回した - とファイル(CDA_SDTC.xsd)に含まれる1つを見つけることになった次の行を含む:

<?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であり、決定的に、このファイルは、私が実際にXSDの処理を開始するために必要な型宣言であるライン

<xs:element name="ClinicalDocument" type="POCD_MT000040.ClinicalDocument"/> 

を含みます。これで、この新しいCDA_SDTC.xsdファイルと完全に一致していることを確認します(そうしないと妥当性をチェックしません)。

関連する問題