我需要为我的应用使用字符转换。作为示例,我查看了图书并尝试使用示例(如果重要this book 附录A - &gt; [2.0] <xsl:character-map>
部分)
这是我的XML(来自书中):
<?xml version="1.0" encoding="utf-8"?>
<!-- special-characters.xml -->
<char-test>
<tabs>
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
</tabs>
<special-char>➀</special-char>
<special-char>➁</special-char>
</char-test>
这是我的XSL(来自书中):
<?xml version="1.0" encoding="utf-8"?>
<!-- character-map1.xsl -->
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" use-character-maps="sample" />
<xsl:character-map name="sample" use-character-maps="circles">
<xsl:output-character character="	" string=" " />
</xsl:character-map>
<xsl:character-map name="circles">
<xsl:output-character character="➀" string="<img src='images/circle1.gif'
width='28' height='28'/>" />
<xsl:output-character character="➁" string="<img src='images/circle2.gif'
width='28' height='28'/>" />
</xsl:character-map>
<xsl:template match="char-test">
<html>
<head>
<title>A test of some special characters</title>
</head>
<body style="font-family: sans-serif;">
<h1>A test of some special characters</h1>
<xsl:apply-templates select="*" />
</body>
</html>
</xsl:template>
<xsl:template match="tabs">
<pre style="font-size: 150%; font-weight: bold;">
<xsl:value-of select="." />
</pre>
</xsl:template>
<xsl:template match="special-char">
<p style="font-size: 200%;">
<xsl:text>Here's a special character: </xsl:text>
<xsl:value-of select="." />
</p>
</xsl:template>
</xsl:stylesheet>
我不希望得到➀和➁,我希望得到这些角色的替代品。我尝试使用上面的XML和XSL http://www.freeformatter.com/xsl-transformer.html。
结果不符合我的预期:
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>A test of some special characters</title>
</head>
<body style="font-family: sans-serif;">
<h1>A test of some special characters</h1>
<pre style="font-size: 150%; font-weight: bold;">public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}</pre>
<p style="font-size: 200%;">Here's a special character: ➀</p>
<p style="font-size: 200%;">Here's a special character: ➁</p>
</body>
</html>
特殊字符未被替换。我很困惑,因为这些例子来自好书,而且我可以在网上看到相同的方法。 这里的魔力在哪里?
答案 0 :(得分:3)
这向我表明,您正在测试的XSLT处理器是版本1.0处理器而不是版本2.0 - 字符映射是仅2.0的功能。
如果您使用Saxon 9引擎,http://xsltransform.net/支持2.0。