@Nexorsis

Какие есть способы программно валидировать XML по DTD кроме как с помощью libxml?

Это валидный документ, но утилита xmllint его не пропустит с ошибкой: model offer is not determenist. Это из-за name, который встречается в нескольких альтернативных вариантах схемы. Насколько я понял (может я ошибаюсь) это особенность libxml. Можно ли программно в php отвалидировать xml без DOMDocument::validate() и libxmgeterrors ?
<!DOCTYPE offers [
<!ELEMENT offers (offer+)>
<!ELEMENT offer ((name, cost) | (id?, name, tag, desc?) | (prefix, title, desc?))>
<!ELEMENT name (#PCDATA)>
<!ELEMENT cost (#PCDATA)>
<!ELEMENT tag (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT prefix (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT id (#PCDATA)>
] >

<offers>
    <offer>
        <name>Name1</name>
        <cost>123</cost>
    </offer> 
    <offer>
        <id>123</id>
        <name>Name2</name>
        <tag>sale</tag>
        <desc>Some Description</desc>
    </offer>
    <offer>
        <prefix>Book</prefix>
        <title>Little Pony</title>
    </offer>    
</offers>
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
Machez
@Machez
Бу!
У меня такая же проблема Как осуществить на PHP валидацию XML по собственному DTD?

Я гугл сломал пока искал ответ. В итоге я пришел к следующему умозаключению: т.к. DTD считается устаревшим, то для валидации лучше всего потратить время и самому разработать XSD.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы