如何跳过XSL中没有节点的记录?



这是我的XML:

    <node>
      <siraj>abc</siraj>
      <shaik>ab</shaik>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <shaik>ab</shaik>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <shaik>ab</shaik>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <basha>si</basha>
    </node>

和 XSLT:

    <xsl:for-each select="//node">
    <xsl:if test="not(node/shaik)">
    <xsl:value-of select="siraj"/>
    <xsl:value-of select="basha"/>
    </xsl:if>
    <xsl:for-each>

我有一个类似上面的 xml。我必须跳过没有<shaik>子节点的节点。我尝试使用xsl:for-each但我无法得到答案。

查找用于复制整个文档的标识转换。然后,您可以从那里添加要添加,删除或跳过某些元素的"例外"。

此 XSLT:

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

应用于此 XML 文档:

<nodes>
    <node>
      <siraj>abc</siraj>
      <shaik>ab</shaik>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <shaik>ab</shaik>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <shaik>ab</shaik>
      <basha>si</basha>
    </node>
    <node>
      <siraj>abc</siraj>
      <basha>si</basha>
    </node>
</nodes>

给出以下结果 XML:

<nodes>
    <node>
        <siraj>abc</siraj>
        <basha>si</basha>
    </node>
    <node>
        <siraj>abc</siraj>
        <basha>si</basha>
    </node>
</nodes>

相关内容

  • 没有找到相关文章