XSLT 1.0 Как расширить с помощью fn (пространство имен функций)

StackOverflow https://stackoverflow.com/questions/2311137

Вопрос

Мне было интересно, как я могу расширить 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.Итак, в принципе, у вас остается три варианта:

  1. Попытайтесь убедить своих поставщиков в том, что они должны обеспечить поддержку другого процессора XSLT, такого как Saxon.NET.
  2. Переопределите все необходимые функции с помощью функции Microsoft msxsl: script.Это должно оказаться сложным и оставить вас с зависимостью от анализатора Microsoft.Кроме того, он преобразует только функции XPath - функциональность XSLT 2.0 здесь не рассматривается.
  3. Переопределите свои таблицы стилей с помощью XSLT 1.0.

Лично я предполагаю, что только варианты 1 и 3 осуществимы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top