【发布时间】:2012-01-10 13:35:23
【问题描述】:
我想通过 XSD 验证 XML。 我必须提一下,我的 XSD 工作正常,除了这一块:
<xs:element name="some_element">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
我制作了一个包装 PHP 类来针对 XML 验证这一点,它的核心是这样做的:
$dom = new DOMDocument();
$dom->loadXML($xml);
// handle errors manually
set_error_handler(array($this, 'errorHandler'));
// validate
$isValid = $dom->schemaValidateSource($xsd);
// restore default error handler
restore_error_handler();
问题是,即使在 <some_element></some_element> 或 <some_element>[100_chars_here]</some_element> 上,它也会验证(我没有收到错误),我希望该元素的最小内容长度为 50。
某处有错误吗?我在这里想念什么?它适用于 XSD 中的正则表达式模式,但我不想使用它们。
我在 WinXP 上使用 PHP 5.3.5 和 libxml 2.7.7。
【问题讨论】:
标签: php xml xsd xsd-validation