XSDを使用してXMLを検証する必要があります。 私は除いて、この一枚、私のXSDが正常に動作することを言及する必要があります:PHPのDOMDocument :: schemaValidateSource()を使用したXSD minLengthの検証
<xs:element name="some_element">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
私はXMLに対してこれを検証するためのラッパーPHPクラスを作って、それがコアだ時、それはこれをやっている:
$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の正規表現パターンで動作しますが、それらを使用したくありません。
私はPHP 5.3.5
とlibxml 2.7.7
をWinXPで使用しています。
ええと、これは考えていません。助言がありますか?私はXMLPadかXercesをチェックします。 – nevvermind
ええ、libxml2 2.7.8のxmllintをコマンドラインで使用すると、検証に失敗します。そうなった正しい方向に私を指してくれてありがとう。 – nevvermind