1

XML アイテムを変換して、スペースと特殊文字を削除し、大文字を小文字に変換できるようにしたいのですが、控えめに言っても少し行き詰まっています。

理想的には、特殊文字を個別に指定するのではなく、すべての特殊文字をキャッチして切り取る方法が必要です。ホワイトリストに関するいくつかの回答を読みましたが、ここでそれを達成する方法がわかりません。もう 1 つ注意しなければならないのは、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> 
4

1 に答える 1

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> 
于 2012-12-13T11:20:12.020 に答える