我需要使用 XSLT 1 找到修复的解决方案!大多数发送的XML文件格式良好,有人通过添加字符(&<>.(来弄乱。 有什么方法可以在我这边替换它吗?我尝试了 XSLT 2 和替换功能不起作用,因为我使用的是 XSLT 处理器Microsoft
<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;'))"/>
</xsl:template>
</xsl:stylesheet>
如何解决此问题的任何其他建议。 例如,我有输入XML文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<name>Stack & Exchange</name>
并且在"&"字符上失败。
请指教!谢谢
结论
两点观察结果
- XSLT 在输入时至少需要一个格式正确的 XML 文档,所以我不能使用它来更正无效的 XML (它是一种 XML 转换语言(
- 为了在输入上使用替换或转义 XML 的无效字符,我需要确保我使用 XSLT 2.0 处理器 (我使用Microsoft处理器 XSLT 1.0 (
我看到两个选项
- 如果我在输入时收到错误,请手动调查和验证,然后发回错误消息。 - 这是我试图避免的!(使用记事本++、excel 等文本工具查找问题(。
- 在加载为 XML 之前,用 .NET 语言编写要修复的更正解析器