kris: xslt doppelte einträge entfernen

hey, bitte helft mir.

habe folgende xml:

<rowset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" nrofrows="3780">

<row>
 <vst_id>21195</vst_id>
 <vstg>Die Werkstatt der Schmetterlinge</vstg>
 <erlaeuterung>bla</erlaeuterung>
 <service>ab 7 Jahre</service>
 <erlaeuterung>bla</erlaeuterung>
 <ort>Theater</ort>
 <vstr_name>Theater</vstr_name>
 <vstr_firma1>Theater</vstr_firma1>
 <vstr_firma2>Puppentheater</vstr_firma2>
 <datum_von>14.12.2006</datum_von>
 <datum_bis>14.12.2006</datum_bis>
 <zeit_von>10:00</zeit_von>
 <genre>Weitere Veranstaltungen</genre>
</row>
</rowset>

wie bekomme ich mit hilfe einer xslt die doppelten Einträge von <erlauterungen> weg. es soll nur noch einmal erlaeuterungen im
ergebnis-xml vorhanden sein.

hab das so probiert aber es funktioniert nicht. wo könnte da der fehler liegen?

<xsl:template match="erlaeuterung">
 <xsl:for-each select="erlaeuterung">
  <xsl:sort select="." />
  <xsl:if test="not(preceding-sibling::erlaeuterung = .)">
   <xsl:element name="erlaeuterung">
    <xsl:value-of select="."/>
   </xsl:element>
  </xsl:if>
 </xsl:for-each>
</xsl:template>

vielen vielen danke für eure hilfe!

  1. Hallo,

    hey, bitte helft mir.

    Wir lesen auch weiter unten: https://forum.selfhtml.org/?t=143958&m=934701

    wie bekomme ich mit hilfe einer xslt die doppelten Einträge von <erlauterungen> weg. es soll nur noch einmal erlaeuterungen im
    ergebnis-xml vorhanden sein.

    hab das so probiert aber es funktioniert nicht. wo könnte da der fehler liegen?

    <xsl:template match="erlaeuterung">
    <xsl:for-each select="erlaeuterung">

    Das kann nur dann funktionieren wenn du so etwas hast:
    <erlaeuterung>
      <erlaeuterung>bla bla </erlaeuterung>
    </erlaeuterung>

    Ad da funktioniert dein Template nicht mehr, weil's nie zutrifft.

    Also:
    <xsl:template match="row">
      <xsl:variable name="erl" select="erlaeuterung" />
    <!-- andere XSL-Anweisungen -->
      <xsl:if test="not(preceding-sibling::row[erlaeuterung = $erl])">
       <xsl:element name="erlaeuterung">
        <xsl:value-of select="$erl"/>
       </xsl:element>
      </xsl:if>
    <!-- andere XSL-Anweisungen -->
    </xsl:template>

    Grüße
    Thomas

    1. hmm

      Das klappt aber irgendwie nicht so wie ich das haben wollte.
      Mit deinem Quelltext lösch ich ja nur den Inhalt von erlaeuterung. Ich möchte ja aber eins der beiden Elmente löschen, da ich die nicht doppelt in meinem neues xml haben will.

      1. Hallo,

        Das klappt aber irgendwie nicht so wie ich das haben wollte.
        Mit deinem Quelltext lösch ich ja nur den Inhalt von erlaeuterung. Ich möchte ja aber eins der beiden Elmente löschen, da ich die nicht doppelt in meinem neues xml haben will.

        Dann muss du mal schon ei wenig mehr von deinem XML zeigen.
        Kann <erlaeuterung> innerhalb vom <row> mehrmals vorkommen?
        Wie behandelst du <row> überhaupt? (sprich zeige bitte dein XSLT).

        Grüße
        Thomas

  2. Hi,

    hey, bitte helft mir.

    Das habe ich bereits versucht. Darauf kam keinerlei Reaktion deinerseits.
    Und anstelle einer Reaktion Deinerseits auf meinen Vorschlag kommt jetzt ein Vordrängelposting.

    Was soll das?

    Naja, egal.
    Da ich jetzt weiß, daß Du auf Hilfe(versuche) sowieso nicht eingehst, werde ich auch nicht weiter versuchen, zu helfen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.