XSLT2.0提供了字符映射功能。
对于特殊字符或特殊字符,我们可以通过指定某个字符来代替。例如:
在JSP中,我们经常用到<%和%>,我们可以利用XSLT2.0的字符映射功能。
XML文档:
<
?xml version="1.0"?
>
< root >
< p >@page language="java" < /p >
< /root >
< root >
< p >@page language="java" < /p >
< /root >
XSLT文档:
<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output use-character-maps="jsp"/>
<xsl:character-map name="jsp">
<xsl:output-character character="Ő" string="<%"/>
<xsl:output-character character="ő" string="%>"/>
</xsl:character-map>
<xsl:template match="/root">
<xsl:result-document href="jsp" >
Ő<xsl:value-of select="p"/>őA
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output use-character-maps="jsp"/>
<xsl:character-map name="jsp">
<xsl:output-character character="Ő" string="<%"/>
<xsl:output-character character="ő" string="%>"/>
</xsl:character-map>
<xsl:template match="/root">
<xsl:result-document href="jsp" >
Ő<xsl:value-of select="p"/>őA
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
查看输出文件,得到文件内容:
<% @page language="java" %>
当然,我们还可以利用#,~等一些不常用的字符来代替Ő以及—的位置,来实现同样的功能。但一般不建议这样做,因为存在一个风险,就是我们有可能用到它们的原义字符。