2

我已经弄清楚如何使用此代码在 PHP 中使用 XSD 模式验证 XML 文件,但似乎处理是使用 XSD 1.0 版完成的。

$dom = new DOMDocument();
$dom->loadXML($xmlString);

$isValid = $dom->schemaValidate($xsdFile);

就我而言,我需要将 XSD 文件视为 1.1 版。主要原因是我想使用:

<xs:all>
   <xs:element type="xs:string" name="br" minOccurs="0" maxOccurs="unbounded"/>
   <xs:element type="linkType" name="link" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>

注意maxOccurs="unbounded"which 只能在<xs:all>1.1 版本内部使用。在 1.0 版本中,maxOccurs只能是 0 或 1。

PHP 失败并出现一般错误:

Warning: DOMDocument::schemaValidate(): Invalid Schema
4

1 回答 1

2

DOMDocument::schemaValidate 使用 Libxml。Libxml 不支持 XSD 1.1。

于 2017-05-31T11:22:06.503 回答