2012-01-10 15 views
0

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.5libxml 2.7.7をWinXPで使用しています。

答えて

0

それはバグのように見えますが、確かにそれを言うには十分な情報がありません。

異なるスキーマプロセッサで検証を実行しようとしましたか?バグが疑われる場合は、それが一方的に確認される可能性があるため、最初のステップになるはずです。

+0

ええと、これは考えていません。助言がありますか?私はXMLPadかXercesをチェックします。 – nevvermind

+0

ええ、libxml2 2.7.8のxmllintをコマンドラインで使用すると、検証に失敗します。そうなった正しい方向に私を指してくれてありがとう。 – nevvermind

関連する問題