XSLT转换为删除特殊字符等

Bar*_*984 1 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> 
Run Code Online (Sandbox Code Playgroud)

Bar*_*984 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> 
Run Code Online (Sandbox Code Playgroud)

  • 这确实是一个有用的技巧.`translate(question,$ vAllowedSymbols,'')`从`question`的值中删除所有"允许的"符号,只留下"不允许"的符号.因此,双翻译`翻译(问题,翻译(问题,$ vAllowedSymbols,''),'')`获取`question`的值,并从中删除所有_not_-allowed字符,只留下允许的字符. (7认同)