有人能告诉我为什么以下代码行不是使用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>
当我尝试这样做时,我的编辑器正在给我一个错误。
答案 0 :(得分:2)
<xsl:apply-templates select="./translate(current(), '.,', '')"/>
在XSLT 1.0和2.0中,select
xsl:apply-templates
属性中的表达式必须评估为节点集。
上述指令的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/>
答案 1 :(得分:0)
使用此
<p class="plaoulparagraph" style="margin-left: 3em;"><xsl:value-of select="translate(current(), '.,', '')"/></p>
答案 2 :(得分: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>