XSLT 1.0 Как расширить с помощью fn (пространство имен функции) - PullRequest
2 голосов
/ 22 февраля 2010

Мне было интересно, как я могу расширить XSLT 1.0, чтобы я мог использовать функции из пространства имен функций fn в http://www.w3schools.com/Xpath/xpath_functions.asp

Мне только что сказали, что система теперь использует процессор MSXML XSLT. Все мои таблицы стилей были написаны на 2.0 ... Так что теперь я стек, ничего не работает и не знаю, как я могу использовать функции, например, из пространства имен fn

Мне было интересно, удастся ли как-нибудь расширить XSLT 1.0, потому что я использую множество этих функций. Или что мне теперь делать? Я абсолютно потерян и разочарован.

Буду очень признателен за любую помощь!

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 22 февраля 2010

Если вы застряли с 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 вы использовали.

2 голосов
/ 22 февраля 2010

Ну, ИМХО, вы немного застряли. MSXML, не реализует XSLT 2.0 и XPath 2.0. Таким образом, в основном у вас есть три варианта:

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

Лично я полагаю, что возможны только варианты 1 и 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...