我发现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>
这样可以解决我的问题吗?
提前致谢
凯特
答案 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", "'"));
两个模板的输出相同。