Question

Je veux valider un XML par le biais XSD. Je dois mentionner que mon XSD fonctionne très bien, sauf ce une pièce:

<xs:element name="some_element">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:minLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

J'ai fait une classe PHP wrapper pour valider cette contre un XML et, à ce noyau de, il fait cela:

$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();

Le problème est que, même sur <some_element></some_element> ou <some_element>[100_chars_here]</some_element>, il valide (je reçois pas d'erreur), et je voudrais avoir une longueur de contenu minimum de 50 pour cet élément.

Yat-il un endroit de bug? Qu'est-ce que j'oublie ici? Il fonctionne avec des motifs regex dans XSD, mais je ne voudrais pas utiliser celles-ci.

J'utilise PHP 5.3.5 avec libxml 2.7.7 sur Windows XP.

Était-ce utile?

La solution

Sur le visage de celui-ci, il ressemble à un bug, mais il n'y a pas assez d'informations ici pour le dire avec certitude.

Avez-vous essayé de lancer la validation avec un processeur de schéma différent? Cela devrait être votre première étape si un bug est suspectée, car il est susceptible de le confirmer d'une façon ou l'autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top