Xsd minlength -валидация через PHP Domdocument :: SchemaValidatesource ()
-
26-10-2019 - |
Вопрос
Я хочу проверить XML через XSD. Я должен упомянуть, что мой XSD работает нормально, кроме этот один кусок:
<xs:element name="some_element">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Я сделал класс PHP обертки, чтобы проверить это против XML, и, по сути, он делает это:
$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.
Решение
На первый взгляд, это похоже на ошибку, но здесь недостаточно, чтобы сказать это с какой -либо уверенностью.
Вы пробовали запустить проверку с другим процессором схемы? Это должен быть ваш первый шаг, если подозревается ошибка, так как она, вероятно, подтвердит ее так или иначе.