【问题标题】:XSD minLength validation through PHP's DOMDocument::schemaValidateSource()通过 PHP 的 DOMDocument::schemaValidateSource() 验证 XSD minLength
【发布时间】: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();

问题是,即使在 &lt;some_element&gt;&lt;/some_element&gt; 或 &lt;some_element&gt;[100_chars_here]&lt;/some_element&gt; 上,它也会验证(我没有收到错误),我希望该元素的最小内容长度为 50。

某处有错误吗?我在这里想念什么?它适用于 XSD 中的正则表达式模式,但我不想使用它们。

我在 WinXP 上使用 PHP 5.3.5 和 libxml 2.7.7。

【问题讨论】:

    标签: php xml xsd xsd-validation


    【解决方案1】:

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

    您是否尝试过使用不同的架构处理器运行验证?如果怀疑存在错误,这应该是您的第一步,因为它很可能以一种或另一种方式确认它。

    【讨论】:

    • 嗯,没想到这个。有什么建议么?我会检查 XMLPad 或 Xerces。
    • 是的,在命令行中使用 libxml2 2.7.8 的 xmllint,验证失败;正如应该的那样。感谢您为我指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    相关资源
    最近更新 更多