2011-04-19 69 views
1

我正在爲XML創建一個XSLT文件,其中包含標籤<beans:bean>,可能來自spring框架。基本上,XML的結構如下:可以xslt讀取或跳過<beans:beans>標記嗎?

<beans:beans> 
    <fix> 
     <message> 
       important content 
     </message> 
    </fix> 
</beans:beans> 

我不能找到一種方法來擺脫<beans:beans>標籤,其實對我來說,相關內容是message標籤下。使用<xsl:for-each select="fix/message">我能夠達到我需要的內容。但是我必須手動刪除<beans:beans>標籤

有沒有辦法讓XSLT跳過或閱讀<beans:beans>標籤?

+0

[通過XSLT卸下某些XML元素]的可能重複(http://stackoverflow.com/questions/1524786/removing-certain-xml-elements-via-xslt) – 2011-04-19 19:31:42

回答

0

此使用標識與倍率變換慣用解決:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:beans="http://someuri"> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="beans:beans"> 
     <xsl:apply-templates /> 
    </xsl:template> 
</xsl:stylesheet> 

應用於此輸入:

<root> 
    <beans:beans xmlns:beans="http://someuri"> 
     <fix> 
      <message> 
       important content 
      </message> 
     </fix> 
    </beans:beans> 
</root> 

移除不想要的元素:

<root> 
    <fix> 
     <message> 
       important content 
     </message> 
    </fix> 
</root> 

一些注意事項:

  • 這樣複製了文件中的所有內容,除了beans:beans元素
  • 您的beans元素具有名稱空間前綴。我已經添加了一個名稱空間URI來完成這個轉換工作。
  • 你的樣式表還需要注意名稱空間。請注意使用xmlns:beans="http://someuri"。您需要修改它以映射到實際的名稱空間beans
相關問題