在 XSLT 模板中添加 '(撇号)作为有效字符
Add '(apostrophe) as a valid character in XSLT template
我正在做一个项目,他们给出了一个有效字符列表,应该按原样传递,除此之外的任何其他字符都必须替换为?(问号)。
我公司的软件不允许使用替换功能,所以我必须使用翻译方法。
我可以添加除'(撇号)之外的所有有效字符。如何将撇号也作为有效字符包含在变量 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>
使用
<xsl:variable name="vAllowedSymbols">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '</xsl:variable>
<xsl:variable name="vAllowedSymbols" select='"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '"'/>
让变量包含字符串而不是文本节点有一些优势。或者更准确地说,是一个字符串而不是包含文本节点的节点集。
我正在做一个项目,他们给出了一个有效字符列表,应该按原样传递,除此之外的任何其他字符都必须替换为?(问号)。 我公司的软件不允许使用替换功能,所以我必须使用翻译方法。
我可以添加除'(撇号)之外的所有有效字符。如何将撇号也作为有效字符包含在变量 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>
使用
<xsl:variable name="vAllowedSymbols">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '</xsl:variable>
<xsl:variable name="vAllowedSymbols" select='"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '"'/>
让变量包含字符串而不是文本节点有一些优势。或者更准确地说,是一个字符串而不是包含文本节点的节点集。