2

谁能告诉我为什么下面的代码行不是使用 xslt 1.0 为段落元素的文本节点删除句点和逗号的合法方法?这是我目前拥有的模板:

<xsl:template match="tei:p">
    <p id="{@xml:id}" class="plaoulparagraph" style="margin-left: 3em;"><xsl:apply-templates select="./translate(current(), '.,', '')"/></p>
</xsl:template>

当我尝试执行此操作时,我的编辑器当前给了我一个错误。

4

3 回答 3

2
<xsl:apply-templates select="./translate(current(), '.,', '')"/>

在 XSLT 1.0 和 2.0 中,select属性中的表达式xsl:apply-templates必须计算为 node-set

上述指令的select属性在 XPath 1.0 中在语法上无效,因为在 XPath 1.0 中不允许将函数调用作为/运算符的 RHS(感谢@MichaelKay 指出这一点),而在 XPath 2.0 中它的计算结果为字符串,而不是节点集——这是错误的原因。

你想做这样的事情

<xsl:template match="tei:p//text()">
 <xsl:value-of select="translate(., '.,', '')"/>
</xsl:template>

并将上面引用的指令替换为

 <xsl:apply-templates/>
于 2012-06-23T21:01:54.780 回答
0

用这个

<p class="plaoulparagraph" style="margin-left: 3em;"><xsl:value-of select="translate(current(), '.,', '')"/></p>
于 2012-06-23T20:26:58.677 回答
0

如果你正在处理一个数字的逗号,你可以这样翻译它:

<xsl:variable name="string_value">
   <xsl:value-of select="'123,456,789.01'"/>
</xsl:variable>

<Number>
    <xsl:value-of select="number(translate($string_value,',',''))"/>
<Number>
于 2019-08-12T19:10:01.493 回答