Официальный XSLT валидатор?

Есть ли официальный валидатор XSLT, например http://validator.w3.org/ для HTML и XHTML?

Я знаю, что http://validator.w3.org/ также может использоваться для проверки XML и XSL-документов. Но они проверяются как структуры XML.

В действующем XHTML, например, <span><div>...</div></span> является недопустимым, поскольку элементы блока не должны появляться внутри встроенных элементов.

Итак, есть ли удобный способ для непосредственной проверки документа XSL?

(я думаю, мы можем комбинировать XML и XSL, выводить XHTML, а затем проверять его. Но это не напрямую и не удобно.)

Спасибо!

Ответ 1

Я предполагаю, что, проверяя таблицы стилей XSLT, вы имеете в виду проверку того, соответствуют ли элементы, атрибуты и т.д. в уже хорошо сформированном XML-документе (который представляется XSLT-кодом) спецификации XSLT W3C.

Прежде всего, обратите внимание, что существует различие между корректностью и достоверностью XML-документа. Он хорошо сформирован, если содержащиеся элементы правильно вложены, если есть один корневой элемент и т.д. (Это определяется спецификацией XML). Также см.: Есть ли разница между "действительным xml" и "хорошо сформированным xml" ?.

Действительность документа XML может быть проверена только вместе с XML-схемой (или DTD, или RelaxNG...). Схема - это набор правил, определяющих, например, какие элементы и атрибуты разрешены в какой последовательности.

Теперь, чтобы ответить на ваш вопрос: такой услуги у W3C нет, однако есть доступная схема, см., например, http://www.w3.org/2007/schema-for-xslt20.xsd для схемы, которая включает в себя все структуры "стандартного" XSLT 2.0.

Вы можете проверить свой XSLT-код на эту схему. Тем не менее, более проницательно просто запустить ваш код с XSLT-процессором и искать предупреждения и ошибки, которые он производит.


Кроме того, имейте в виду, что действительность кода XSLT и действительность выведенного XHTML не совпадают. Даже если ваш XSLT совершенно применим в отношении спецификации XSLT, это не значит, что полученный XHTML является разумным.

Ответ 2

В общем случае вы не можете взять произвольную таблицу стилей XSLT и статически доказать, что она будет генерировать действительный XHTML. Тем не менее, вы можете обнаружить довольно много случаев, когда этого не произойдет, при условии, что таблица стилей написана, чтобы использовать преимущества схемы. Для этого вам нужен XSLT-процессор с поддержкой схемы, который выполняет статическую проверку (например, Saxon-EE), и вам нужна таблица стилей для (a) импорта схемы с помощью xslt: import-schema и (b) для вызова проверки на result с использованием [xsl:] validation = "strict". Это будет обнаруживать некоторые ошибки допустимости в вашем файле стилей статически (при компиляции таблицы стилей), а остальная динамически (во время ее запуска).

Ответ 3

Существует много инструментов редактирования XML (и, возможно, несколько HTML файлов), которые знают структуру (X) HTML, достаточную для того, чтобы выделять ошибки. Visual Studio, например, может проверять любой XML-документ с помощью схемы, включая XHTML или XSL. Определяется ли div внутри диапазона в схеме XHTML.