xslt string替换具体示例

时间:2017-08-04 07:39:32

标签: xslt-1.0

我发现Codeling提供的模板作为XSLT 1.0中replace-function的替代:XSLT string replace

我遇到的问题是我无法弄清楚如何使它适应我的具体例子,所以我希望在这里有一些指示。

我有一个名为./bib-info的xml参数,如下所示(例如):

<bib-info>Gäbler, René, 1971-  [(DE-588)138691134]:                           Schnell-Umstieg auf Office 2010, [2010]</bib-info>

我的目标是替换“]:”和以下文本开头之间的空格(在本例中为“Schnell”)。空白的数量总是相同的。

以下是另外两个例子:

<bib-info>Decker, Karl-Heinz, 1948-2010  [(DE-588)141218622]:                           Funktion, Gestaltung und Berechnung, 1963</bib-info>

<bib-info>Decker, Karl-Heinz, 1948-2010  [(DE-588)141218622]:                           Maschinenelemente, 1963</bib-info>

有人可以给我一个提示如何编写调用代码

<xsl:variable name="newtext">
    <xsl:call-template name="string-replace-all">
        <xsl:with-param name="text" select="$text" />
        <xsl:with-param name="replace" select="a" />
        <xsl:with-param name="by" select="b" />
    </xsl:call-template>
</xsl:variable>

这样可以解决我的问题吗?

提前致谢

凯特

1 个答案:

答案 0 :(得分:0)

  

我的目标是更换&#34;]之间的空白:&#34;和以下文字的开头

执行此操作的示例如下:

substring

请注意,这只会替换真实的空格,而不会替换制表符或其他特殊字符。

在这种情况下,BTW替换字符串可能不是最佳选择。您可以使用XSLT-1.0的<xsl:template match="bib-info"> <xsl:variable name="newtext1" select="substring-before(text(),']: ')" /> <xsl:variable name="newtext2" select="substring-after(text(),']: ')" /> <xsl:variable name="newtext" select="concat($newtext1,']: ',$newtext2)" /> <bib-info><xsl:value-of select="$newtext" /></bib-info> </xsl:template> 函数实现相同的功能:

tv.setText(news_item.getTitle().replaceAll("\u2019", "&#39;"));

两个模板的输出相同。