XSL以xsl param作为参数运行

时间:2018-05-17 20:03:37

标签: xslt xslt-2.0

我会尽量在这里明确术语,术语的重载使这变得复杂。

我有一个转换,我传递一个属性来填充xsl:param,这是有效的

<xsl:param name="platform"/>

如果我使用

,这将打印出来
<xsl:value-of select='$platform'/>

我需要将它传递给一个函数,而不是打印这个属性/ param。 我试过了

<xsl:value-of select="replace(current(),'replaceMe','$platform')"/>

我收到错误

  

replace()中的替换字符串无效:$ sign必须后跟数字0-9

我有没有办法将参数传递给函数?
如果是这样,我该如何格式化呢?

1 个答案:

答案 0 :(得分:2)

你的意思是

<xsl:value-of select="replace(current(), 'replaceMe', $platform)" />
  • $platform是一个变量。

  • "$platform"replace()函数的上下文中是无效的替换字符串,works with regex并期望back-refereces$1或{{ 1}}在替换字符串中看到$2

逻辑结论:只要$变量意外包含$platform,您就会再次看到相同的错误,而$意外无效的正则表达式则会再次出现错误。如果它恰好是一个有效的正则表达式并且您不知道它,您可能会看到其他意外行为。

因此 - 如果你想逐字搜索和替换变量 - 你必须正确地regex-escape搜索模式中的所有特殊字符,并至少逃避任何'replaceMe'$替换字符串。一个强大的&#34;逐字&#34;替换呼叫看起来像这样:

\