Xml XSLT-输入与输出符号;amp;实体破坏变换
我正在用php进行转换 我收到了一个要转换的大型XML文件,该文件工作正常,但是在节点中有一个url包含&character(编码为Xml XSLT-输入与输出符号;amp;实体破坏变换,xml,xslt,Xml,Xslt,我正在用php进行转换 我收到了一个要转换的大型XML文件,该文件工作正常,但是在节点中有一个url包含&character(编码为&;)ie http://cc.bingj.com/cache.aspx?q=adewy&d=4573100964054074&;w=95e613ec,b3e54511 我想一切都很好,但是在中&似乎正在破坏该节点上的任何转换,以及xml中出现在该节点之后的所有节点 如果我将XML中的所有内容剥离为amp;这个问题已经解决了,因此已经调试
&;
)ie
http://cc.bingj.com/cache.aspx?q=adewy&d=4573100964054074&;w=95e613ec,b3e54511
我想一切都很好,但是在中&
似乎正在破坏该节点上的任何转换,以及xml中出现在该节点之后的所有节点
如果我将XML中的所有内容剥离为amp;这个问题已经解决了,因此已经调试过了——我真的不想在转换后把它们去掉再放回去,这有点麻烦。
有什么想法吗?我无法重现这个所谓的问题。 此转换:
<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>
<web:cacheurl xmlns:web="some:web">http://cc.bingj.com/cache.aspx?q=adewy&d=4573100964054074&w=95e613ec,b3e54511</web:cacheurl>
应用于提供的XML文档时(添加名称空间声明,使其格式良好):
http://cc.bingj.com/cache.aspx?q=adewy&d=4573100964054074&;w=95e613ec,b3e54511
生成所需的正确结果:
<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>
<web:cacheurl xmlns:web="some:web">http://cc.bingj.com/cache.aspx?q=adewy&d=4573100964054074&w=95e613ec,b3e54511</web:cacheurl>
http://cc.bingj.com/cache.aspx?q=adewy&d=4573100964054074&;w=95e613ec,b3e54511
我使用的所有九个XSLT处理器(1.0和2.0)都会产生相同的结果我在Stylus studio 2011中使用Saxon 9.1 XSLT处理器时遇到了这个问题。 使用Microsoft MSXML 6处理器时,问题消失了 更新:
只有在属性值中使用“与”时才会出现问题…请确切说明您做了什么以及发生了什么。“似乎正在破坏任何转换”对于诊断来说不够精确。你是对的,这不是问题所在。XML中的其他地方导致了这个问题。