我正在进行XML
到HTML
转换,我需要转换一些字符实体。我的XML文件具有像è
这样的Unicode值,我需要将其转换为相应的html值è
。其他实体也需要分别转换。每个实体的字符映射都很安静,因为有很多。
我正在使用XSLT 2.0。我的输出方法是xhtml
。目前我在HTML代码中获取实际字符(在上面的例子è
中)。需要帮忙。我的Saxon处理器版本为9.1.0.5
。
答案 0 :(得分:1)
使用正常的XSLT处理,Saxon将简单地使用像Xerces这样的XML解析器或Sun / Oracle JRE附带的Xerces版本,一旦解析器完成其工作并且Saxon在其树模型上运行,就无法知道是否原始输入具有像è
这样的文字字符或像è
这样的十进制字符引用或像è
这样的十六进制字符。
当序列化转换的结果树时,您当然可以使用字符映射将字符映射到您想要的任何表示,但结果树中的任何è
都会感到高兴,而不仅仅是由十六进制字符产生的那些输入中的引用。
如果要确保将所有非ASCII字符序列化为字符引用,则需要使用xsl:output encoding="US-ASCII"
。
Saxon 9.1还提供http://saxonica.com/documentation9.1/extensions/output-extras/character-representation.html来控制格式。
但我同意所做的评论,现在将UTF-8作为输出编码,然后在结果树的序列化中只是文字字符不应该造成任何问题。