繁体   English   中英

针对 PHP 中的 XSD 1.1 模式验证 XML

[英]Validate XML against XSD 1.1 schema in PHP

正如官方 PHP 文档所述:

DOMDocument::schemaValidate — 根据模式验证文档。 仅支持 XML 架构 1.0。

话虽如此,我有一个 XML Schema 1.1 文件,我需要验证我的 XML。 到目前为止,我对解决方案的搜索一无所获,从类似问题的答案来看,libxml 似乎只支持 1.0,所以在这种情况下,任何使用 libxml 的东西都可能不起作用。

编辑:有关额外信息,架构包含以下内容(仅对 XML 1.1 有效,不适用于 1.0):

  <xs:element name="placeholder_1">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="unbounded" minOccurs="0" name="placeholder_2" type="xs:string"/>
        <xs:element maxOccurs="unbounded" minOccurs="0" name="placeholder_3" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="placehoder_4" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="placeholder_5" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

您可以尝试如下所述,看看它是否有效?

将架构文件转换为字符串。

可以大致如下所述完成(可能是更好的方法)

$doc->load('schema.xsd');
$doc->save('schema.xml');
$xmlfile = file_get_contents('schema.xml');

然后使用DOMDocument::schemaValidateSource将字符串作为输入。

https://www.php.net/manual/en/domdocument.schemavalidatesource.php

根据给定字符串中定义的模式验证文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM