Мне нужно использовать преобразование символов для моего приложения. В качестве примера я посмотрел на книгу и пытался играть с примером (если этот вопрос this bookПриложение А ->[2.0] <xsl:character-map>
раздел)xsl: character-map/xsl: output-character не работает
Вот мой 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>
Я не ожидаю получить & # x2780; и & ##; , Я ожидаю получить замены для этих персонажей. Я пробовал http://www.freeformatter.com/xsl-transformer.html с XML и XSL.
Результат не то, что я ожидал:
<?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>
специальные символы не были заменены. Я смущен, потому что эти примеры из хорошей книги, и я вижу тот же подход в Интернете. Где моя магия?
Действительно. Большое спасибо! –
Еще одна возможность, которая объясняет симптомы, заключается в том, что вы использовали процессор XSLT 2.0, но не использовали его сериализатор (например, вы отправляли вывод в дерево DOM) –