Announcement

Collapse
No announcement yet.

Extraktion distinkter Elemente

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Extraktion distinkter Elemente

    Hi,

    ich habe eine sehr große XML-Datei (hier natürlich beispielhaft schematisch verkürzt), aus der ich ein Extrakt per XSLT 1.0 - - ziehen möchte, das jeweils das erste Element aus "contentlist" enthält, wenn es das erste Mal auftritt, damit das Ergebnis kompakter ist.

    Einerseits bekomme ich es nicht hin, gezielt das erste Auftreten eines Elements abzufangen, andererseits frage ich mich, ob es einen guten Weg gibt, um die Struktur "drumherum" mit einfachen Mitteln beizubehalten.

    Meinen völlig dilettantischen ersten Versuch poste ich sicherheitshalber nicht.

    Vielen Dank im voraus!
    --
    Cheers Vince

  • #2
    So sollte es funktionieren:
    Code:
    <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">
      
      <xsl:key name="k1" match="contentlist/*" use="local-name()"/>
      
      <xsl:template match="@* | node()">
        <xsl:copy>
          <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
      </xsl:template>
      
      <xsl:template match="contentlist/*[not(generate-id() = generate-id(key('k1', local-name())[1]))]"/>
    </xsl:stylesheet>
    Zumindest wenn ich es richtig verstanden habe, dass das erste Element jedes Namens beibehalten werden sollen und die übrigen herausgefiltert werden sollen.

    Comment


    • #3
      Hi,

      Originally posted by Martin Honnen View Post
      So sollte es funktionieren: ...
      Zumindest wenn ich es richtig verstanden habe, dass das erste Element jedes Namens beibehalten werden sollen und die übrigen herausgefiltert werden sollen.
      Ja, das macht genau das, was es soll - jetzt muß ich es nur noch verstehen. Ich werde das mal nachlesen und auf meinen konkreten Fall anpassen ... vermutlich werde ich dann bald eine Folgefrage posten.

      Danke schon mal!
      --
      Cheers Vince

      Comment

      Working...
      X