0

ここに私の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たが、答えを得ることができません。

4

1 に答える 1

0

ドキュメント全体をコピーするために使用される恒等変換を調べますそこから、特定の要素を追加、削除、またはスキップする「例外」を追加できます。

この 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>
于 2013-11-01T00:08:25.393 に答える