将'(撇号)添加为XSLT模板中的有效字符

问题描述 投票:0回答:1

我正在一个项目上工作,他们给出了一个有效字符列表,应按原样传递这些字符,除此以外的其他任何字符都必须替换为?(问号)。我公司的软件不允许使用替换功能,因此我必须使用翻译方法。

我能够添加除'(撇号)之外的所有有效字符。如何将撇号也作为有效字符包含在变量vAllowedSymbols中。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="vAllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '"/>
<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="text()">
    <xsl:value-of select="
        translate(
            .,
            translate(., $vAllowedSymbols, ''),
            ''
            )
        "/>
</xsl:template>

输入:

<t>
<Name>@O'Niel</Name>
<Name>St: Peter</Name>
<Name>A.David</Name>
</t>

输出:

<t>
<Name>?O'Niel</Name>
<Name>St: Peter</Name>
<Name>A.David</Name>
</t>
string xslt xslt-1.0 xslt-2.0 xslt-grouping
1个回答
0
投票

使用

<xsl:variable name="vAllowedSymbols">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '</xsl:variable>

<xsl:variable name="vAllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ &apos;'"/>
© www.soinside.com 2019 - 2024. All rights reserved.