使用XSLT复制选定的节点和子节点

时间:2012-08-30 15:33:35

标签: xml xslt

我在进行XSLT转换时遇到了麻烦,我希望有人可以帮助我。 这是我正在使用的数据的结构,

<excelFiles>
    <sheet>
        <row index='1'>
            <column_1>allowedValue</column_1>
            <column_2>US</column_2>
             <column_3>allowedValue</column_3>
        </row>
        <row index='1'>
           <column_1>notAllowedValue</column_1>
           <column_2>US</column_2>
           <column_3>allowedValue</column_3>
        </row>
  </sheet>
</excelFiles>

我要做的只是复制没有子节点包含无效数据的行。这可以用XSLT吗?我被限制只使用XSLT来解决这个问题。

为清晰起见编辑:无效数据是指节点中唯一的值是' - '字符。

1 个答案:

答案 0 :(得分:2)

从身份转换开始,然后添加一个与您想要的节点匹配的无操作模板,并忽略它们:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- ignore any row element that has any child element whose text value is
       a single hyphen -->
  <xsl:template match="row[* = '-']" />

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