通过PHP的DOMDocument :: schemaValidateSource()进行XSD minLength验证

时间:2012-01-10 13:35:23

标签: php xml xsd xsd-validation

我想通过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.5libxml 2.7.7

1 个答案:

答案 0 :(得分:0)

从表面上看,它看起来像一个错误,但这里没有足够的信息可以肯定地说出来。

您是否尝试使用其他架构处理器运行验证?如果怀疑有错误,这应该是你的第一步,因为它可能以某种方式确认它。