XSLT 1.0 Как расширить с помощью fn (пространство имен функций)
Вопрос
Мне было интересно, как я могу расширить XSLT 1.0, чтобы я мог использовать функции из пространства имен fn function в http://www.w3schools.com/Xpath/xpath_functions.asp
Мне только что сказали, что отныне система использует процессор MSXML XSLT.Все мои таблицы стилей были написаны в версии 2.0 ...Итак, теперь я в стеке, ничего не работает, и я не знаю, как я могу использовать функции, например, из пространства имен fn.
Мне было интересно, можно ли будет каким-то образом расширить XSLT 1.0, потому что я использую множество этих функций.Или что мне теперь делать?Я абсолютно растерян и расстроен.
Был бы очень признателен за любую помощь!
Большое спасибо!
Решение
Если вы застряли с MSXML в качестве вашего процессора, я думаю, вам остается только выбрать вариант 2 в ответе Obalix , но вам, вероятно, придется написать функции расширения самостоятельно.
Вот пример того, как вы могли бы выполнить функцию верхнего регистра.Это использует javascript внутри XSLT для выполнения функции.
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<msxsl:script language="javascript" implements-prefix="user">
function uppercase(textToConvert)
{
return textToConvert.toUpperCase();
}
</msxsl:script>
<xsl:template match="text()">
<xsl:value-of select="user:uppercase(string(.))"/>
</xsl:template>
</xsl:stylesheet>
Что вы могли бы сделать, так это поместить все функции скрипта в их собственную таблицу XSLT и включить ее во все ваши собственные таблицы стилей XSLT.
Насколько сложным это окажется, зависит от того, сколько функций XPath2.0 вы использовали.
Другие советы
Ну, ИМХО, ты немного застрял.MSXML, не реализует XSLT 2.0 и XPath 2.0.Итак, в принципе, у вас остается три варианта:
- Попытайтесь убедить своих поставщиков в том, что они должны обеспечить поддержку другого процессора XSLT, такого как Saxon.NET.
- Переопределите все необходимые функции с помощью функции Microsoft msxsl: script.Это должно оказаться сложным и оставить вас с зависимостью от анализатора Microsoft.Кроме того, он преобразует только функции XPath - функциональность XSLT 2.0 здесь не рассматривается.
- Переопределите свои таблицы стилей с помощью XSLT 1.0.
Лично я предполагаю, что только варианты 1 и 3 осуществимы.