Я хочу, чтобы вы использовали EXSLT - DYN: EVALUATE в таблице стилей. Я добавил темп имен, но я не знаю, где находится файл .xsl, который мне нужно импортировать. Я не верю, что у меня установлен XALAN, чтобы указать на импорт. Как мне это установить? После установки, я указываю на .xsl, подберет ли он функцию и применит ли ее? Я использую Windows. Файл XSLT находится в верхней части XML-документа.
Спасибо
Пит





В Xalan есть встроенная функция EXSL dyn: Assessment, вам не нужно ничего импортировать, чтобы использовать ее. Вам просто нужно объявить пространство имен. Приведу небольшой пример:
input.xml:
<root>
<foo>I am foo</foo>
<bar>I am bar</bar>
</root>
dyn_evaluate.xsl:
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns:dyn = "http://exslt.org/dynamic"
extension-element-prefixes = "dyn">
<xsl:param name = "path"/>
<xsl:output method = "text"/>
<xsl:template match = "/">
<xsl:value-of select = "dyn:evaluate($path)"/>
</xsl:template>
</xsl:stylesheet>
Бег
xalan.exe -p path '/root/foo' input.xml dyn_evaluate.xsl
дает
I am foo
Бег
xalan.exe -p путь '/ корень / бар' input.xml dyn_evaluate.xsl
дает
I am bar
Надеюсь это поможет.
Как бы вы это назвали со страницы JSP? JSP обслуживает XML и в настоящее время прикрепляет таблицу стилей к странице XML и передает результат.
Вы не можете, потому что, если вы будете обслуживать клиента со страницей XML с прикрепленной таблицей стилей, это не сработает. Браузеры не поддерживают exslt.
Однако, если вы выполняете обработку XSLT на сервере (с помощью xalan), вы можете заставить его работать, но я не понимаю, как вы комбинируете xslt с jsp.
Я знаю, что это древний поток, но имейте в виду, что если вы используете
javax.xml.transform.TransformerFactoryдля абстрагирования вашего XSLT-процессора,dyn:evaluateвыйдет из строя с реализациейTransformerFactoryпо умолчанию, поставляемой с JDK. Это связано с тем, что реализацией JDK является компилятор Xalan XSLTC, а не интерпретатор, и, хотяdyn:evaluateраспознается, он не может быть обработан.