Java 转换后如何保留特殊字符?
我正在Java程序中使用XSL进行XML转换。这是示例XMLJava 转换后如何保留特殊字符?,java,xml,xslt,special-characters,transformation,Java,Xml,Xslt,Special Characters,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> 航向在这里 这里有一些文字 身体在这
<root>
<head>Heading goes here</head>
<middle>Some text goes here</middle>
<body>Body goes here ’ with special characters</body>
</root>
航向在这里
这里有一些文字
身体在这里’;有特色
XSL有一个标识模板,它只删除一个
元素
<?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类)完成的。转换后,’正文中的代码>转换为“char”。我想保留’代码>而不是“char”。请让我知道如何做到这一点
提前感谢。由于XSLT在一个树上运行,该树包含所有字符作为Unicode字符,独立于原始的词法表示,因此纯XSLT处理器无法保留从输入复制到输出的字符表示。您需要使用像LexEv这样的预处理器,首先将字符表示转换为XSLT可以操作并转换或保留的标记。因为XSLT在包含所有字符作为Unicode字符的树上操作,而不依赖于原始的词汇表示,纯XSLT处理器无法保留从输入复制到输出的字符的表示形式。您需要使用像LexEv这样的预处理器,首先将字符表示转换为XSLT可以操作并转换或保留的标记。因为XSLT在包含所有字符作为Unicode字符的树上操作,而不依赖于原始的词汇表示,纯XSLT处理器无法保留从输入复制到输出的字符的表示形式。您需要使用像LexEv这样的预处理器,首先将字符表示转换为XSLT可以操作并转换或保留的标记。因为XSLT在包含所有字符作为Unicode字符的树上操作,而不依赖于原始的词汇表示,纯XSLT处理器无法保留从输入复制到输出的字符的表示形式。您需要使用像LexEv这样的预处理器,首先将字符表示转换为XSLT可以操作、转换或保留的标记。通常,转换器将字符作为文本输出,除非它们不能在所选的输出编码中表示。如果要保留非ASCII字符作为字符引用,请告诉样式表使用US-ASCII作为输出编码:
<xsl:output method="xml" encoding="US-ASCII" omit-xml-declaration="yes"/>
现在,所有非ASCII字符都必须序列化为引用
这不一定会逐字节保留输入,例如,序列化程序可能会选择使用十进制引用而不是十六进制引用。通常,转换器会将字符作为文本输出,除非它们无法在所选输出编码中表示。如果要保留非ASCII字符作为字符引用,请告诉样式表使用US-ASCII作为输出编码:
<xsl:output method="xml" encoding="US-ASCII" omit-xml-declaration="yes"/>
现在,所有非ASCII字符都必须序列化为引用
这不一定会逐字节保留输入,例如,序列化程序可能会选择使用十进制引用而不是十六进制引用。通常,转换器会将字符作为文本输出,除非它们无法在所选输出编码中表示。如果要保留非ASCII字符作为字符引用,请告诉样式表使用US-ASCII作为输出编码:
<xsl:output method="xml" encoding="US-ASCII" omit-xml-declaration="yes"/>
现在,所有非ASCII字符都必须序列化为引用
这不一定会逐字节保留输入,例如,序列化程序可能会选择使用十进制引用而不是十六进制引用。通常,转换器会将字符作为文本输出,除非它们无法在所选输出编码中表示。如果要保留非ASCII字符作为字符引用,请告诉样式表使用US-ASCII作为输出编码:
<xsl:output method="xml" encoding="US-ASCII" omit-xml-declaration="yes"/>
现在,所有非ASCII字符都必须序列化为引用
这不一定会逐字节保留输入,例如,序列化程序可能会选择使用十进制引用而不是十六进制引用。简而言之,更改Transformer类,使其保留’代码>,如果您想要长答案,我们需要Transformer类的相关代码。还有其他特殊字符,如’。有些我不知道。如何保留所有字符?能否显示当前使用的XSLT?另外,您可以说您使用的是XSLT1.0还是XSLT2.0吗?谢谢@TimC我在问题中添加了XSLT。简言之,更改Transformer类,使其保留’代码>,如果您想要长答案,我们需要Transformer类的相关代码。还有其他特殊字符,如’。有些我不知道。如何保留所有字符?能否显示当前使用的XSLT?另外,您可以说您使用的是XSLT1.0还是XSLT2.0吗?谢谢@TimC我在问题中添加了XSLT。简言之,更改Transformer类,使其保留’代码>,如果您想要长答案,我们需要Transformer类的相关代码。还有其他特殊字符,如’。有些我不知道。如何保留所有字符?能否显示当前使用的XSLT?另外,您可以说您使用的是XSLT1.0还是XSLT2.0吗?谢谢@TimC我在问题中添加了XSLT。简言之,更改Transformer类,使其保留’代码>,如果您想要长答案,我们需要Transformer类的相关代码。还有其他特殊字符,如’。有些我不知道。如何保留所有字符?能否显示当前使用的XSLT?还有,可以吗