我有一个包含&
和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时出错
请帮我解决这个问题。
答案 0 :(得分:0)
您需要escape them,就像在任何XML文档中一样。
&
的转义为&
。
<?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>
答案 1 :(得分:0)
我猜这些XML文件是由字符串连接生成的..否则你最终无法使用未编码的XML。
只有你可以摆脱特殊字符的方法是使用任何编程语言,如C#,VB.NET并将文件加载为字符串..
使用字符串操作操作..
string.Replace("&","&");
根据Flynn1179的评论更新:
如果您害怕遇到问题,您的XML已经编码了一些字符..那么再添加一行:
string.Replace("&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