2011-02-26 33 views
0

我正在做我在php中的轉換。XSLT - &符號&實體中斷轉換

我收到了大量的XML文件轉換 - 這工作正常,但一個節點內部有一個包含&字符(編碼爲&),即

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

所有井的url和好,我想,然而&amp;中的&似乎破壞了該節點以及在它後面出現在xml中的所有節點的任何轉換。

如果我將所有&從XML中刪除到只是amp;這個問題是固定的,因此被調試 - 我真的不想將它們去掉,然後在轉換之後將它們重新放回去,這有點冒險。 任何想法?

+0

請說你做了什麼,併發生了什麼事發生

問題:

更新。 「似乎打破任何轉變」對於診斷來說不夠精確。 – 2011-02-26 08:48:28

回答

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)處理器產生的

+0

你是對的,這不是問題。 XML中的其他地方正在導致這種問題成爲一個問題。 – amcc 2011-02-26 17:41:56

0

我在使用Stylus Studio 2011中的Saxon 9.1 xslt處理器時遇到此問題。 使用Microsoft MSXML 6處理器時,問題消失。只有在屬性值使用符號時...