2

我有一个 xml,其中包含一些特殊字符,例如&whitespaces
我想在 xsl 中处理这些特殊字符。
如何处理 xsl 中的特殊字符?

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cpdhtml.xsl"?>
<pmd-cpd>
    <duplication lines="72" tokens="75">
        <file line="632" path="M:\PBA0039 & Code\Common\ssc\src\Main.c"/>
        <file line="1802" path="M:\PBA0039 & Code\Common\ssc\src\link1.c"/>
    </duplication>
</pmd-cpd>

在这里你可以看到&path转换 xml 时出错。
请帮我解决这个问题。

4

3 回答 3

0

您需要对它们进行转义,就像在任何 XML 文档中一样。

的逃避&&amp;

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cpdhtml.xsl"?>
<pmd-cpd>
    <duplication lines="72" tokens="75">
        <file line="632" path="M:\PBA0039 &amp; Code\Common\ssc\src\Main.c"/>
        <file line="1802" path="M:\PBA0039 &amp; Code\Common\ssc\src\link1.c"/>
    </duplication>
</pmd-cpd>
于 2012-11-27T10:51:44.777 回答
0

我猜这些 XML 文件是由字符串连接生成的 .. 否则你不可能得到未编码的 XML。

摆脱特殊字符的唯一方法是使用任何编程语言,如 C#、VB.NET 并将文件作为字符串加载..
使用字符串操作操作..

string.Replace("&","&amp;");

根据 Flynn1179 的评论更新:

如果您害怕遇到问题,您的 XML 已经编码了一些字符.. 然后再添加一行:

string.Replace("&amp;amp;","&amp;");

那么更好的解决方案是修改生成此类 XML 文件的代码..

示例:使用 XML DOM 代替 String-concat

于 2012-11-27T11:51:45.757 回答
0

如果 XML 文件无效,则不能使用 XSLT 转换它。要在 xml 中保留 excaping 字符,可以在 XML 中使用 CDATA 部分。然后您可以安全地使用 XSLT 来选择那些 CDATA。查看以下关于如何使用 CDATA 来保持转义字符的帖子。

http://vvratha.blogspot.com/2012/11/extracting-cdata-section-using-xslt.html

于 2012-11-27T18:13:05.867 回答