首页 > 解决方案 > 你如何在 xsl 中编写特殊字符?

问题描述

因此,我试图查看 XML 输入是否分别以 < 或 > 作为 < 和 > 开头,但由于特殊字符,我什至无法编译它。

所以

<ENAME>"&lt;ADAMS"</ENAME> 

应该成为

employeeName: <ADAMS>

这是我尝试过的:

<xsl:variable name="ename" select="ENAME"/> 
"employeeName": "<xsl:value-of select="$ename"/><xsl:if test="starts- 
with($ename,&gt;)">&lt;</xsl:if><xsl:if test="starts- 
with($ename,&lt;)">&gt;</xsl:if>

标签: xmlxsltspecial-characters

解决方案


这是一种可以做到的方法:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    
  <xsl:strip-space elements="*" />

  <xsl:output method="text"/>
  
  <xsl:variable name="dQuote">"</xsl:variable>

  <xsl:template match="ENAME">
    <!-- Remove double quote from the input string -->
    <xsl:variable name="ENAME_MOD" select="translate(.,$dQuote,'')"/>
    <xsl:text>employeeName:</xsl:text>
    <xsl:value-of select="$ENAME_MOD"/>
    <!-- If the string starts with &lt; then add the &gt; at the end -->
    <xsl:if test="starts-with($ENAME_MOD,'&lt;')">&gt;</xsl:if>
  </xsl:template>
  
</xsl:stylesheet>

看到它在这里工作:https ://xsltfiddle.liberty-development.net/6q1SDkf


推荐阅读