XSLT: kopieren von bestimmten Knoten nur

Können Sie mir sagen, wie Registrierungsvorgang diese mit XSLT ?

Eingang:

<?xml version="1.0"?>
<A>
  <BB bb1="bb1" />
  <CC cc1="cc1" />
  <DD name="name1">
    <EEE type="foo" value="50">
      <FFFF id="id1">
    </EEE>
  </DD>
  <DD name="name2">
    <EEE type="bar" value="50">
      <FFFF id="id2">
    </EEE>
  </DD>
  <DD name="name3">
    <EEE type="foo" value="40">
      <FFFF id="id3">
    </EEE>
  </DD>

Ausgabe:

<?xml version="1.0"?>
<A>
  <BB bb1="bb1" />
  <CC cc1="cc1" />
  <DD name="name3">
    <EEE type="foo" value="40">
      <FFFF id="id3">
    </EEE>
  </DD>
  <DD name="name1">
    <EEE type="foo" value="50">
      <FFFF id="id1">
    </EEE>
  </DD>

I. e. alle kopieren, außer dass, wenn es ein DD, kopieren nur, wenn EEE/@Typ = "foo", und Sortieren Sie alle DD von EEE/@value.

Jetzt habe ich gerade festgestellt, xsl-code zu kopieren und alles Sortieren, indem Sie sagen EEE/@type zum Beispiel.

XSLT:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:strip-space elements="*" />
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()">
        <xsl:sort select="EEE/@type" />
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

Dass ist schon gut genug, aber ich möchte wirklich zu halten, nur die DD, wobei EEE/@type = foo.

Danke Ihnen sehr.

  • Könnte Sie buchen den XSLT-code, den Sie derzeit haben. Hoffentlich werden sollten nur kleinere änderungen an den code zu überprüfen, den einschlägigen @type-Attribut. Danke!
  • Getan Tim C ! Danke für Eure Antworten.
InformationsquelleAutor mikedu95 | 2014-04-03
Schreibe einen Kommentar