Xslt 删除标点符号

Xslt 删除标点符号,xslt,translate,Xslt,Translate,有人能告诉我为什么下面这行代码不是使用XSLT1.0删除段落元素文本节点的句点和逗号的合法方法吗?以下是我目前拥有的模板: <xsl:template match="tei:p"> <p id="{@xml:id}" class="plaoulparagraph" style="margin-left: 3em;"><xsl:apply-templates select="./translate(current(), '.,', '')"/></

有人能告诉我为什么下面这行代码不是使用XSLT1.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>

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

使用此选项

<p class="plaoulparagraph" style="margin-left: 3em;"><xsl:value-of select="translate(current(), '.,', '')"/></p>

并将上面引用的说明替换为

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

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

<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>


此外,在XSLT 1.0中,不能对“/”运算符的rhs进行函数调用。@MichaelKay:感谢您的观察——我在解释中添加了这个额外的错误。哈——这是一个非常聪明的解决方案。这似乎是可行的——但是,我假设如果的子项带有标点符号,我也需要运行单独的模板来删除标点符号——比如对于的子项,即
tei:quote//text()
@Jeff:实际上你不必这样做
tei:p//text()
匹配作为
tei:/p
后代的所有文本节点。我考虑过这个问题,但我不确定这是否能满足我的要求。p标记包含许多子元素——因此我想确保在p的所有子元素上也应用模板。如果只选择P的值,那么我不确定其他更具体的模板是否得到处理。
<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>