Domanda

Voglio convalidare un XML tramite XSD. Devo dire che il mio XSD funziona bene, tranne questo pezzo:

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

Ho fatto una classe wrapper PHP per convalidare questa contro un XML e, al cuore di essa la, che sta facendo questo:

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

Il problema è che, anche su <some_element></some_element> o <some_element>[100_chars_here]</some_element>, convalida (ottengo nessun errore), e vorrei avere una lunghezza contenuto minimo del 50 per quell'elemento.

C'è una qualche bug? Che cosa mi manca qui? Funziona con i modelli regex in XSD, ma non vorrei usare quelli.

Sto usando PHP 5.3.5 con libxml 2.7.7 su WinXP.

È stato utile?

Soluzione

Sulla faccia di esso, sembra un bug, ma non c'è abbastanza informazioni qui per dire che con certezza.

Hai provato in esecuzione la convalida con un diverso processore di schemi? Questo dovrebbe essere il primo passo se si sospetta un bug, in quanto è probabile che confermarlo in un modo o l'altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top