Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSL转换和特殊XML实体转义_Xml_Xslt_Entity_Escaping - Fatal编程技术网

XSL转换和特殊XML实体转义

XSL转换和特殊XML实体转义,xml,xslt,entity,escaping,Xml,Xslt,Entity,Escaping,我有一个用XSL转换的XML文件。有些元素必须更改,有些元素必须保持原样-具体地说,带有实体的文本应该保持原样,在我的例子中,“,,,,,,,”,将相应地更改为“和&apos; 测试XML: <?xml version="1.0" encoding="UTF-8" ?> <root> <element> &quot; &amp; &apos; &lt;

我有一个用XSL转换的XML文件。有些元素必须更改,有些元素必须保持原样-具体地说,带有实体的文本应该保持原样,在我的例子中,将相应地更改为&apos;

测试XML:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <element>
        &quot;
        &amp;
        &apos;
        &lt;
        &gt;
    </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>
        "
        &amp;
        '
        &lt;
        &gt;
    </element>

"
&;
'
预期结果:

<?xml version="1.0" encoding="UTF-8"?>
    <element>
        &quot;
        &amp;
        &apos;
        &lt;
        &gt;
    </element>

"
&;
&载脂蛋白;
我有两个问题:

  • 为什么这些实体中的一些被转化,而另一些则没有
  • 我怎样才能得到想要的结果

原因是,
&
始终必须在XML中转义。它们在XML中有特殊的含义,因此如果它们是数据(而不是标记)的一部分,则必须对其进行特殊处理

另外两个,
,可以转义,它们的实体名称为XML所知(主要是为了启用正确运行的属性值,如下所示:

<xml ackbar="He said, &quot;It's a trap!&quot;" />
<xml ackbar='He said, "It&apos;s a trap!"' />

你总是可以避开原来的符号,本质上它看起来像

&amp;quot;

请查看我问题的“期望结果:”部分-它没有正确呈现,因此我对其进行了编辑。但它不会影响我的答案。;-)我可以更明确地说:您可能无法获得所需的结果,而且在任何情况下,您都不应该关心XML文件中单引号或双引号的呈现方式。似乎没有其他意见,而且这个答案信息丰富,所以我接受。谢谢。