Announcement

Collapse
No announcement yet.

problem beim vorherigen element der iteration

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

  • problem beim vorherigen element der iteration

    zunächst einmal - ich habe natürlich bereits bestehende forenbeiträge durchforstet und schon hinweise gefunden
    aber funktionieren tut es nicht:

    Code:
    <xsl:for-each select="knotenname">
    <xsl:value-of select="preceding-sibling::knotenname[1]"/>
    </xsl:for-each>
    so ist die theorie..

    jetzt die praxis:

    1) mein for each
    Code:
     <xsl:for-each select="stundenplan_info/daten/stundenplan/veranstaltungListe/veranstaltungItem//zeit[1][@zeit=$zeit][@wochentag=$tag][string-length(../../veranstaltungTyp) &lt; 4]">
    2)die stelle wo ich die ID des element DAVOR benötige (unter der berücksichtigung der bedingungen der for each) - zur ID komme ich vom suchknoten der for each folgendermaßen hin: ../../@id

    Code:
    <span style="position:absolute;left:0px;top:0px;"><input type="image" src="left_ar.gif" width="16" height="16" onclick="browseEvent({preceding-sibling:?[1]??../../@id??})"/></span>
    Code:
    </xsl:for-each>
    der code ist stark gekürzt
    ich bekomms einfach nicht hin, dass ich die id des items davor dem javascript übergeb
    die ? stellen die stellen dar an denen ich versuche was zu ändern und nicht weiterkomme

  • #2
    ich glaub ich hab preceding sibling falsch verstanden
    und komme so gar nicht an das ELEMENT der FOR EACH aktion, was davor stand, sondern an das element, was VOR dem aktuell ausgewähltem im xml steht oder?
    wie komm i aber an genau das was VOR dem aktuellen ist - aber nur in der for each?!

    Comment


    • #3
      Beispiel:

      Code:
      <xsl:template match="wurzel"> 
        <xsl:for-each select="knotenname">
          <xsl:value-of select="preceding-sibling::knotenname[1]"/><br />
        </xsl:for-each> 
      </xsl:template>
      ergibt bezogen auf

      Code:
      <wurzel>
        <knotenname>Inhalt 1</knotenname>
        <knotenname>Inhalt 2</knotenname>
        <knotenname>Inhalt 3</knotenname>
        <knotenname>Inhalt 4</knotenname>
        <knotenname>Inhalt 5</knotenname>
      </wurzel>
      die Ausgabe

      <br />Inhalt 1<br />Inhalt 2<br />Inhalt 3<br />Inhalt 4<br />

      Das erste knotenname-Element hat keinen Vorgänger dieses Namens, die anderen vier aber schon.

      Comment


      • #4
        mir ist noch nicht klar ob das
        a) bei komplexen bedingungen geht - da ich ja so knoten überspringe
        b) ob und wie ich vom gefundenen precedling cibling zu einer anderen relativen stelle komme (select="preceding-sibling::knotenname[1]" - ../../@id)

        Comment


        • #5
          Solange die Hierarchie richtig angesprochen wird, gibt es keine XPath-Grenzen (bis man oben oder am Ende ankommt ;-). Mit preceding-sibling::knotenname[1]/../../@id wird von diesem Geschwisterelement zwei parent-Ebenen hinauf gegangen und dort das id-Attribut abgefragt. Das kann man sich ja testweise ausgeben lassen. Auch local-name() kann hilfreich sein.

          Comment

          Working...
          X