XSLT转换为删除特殊字符等

时间:2012-12-13 10:28:56

标签: xml xslt xslt-1.0

我希望能够翻译和XML项目以删除空格&任何特殊字符,并将大写字符转换为小写字母,我至少可以说有点卡住了!

理想情况下,我想要一种方法来捕捉所有特殊字符,而不是单独指定它们。我已经阅读了关于白名单的一些答案,但不知道如何在这里实现它。另一点需要指出的是,我只能使用XSLT 1.0。

提前致谢! :)

这是我到目前为止所做的:

<xsl:template match="faq">
<article>
    <xsl:call-template name="questionMatch"/>
</article>
</xsl:template>
<xsl:template name="questionMatch" match="section">
    <xsl:for-each select="section">
        <xsl:for-each select="qa">
            <div class="toggler" id="{translate(translate(translate(question,'?!£$%^*',''), ' ', ''), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}">
            </div>
        </xsl:for-each>
    </xsl:for-each>
</xsl:template> 

1 个答案:

答案 0 :(得分:6)

啊,尤里,尤里卡!我似乎已经借助其他一些主题(最终)弄明白了。我想我会分享答案,因为它可能在将来帮助别人吗?

答案是:

<xsl:template name="questionMatch" match="section">
    <xsl:variable name="vAllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"/>
        <xsl:for-each select="qa">
            <div class="toggler" id="{translate(translate(question, translate(question, $vAllowedSymbols, ''), ''), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}">
            </div>
    </xsl:for-each>
</xsl:template>