使用XSLT转换xml中的特殊字符

使用XSLT转换xml中的特殊字符,xml,xslt,xslt-1.0,special-characters,Xml,Xslt,Xslt 1.0,Special Characters,我正在尝试使用xslt将xml中的特殊字符转换为其编码形式 例如: & to &amp; " to &quot; < to &lt; > to &gt; &to&; “到” 到 等等。 下面给出了我使用的代码 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999

我正在尝试使用xslt将xml中的特殊字符转换为其编码形式

例如:

& to &amp; 
" to &quot; 
< to &lt; 
> to &gt;
&to&;
“到”
等等。 下面给出了我使用的代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" encoding="UTF-8"/>

<xsl:template match="/">
    <xsl:apply-templates select="//search-results/items" />
</xsl:template>

<xsl:template match="items">
    <textarea>
        <xsl:apply-templates select="file-item" />
    </textarea>
</xsl:template>


<xsl:template match="file-item">
    <xsl:apply-templates select="." mode="details"/>    
</xsl:template>


<xsl:template match="*" mode="details">
    <file-item>
        <id><xsl:value-of select = "@id"/></id>
        <xsl:copy-of select = "name"/>
        <xsl:copy-of select = "creation-date" />
        <xsl:copy-of select = "modification-date"/>
        <xsl:copy-of select = "file-info"/>
        <xsl:copy-of select = "creator"/>
        <xsl:copy-of select = "last-modifier"/>     
      </file-item>        
</xsl:template>
</xsl:stylesheet>

XML结构是

<id>5060554</id>
<name>This is a File && and it is a "Test File" </name>
<creation-date timestamp="1487516375360">19.02.2017 14:59</creation-date>
<modification-date timestamp="1488128705695">26.02.2017 17:05</modification-date>
<file-info>
<name>Background-Wallpaper & Nature.jpg</name>
<creator user-id="2196">
<last-modifier user-id="2120">
5060554
这是一个文件&&它是一个“测试文件”
19.02.2017 14:59
26.02.2017 17:05
背景壁纸&Nature.jpg
输出还应该包含xml节点,这就是我在textarea中使用xsl:copy of而不是xsl:value of的原因。因为select=“name”的xsl:value将只输出这是一个文件,它是一个“测试文件”,而xsl:copy of将生成这是一个文件,它是一个“测试文件”

我正在使用XSLT版本1.o

我想要的输出是
这是一个文件&&;它是一个“测试文件”

您所说的输入XML包含

<name>This is a File && and it is a "Test File" </name>
这是一个文件&&它是一个“测试文件”
这是一个矛盾。如果它包含该字符串,则它不是XML。XML中的符号总是转义的。如果输入不是XML,那么就不能使用XSLT来处理它


您说“我们正在使用XSLT将数据转换为xml,然后再转换为html(网站的UI视图)。”似乎您将数据转换为xml的方式不正确,您需要解决这个问题。

要使用XSLT处理xml,您需要格式良好的输入数据。实体名称必须紧跟实体引用中的“&”。这意味着&字符需要在输入中转义或标记为CDATA(同样适用于