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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu
müssen Sie nur fügen Sie eine Vorlage hinzu
sorgt dafür, dass diese
DD
Elemente mitEEE/@type
nicht gleich'foo'
werden nicht kopiert.Nur versuchen, wählen Sie die Knoten, die Sie möchten mit xpath
Sollte diese nur kopieren 'EEE' - Elemente mit dem Attribut type=foo