处理xsl中的特殊字符

时间:2012-11-27 10:48:39

标签: xml xslt special-characters

我有一个包含&whitespaces等特殊字符的xml。 我想在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时出错 请帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

您需要escape them,就像在任何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>

答案 1 :(得分:0)

我猜这些XML文件是由字符串连接生成的..否则你最终无法使用未编码的XML。

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

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

根据Flynn1179的评论更新:

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

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

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

示例:使用XML DOM而不是String-concat

答案 2 :(得分:0)

如果XML文件无效,则无法使用XSLT对其进行转换。要在xml中保留字符串,请在XML中使用CDATA部分。然后,您可以安全地使用XSLT来选择那些CDATA。 请查看以下帖子,了解如何使用CDATA保持转义字符。

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