我试图使用xslt将xml中的特殊字符转换为其编码形式。
例:
& to &
" to "
< to <
> 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">
输出也应该包含xml节点,这就是为什么我在textarea中使用xsl:copy而不是xsl:value-of。 Becausse xsl:value-of select =“name”只输出这是一个文件&&它是一个“测试文件”,而xsl:copy-of将生成这是一个文件&&它是一个“测试文件”
我使用的是XSLT版本1.o
我想要的输出是This is a File & & and it is a "Test File"
你说输入XML包含
<name>This is a File && and it is a "Test File" </name>
这是一个矛盾。如果它包含该字符串,那么它不是XML。 XML中的&符号总是被转义。如果输入不是XML,那么就不能使用XSLT来处理它。
你说“我们正在使用XSLT将数据转换为xml,然后转换为html(网站的UI视图)。”您似乎正在将数据错误地转换为XML,您需要修复它。