解析 xsl 错误 - javax.xml.transform.TransformerException: use-character-maps attribute is not allowed on the xsl:output element

问题描述 投票:0回答:0

在 Java 中使用 XML Serializer 解析其中一个 XML 文件时,HTML 实体被转换成它们相应的十六进制代码值(例如 mdash 输出是“十六进制值 -#x2014;”),因此反映到最终输出文件中。为了将十六进制代码值转换为普通实体,我们尝试了一个 xsl 转换,该转换抛出错误“javax.xml.transform.TransformerException:在 xsl:output 元素上不允许使用字符映射属性”。

下面是使用的xsl:-

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output omit-xml-declaration="yes" />
<xsl:character-map name="mdash">
<xsl:output-character character="&#x2014;" string="&amp;mdash;" />
</xsl:character-map>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

我们使用了一个转换器工厂对象来转换最终的 XML,通过 xsl 文件将十六进制代码转换为普通实体。

xslt xml-parsing xslt-2.0 saxparser domparser
© www.soinside.com 2019 - 2024. All rights reserved.