Проверка DTD перед преобразованием XSLT

Мне нужно написать XSLT для преобразования XML-файла в другой XML-файл. Исходный входной файл должен быть верным по отношению к DTD. Есть ли способ, с помощью которого XSLT может проверить входной XML-файл на соответствие DTD перед его преобразованием? Также отклоните входной файл, если он не соответствует DTD.

Кроме того, я буду запускать XSLT в таком инструменте, как Oxygen XML Editor.

Заранее спасибо. Дж.К.


person Jay    schedule 25.10.2011    source источник
comment
Нет причин голосовать за закрытие этого сообщения, не относящегося к теме.   -  person peter.murray.rust    schedule 26.10.2011


Ответы (3)


Вы должны сделать это через процессор XSLT. Я не думаю, что есть способ сделать это в самом XSLT.

В oXygen вы можете перейти к «XML / XSLT-FO-XQuery / XSLT / Saxon / Saxon-HE/PE/EE» в настройках и включить или отключить проверку DTD (есть поле со списком).

person Daniel Haley    schedule 25.10.2011
comment
Большое спасибо, это работает. Но я бы предпочел что-то встроенное в XSLT функции :) - person Jay; 26.10.2011

Не со встроенными функциями XSLT-1.0 (которые также не могут четко обнаруживать неправильный формат). Ваша среда может обеспечить это с помощью других инструментов, таких как DOM Builders.

person peter.murray.rust    schedule 25.10.2011
comment
@jkcool - см. мой ответ о настройках в oXygen для Saxon (XSLT 2.0) - person Daniel Haley; 26.10.2011

Это полностью зависит от инструмента, который вы используете. В данном случае это вопрос о редакторе Oxygen. В спецификации XSLT нет ничего, что требовало бы от процессора выполнения проверки DTD при чтении XML.

person bmargulies    schedule 25.10.2011
comment
Но если бы с XML был связан XSD, то с его помощью можно было бы проверить входной xml. Я прав ? - person Jay; 26.10.2011
comment
Только если инструмент, который вы используете, решит внедрить и включить проверку XSD. Это не имеет ничего общего с самим XSLT. - person bmargulies; 26.10.2011
comment
@jkcool ЕДИНСТВЕННОЕ, что должен сделать процессор XSLT, - это проверить правильность построения. Некоторые из них могут просто ужасно падать при некорректном вводе (т.е. не давать никакого представления о том, что не так) - person peter.murray.rust; 26.10.2011