Pregunta

Quiero validar un XML a través de XSD. Debo mencionar que mi XSD funciona bien, excepto Esta sola pieza:

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

Hice una clase de envoltorio PHP para validar esto contra un XML y, en su núcleo, está haciendo esto:

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

El problema es que, incluso en <some_element></some_element> o <some_element>[100_chars_here]</some_element>, valida (no recibo errores), y me gustaría tener una longitud mínima de contenido de 50 para ese elemento.

¿Hay un error en alguna parte? ¿Que me estoy perdiendo aqui? Funciona con patrones regex en XSD, pero no me gustaría usarlos.

Estoy usando PHP 5.3.5 con libxml 2.7.7 en Winxp.

¿Fue útil?

Solución

A primera vista, parece un error, pero aquí no hay suficiente información para decir eso con certeza.

¿Ha intentado ejecutar la validación con un procesador de esquema diferente? Ese debería ser su primer paso si se sospecha un error, ya que es probable que lo confirme de una forma u otra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top