2016-03-13 115 views
0

我是非常新的XSLT,並且在嘗試刪除包含多個節點中的某些屬性的節點時遇到問題。我真的不知道術語(這使得在互聯網上找到合適的答案非常困難),所以下面的代碼可能會解釋我所尋找的比我更好的東西。刪除具有特定屬性的內部節點

原文:

<xml version="1.0" encoding="utf-8"> 
<pages> 
    <page id="main" default="true"> 
     <tabs> 
     <tab id="login" default="true"/> 
     <tab id="picture" default="true"/> 
     <tab id="password"/> 
     </tabs> 
    <page id="secondary" default="true"> 
     <tabs> 
     <tab id="pin" default="true"/> 
     <tab id="picture" default="true"/> 
     </tabs> 
    </page> 
    <page id="logout" default="true"> 
     <tabs> 
     <tab id="goodbye"/> 
     <tab id="login" default="true"/> 
     </tabs> 
    </page> 
</pages> 

目標:我想經過,並刪除所有畫面元素。

<xml version="1.0" encoding="utf-8"> 
<pages> 
    <page id="main" default="true"> 
     <tabs> 
     <tab id="login" default="true"/> 
     <tab id="password"/> 
     </tabs> 
    <page id="secondary" default="true"> 
     <tabs> 
     <tab id="pin" default="true"/> 
     </tabs> 
    </page> 
    <page id="logout" default="true"> 
     <tabs> 
     <tab id="goodbye"/> 
     <tab id="login" default="true"/> 
     </tabs> 
    </page> 
</pages> 

我有一個XSLT,但它沒有做我想要的東西,所以我在下面留下什麼,我覺得一個XSLT可以做到這一點就有點像。我的想法是我需要進入每一頁,所以不要提供具體的名稱,然後一旦我們進入標籤查找圖片ID,如果它存在...不要複製它...否則複製一切照常。如果有人對學習基礎知識(或者至少是XSLT的術語)有很好的建議,那將非常感激。謝謝!

+0

xml格式不正確。 – Rao

回答

0

下面的樣式會做

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

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

<xsl:template match="tab[@id='picture']"/> 

</xsl:stylesheet> 

它有兩個模板 - 一個通用剛剛遞歸拷貝輸入文件 - 具體用的圖片ID tab元素不產生任何輸出,從而有效地和一個刪除這些元素。

+0

啊! DUH。非常感謝你! – OhLawdyLawdy

相關問題