我试图让XSL呈现一个带有&的XML属性。标记为&

时间:2017-12-12 01:39:37

标签: xslt-1.0

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

1 个答案:

答案 0 :(得分:0)

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

<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的初学者。