2016-03-13 71 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

相关问题