【发布时间】:2017-02-07 17:10:41
【问题描述】:
我需要使用 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;'))"/>
</xsl:template>
</xsl:stylesheet>
如何解决此问题的任何其他建议。例如,我输入了 XML 文件,例如:
<?xml version="1.0" encoding="UTF-8"?>
<name>Stack & Exchange</name>
并且在 '&' 字符上失败。
请指教! 谢谢
【问题讨论】:
-
这有什么问题?
-
replace()函数可以替换为递归命名模板。但是,如果您的输入不是 XML,那么您根本无法使用 XSLT 1.0 处理器对其进行转换。 XSLT 1.0 中没有unparsed-text()。 -
输入的 xml 无效 将它传递给您的人不能声称提供 xml - 解决这个问题。
-
Stefan,我知道这是无效的!这是我的解决方案,如何验证和修复格式不正确的 XML 文件...在收到的 XML 文件中,将 '&' 替换为 &
-
@Darius XSLT 1.0 做不到;寻找其他工具(例如文本编辑器)。
标签: xslt-1.0