我试图让XSL呈现一个XML属性,其中&标签为&

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

我有一个XML标签,其中包含名称,例如H&M。要求是它应该输出为H& M我还无法实现这一点。

xslt-1.0
1个回答
0
投票

没有转义字符,&或&为我工作。这是有效的:

<xsl:template name="string-replace-all">


    <xsl:param name="text" />
         <xsl:choose>
             <xsl:when test="contains($text, '&amp;')">
                 <xsl:value-of select="substring-before($text,'&amp;')"/>
                 <xsl:text disable-output-escaping="yes"><![CDATA[&amp;]]></xsl:text>
                 <xsl:value-of select="substring-after($text,'&amp;')"/>
             </xsl:when>
             <xsl:when test="contains($text, '&amp;apos;')"> 
              <xsl:value-of select="substring-before($text,'&amp;apos;')"/>
              <xsl:text disable-output-escaping="yes"><![CDATA[&apos;]]></xsl:text>
              <xsl:value-of select="substring-after($text,'&amp;apos;')"/> 
              </xsl:when>

             <xsl:otherwise>
                 <xsl:value-of select="$text" />
             </xsl:otherwise>
          </xsl:choose>
     </xsl:template>

然后调用模板:

<Nm>
                                  <xsl:variable name="suppNm">
                                   <xsl:call-template name="string-replace-all">
                                     <xsl:with-param name="text" select="Payee/Name" />
                                   </xsl:call-template>
                                      </xsl:variable>                           

                                      <xsl:value-of select="$suppNm" />  
                                </Nm>

如果有人知道更好的解决方案,会非常有兴趣知道。我是XSL的初学者。

© www.soinside.com 2019 - 2024. All rights reserved.