XSL转换和特殊XML实体转义
我有一个用XSL转换的XML文件。有些元素必须更改,有些元素必须保持原样-具体地说,带有实体的文本应该保持原样,在我的例子中,“,,,,,,,”,将相应地更改为“和&apos; 测试XML:XSL转换和特殊XML实体转义,xml,xslt,entity,escaping,Xml,Xslt,Entity,Escaping,我有一个用XSL转换的XML文件。有些元素必须更改,有些元素必须保持原样-具体地说,带有实体的文本应该保持原样,在我的例子中,“,,,,,,,”,将相应地更改为“和&apos; 测试XML: <?xml version="1.0" encoding="UTF-8" ?> <root> <element> " & ' <
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<element>
"
&
'
<
>
</element>
</root>
"
&;
&载脂蛋白;
转换文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no" indent="no" />
<xsl:template match="element">
<xsl:copy>
<xsl:value-of disable-output-escaping="no" select="." />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
结果:
<?xml version="1.0" encoding="UTF-8"?>
<element>
"
&
'
<
>
</element>
"
&;
'
预期结果:
<?xml version="1.0" encoding="UTF-8"?>
<element>
"
&
'
<
>
</element>
"
&;
&载脂蛋白;
我有两个问题:
- 为什么这些实体中的一些被转化,而另一些则没有
- 我怎样才能得到想要的结果
和&
始终必须在XML中转义。它们在XML中有特殊的含义,因此如果它们是数据(而不是标记)的一部分,则必须对其进行特殊处理
另外两个,“
和”
,可以转义,它们的实体名称为XML所知(主要是为了启用正确运行的属性值,如下所示:
<xml ackbar="He said, "It's a trap!"" />
<xml ackbar='He said, "It's a trap!"' />
你总是可以避开原来的符号,本质上它看起来像
&quot;
请查看我问题的“期望结果:”部分-它没有正确呈现,因此我对其进行了编辑。但它不会影响我的答案。;-)我可以更明确地说:您可能无法获得所需的结果,而且在任何情况下,您都不应该关心XML文件中单引号或双引号的呈现方式。似乎没有其他意见,而且这个答案信息丰富,所以我接受。谢谢。