XSLT - &符号&实体破坏转型

时间:2011-02-26 00:24:43

标签: xml xslt

我在php中进行转换。

我收到一个要转换的大型XML文件 - 这很好但是在一个节点内有一个包含&的URL。字符(编码为&)即

<web:cacheurl>http://cc.bingj.com/cache.aspx?q=adewy&amp;d=4573100964054074&amp;w=95e613ec,b3e54511</web:cacheurl>

我认为一切都很好,但是&amp; &amp;中的{{1}}似乎打破了该节点上的任何转换以及xml中显示在其后面的所有节点。

如果我剥离所有&amp;超出XML只是放大器;问题是固定的,因此调试 - 我真的不想剥离它们然后在转换后把它们放回去,它有点hacky。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我无法重现这个所谓的问题。

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

应用于提供的XML文档(添加了名称空间声明,以使其格式正确):

<web:cacheurl xmlns:web="some:web">http://cc.bingj.com/cache.aspx?q=adewy&amp;d=4573100964054074&amp;w=95e613ec,b3e54511</web:cacheurl>

生成想要的正确结果

<web:cacheurl xmlns:web="some:web">http://cc.bingj.com/cache.aspx?q=adewy&amp;d=4573100964054074&amp;w=95e613ec,b3e54511</web:cacheurl>

同样的结果是由我使用的所有九个XSLT(1.0和2.0)处理器产生的。

答案 1 :(得分:0)

在Stylus studio 2011中使用Saxon 9.1 xslt处理器时遇到了这个问题。 使用Microsoft MSXML 6处理器时,问题消失了。

<强>更新

问题仅在属性值的使用&符号时出现