是否有调用单参数XSL函数的快捷方式?

Nor*_*ais 2 xslt xslt-2.0 xslt-1.0

我有很多函数可以接受一个输入,例如:

<xsl:template name="F">
    <xsl:param name="input"/>
    ... ...
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

要调用该函数,我需要写:

<xsl:call-template name="F">
    <xsl:with-param name="input" select="'jkljkljkl'"/>
</xsl:call-template>
Run Code Online (Sandbox Code Playgroud)

这似乎过于冗长.由于函数只有一个参数,为什么我们要写xsl:with-param节点?

是否有调用单参数函数的快捷方式?

我希望能够做到这样的事情:

<xsl:call-template name="F" select-param="'jkljkl'"/>
Run Code Online (Sandbox Code Playgroud)

它短而甜,同样不含糊(因为只有一个参数).我们怎样才能以简短而甜蜜的方式调用单参数函数?

我正在寻找XSLT 1.0和XSLT 2.0的解决方案.

Emi*_*ggi 5

在XSLT 2.0中,您可以通过以下方式编写自己的函数:

  • 声明你的命名空间
  • 使用xsl:function声明将函数定义为转换根元素的子元素.

例:

<xsl:stylesheet version="2.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:nTan="http://nTan.comr">

  <xsl:function name="nTan:Hello">
   <xsl:param name="string1"/>
    <xsl:value-of select="concat('Hello ',$string1)"/>
  </xsl:function>

  <xsl:template match="/">
    <xsl:value-of select="nTan:Hello('World!')"/>
  </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

  • 不,XSLT 1.0非常冗长,如果您打算使用它,您必须忍受它. (4认同)