2012-04-16 5 views
0

Мне нужно запустить таблицу стилей XSLT 2.0 с saxonb-xslt (которая предупреждает об 1.0 stylesheets) и таблицу стилей XSLT 1.0 с saxon-xslt (которая не работает на 2.0 stylesheets). Есть ли способ сказать саксону: «Вот таблица стилей, выясните, как с этим справиться самостоятельно».?Могу ли я сказать саксону, чтобы выяснить версию XSLT самостоятельно?

Я хочу, чтобы мои файлы Makefile были максимально простыми и как можно более предупреждающими.

ответ

0

Не знаете, почему на этот вопрос не был дан ответ; вам может показаться более эффективным задавать саксонские вопросы в справочной системе Саксона (доступной через проект на Sourceforge).

Как правило, в эти дни я советую людям использовать недавнюю саксонскую версию (9.4) даже для обработки кода XSLT 1.0, предпочитая использовать старый процессор Saxon 6.5. Да, это дает предупреждение - к сожалению, спецификация XSLT 2.0 требует предупреждения - но вы должны делать что-то довольно странное, чтобы поразить любые проблемы совместимости. Если вам не нравится предупреждение, вы можете его подавить с помощью -versionmsg: off.

Но если вы хотите выбрать другой XSLT-процессор на основе атрибута версии в таблице стилей, вам просто нужно закодировать эту логику в своем скрипте. Это достаточно легко, если ваш скрипт написан на XML-ориентированном языке, таком как XProc или xmlsh, это немного сложнее, если вы используете универсальный сценарий оболочки.

+0

Мое мнение было, предупреждения существуют по какой-либо причине (по крайней мере, на C). Интерпретация таблицы стилей XSLT 1.0 как 2.0 и просто подавление предупреждающих звуков потенциально опасно. Если спецификация требует предупреждения, должно быть что-то, что пойдет не так (например, несовместимости). Я вижу, что вы участвуете в саксоне, поэтому я удивляюсь, почему вы не можете просто включить оба процессора (для 1.0 и 2.0) в один инструмент и решить, какой из них запускать * после * вы выяснили версию xstl введенного вами ввода? – bitmask

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