特殊字符不会在xslt转换上转换

时间:2014-01-31 14:32:12

标签: xml parsing xslt character-encoding

输入XML中有许多特殊字符参数,例如& ndash的; ,& MDASH; ,& rsquo的;

有没有办法可以用&#8211替换它们& ndash,对其他人来说也是如此

我的xslt定义为

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" omit-xml-declaration="yes" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:param name="pDest" select="'XSLT_Transform/Output/'" />
<xsl:template match="CHAPTER">
    <xsl:variable name="token" select="tokenize(@ABC,'-')[last()]" />
    <xsl:variable name="chapVal" select="replace($token,'C','')" />
    <!--<xsl:variable name="chapVal" select="replace($val,'_','-')"/> -->
    <xsl:result-document href="{$pDest}chapter{$chapVal}.xhtml"

我相信如果我改变编码,它们应该自动转换为dtd吗?

1 个答案:

答案 0 :(得分:0)

在XSLT处理器看到之前,XML解析器会自动扩展&ndash;之类的实体引用;对于XSLT处理器,它们被视为普通字符。如果输出文件的所选编码包含这些字符,则XML或HTML序列化程序将它们作为普通字符输出,否则序列化程序将它们作为字符引用输出(例如&#8211;

我希望这些信息有所帮助。你还没有真正说出你的问题,所以我所能做的只是提供背景信息。