改造后如何保留特殊字符?
How to retain special characters after transformation?
我正在 Java 程序中使用 XSL 进行 XML 转换。这是示例 XML
<root>
<head>Heading goes here</head>
<middle>Some text goes here</middle>
<body>Body goes here ’ with special characters</body>
</root>
XSL 有标识模板,它只是删除了一个 <middle>
元素。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<!-- the identity template -->
<xsl:template match="@* | node()" name="identity">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<!-- template to remove middle element -->
</xsl:stylesheet>
转换是通过Java程序(Transformer class)完成的。转换后,body中的’
转换为'char。我想保留 ’
而不是 ’ 字符。请让我知道如何实现这一点?
提前致谢。
由于 XSLT 在包含所有字符作为 Unicode 字符的树上运行,独立于原始词汇表示,因此纯 XSLT 处理器无法保留从输入复制到输出的字符表示。您需要使用像 LexEv http://andrewjwelch.com/lexev/ 这样的预处理器来首先将字符表示转换为 XSLT 可以操作并转换或保留的标记。
通常情况下,转换器会将字符输出为文字,除非它们不能用选定的输出编码表示。如果您想将非 ASCII 字符保留为字符引用,请告诉您的样式表使用 US-ASCII 作为输出编码:
<xsl:output method="xml" encoding="US-ASCII" omit-xml-declaration="yes"/>
现在所有非 ASCII 字符都必须序列化为引用。
这不一定保留字节的输入字节,例如序列化程序可能选择使用十进制引用而不是十六进制。
我正在 Java 程序中使用 XSL 进行 XML 转换。这是示例 XML
<root>
<head>Heading goes here</head>
<middle>Some text goes here</middle>
<body>Body goes here ’ with special characters</body>
</root>
XSL 有标识模板,它只是删除了一个 <middle>
元素。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<!-- the identity template -->
<xsl:template match="@* | node()" name="identity">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<!-- template to remove middle element -->
</xsl:stylesheet>
转换是通过Java程序(Transformer class)完成的。转换后,body中的’
转换为'char。我想保留 ’
而不是 ’ 字符。请让我知道如何实现这一点?
提前致谢。
由于 XSLT 在包含所有字符作为 Unicode 字符的树上运行,独立于原始词汇表示,因此纯 XSLT 处理器无法保留从输入复制到输出的字符表示。您需要使用像 LexEv http://andrewjwelch.com/lexev/ 这样的预处理器来首先将字符表示转换为 XSLT 可以操作并转换或保留的标记。
通常情况下,转换器会将字符输出为文字,除非它们不能用选定的输出编码表示。如果您想将非 ASCII 字符保留为字符引用,请告诉您的样式表使用 US-ASCII 作为输出编码:
<xsl:output method="xml" encoding="US-ASCII" omit-xml-declaration="yes"/>
现在所有非 ASCII 字符都必须序列化为引用。
这不一定保留字节的输入字节,例如序列化程序可能选择使用十进制引用而不是十六进制。