XSLT 1 - 如何替换'&'与'&'在XML文件中?

时间:2017-02-07 17:10:41

标签: xslt-1.0

我需要找到使用XSLT 1修复的解决方案!大多数发送的XML文件格式良好,有人通过添加字符(&<> ...)来搞乱。有什么方法可以替代我这边吗?我尝试使用XSLT 2,并且替换功能不起作用,因为我使用的是Microsoft的XSLT处理器

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:saxon="http://saxon.sf.net/"
  exclude-result-prefixes="xs saxon"
  version="2.0">
<xsl:param name="path" select="'file:///E:/foo.xml'"></xsl:param>
<xsl:template match="/">
<xsl:copy-of select="unparsed-text($path)"></xsl:copy-of>
<xsl:copy-of select="saxon:parse(replace(unparsed-text($path), '&amp;',      '&amp;amp;'))"/>
</xsl:template>
</xsl:stylesheet>

任何其他建议如何解决此问题。例如,我输入了XML文件,如:

  <?xml version="1.0" encoding="UTF-8"?>
  <name>Stack & Exchange</name>

并且'&amp;'失败了字符。

请指教! 谢谢

1 个答案:

答案 0 :(得分:0)

结论

两个观察

  • XSLT在输入中至少需要一个格式良好的XML文档,因此我不能用它来纠正无效的XML              (它是一种XML转换语言)
  • 为了在输入中使用替换或转义XML的无效字符,我需要确保使用XSLT 2.0处理器                             (我使用Microsoft处理器XSLT 1.0)

我看到两个选项

  • 如果我在输入时收到错误,请手动调查并验证并发回错误消息。 - 这是我试图避免的! (使用文本工具,如notepad ++,excel查找问题)。
  • 以.net语言编写纠正解析器,以便在加载为XML之前进行修复