2013-12-16 5 views
14

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

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

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

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

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

Спасибо!

+0

Я не вижу, как это может работать, за исключением, возможно, в самых простых случаях. Вы не можете проверить будущий продукт, который зависит от ввода, пока неизвестного.Рассмотрим случай, когда таблица стилей определяет элемент с вычисленным именем. Как валидатор может знать, каким будет это имя? Это может быть «span», и это может быть «div». –

+0

хорошо ... да ... спасибо за комментарий. Это меня вдохновляет, и возникает еще один вопрос: с тем же XML и XSL, в каком-то случае они будут генерировать разные XHTML? – midnite

+0

И если мы только проверяем XSL, будет ли какой-то странный (но действительный) XML делать некоторые трюки (например, инъекции) по отношению к полученному XHTML? – midnite

ответ

0

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

+0

Спасибо за ответ. Есть ли у вас другие предложения IDE? Особенно бесплатные, такие как Eclipse PDT (как вы думаете, может)? – midnite

+0

Не уверен насчет eclipse, но посмотрите этот вопрос, я думаю, что он похож на то, что вы спрашиваете: http://stackoverflow.com/questions/124865/xml-schema-xsd-validation-tool – Flynn1179

11

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

Прежде всего обратите внимание, что существует различие между корректностью и достоверностью XML-документа. Он хорошо сформирован, если содержащиеся элементы правильно вложены, если есть один корневой элемент и т. Д. (Это определяется спецификацией XML). Также см .: Is there a difference between 'valid xml' and 'well formed 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 является разумным.

+0

Да! Большое спасибо за ваш хороший ответ и предоставив схему. И то, что вы упомянули в последнем абзаце, именно то, что я хочу, - гарантировать, что получившийся XHTML действителен, поскольку XHTML - это то, что пользователи действительно воспринимают. – midnite

+0

Добро пожаловать. Пожалуйста, подумайте о том, чтобы принять ответ, который был вам наиболее полезен (не обязательно мой). –

+0

Пожалуйста, продолжайте свой последний абзац, так как это то, что я изначально хотел сделать. Кроме того, пожалуйста, обратитесь к деталям, которые я упомянул в [комментарии к моему вопросу] (http://stackoverflow.com/questions/20605328/official-xslt-validator/20608732?noredirect=1#comment30875736_20605328) выше, для получения дополнительной информации Детали. Я действительно надеюсь, что вы сможете решить эту проблему со мной. Большое спасибо! – midnite

2

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

Смежные вопросы