1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

For Each mit bestimmten Bereich

Dieses Thema im Forum "XML Technologien" wurde erstellt von lexmex_83, 26. August 2013.

  1. lexmex_83

    lexmex_83 Grünschnabel

    Hallo hallo

    Ich versuche seit ein paar Stunden heraus zu finden, wie ich in einer For Each Schleife eine Art Regex setze. Sowas
    Code (Text):
    1. <xsl:for-each select="/XML/TAG[@number = 5-7]">



    @number ist die Position bzw. das Attribut


    Ich möchte nur den Wert aus den TAG's5,6 und 7 ausgeben. alle anderen sollen ignoriert werden


    Mein letzter Versuch war sowas, klappte aber nicht:
    Code (Text):
    1. <xsl:for-each select="/XML/TAG[(position() &gt; $currPOS) and (position() &lt; $sumPOS)]">
    wobei currPOS die aktuelle position() ist und sumPOS ist ein Wert aus einem anderem Knopf.



    Hat jemand eine Idee wie ich dies machen kann?


    Danke und Gruss
    lexmex_83
     
  2. hela

    hela Premium-User

    Regeln für XML-Namen:
     
  3. lexmex_83

    lexmex_83 Grünschnabel

    hallo

    ja klar, das dient nur zur Veranschaulichung...

    die Tagnamen sehen anders aus... aber spielt hierbei keine Rolle.


    Danke dennoch für Dein Kommentar
     
  4. Martin Honnen

    Martin Honnen Mitglied

    Mit XSLT 2.0 (und einem XSLT 2.0 Prozessor with Saxon 9 oder XmlPrime) geht

    Code (Text):
    1. <xsl:for-each select="/Root/Element[@number = (5 to 7)]">...</xsl:for-each>
    bzw. bei dem kurzen Bereich auch
    Code (Text):
    1. <xsl:for-each select="/Root/Element[@number = (5, 6, 7)]">...</xsl:for-each>
    Wenn man dann
    Code (Text):
    1. <Root>
    2.   <Element number="3">...</Element>
    3.   <Element number="5">...</Element>
    4.   <Element number="2">...</Element>
    5.   <Element number="6">...</Element>
    6. </Root>
    als Eingabe hat, werden vom for-each nur die Elemente
    Code (Text):
    1.   <Element number="5">...</Element>
    2.   <Element number="6">...</Element>
    verarbeitet.

    Mit position() kann man auch arbeiten, aber das macht eher Sinn mit
    Code (Text):
    1. <Root>
    2.   <Element>a</Element>
    3.   <Element>b</Element>
    4.   <Element>c</Element>
    5.   <Element>d</Element>
    6.   <Element>e</Element>
    7. </Root>
    dann wird etwa mit
    Code (Text):
    1. <xsl:for-each select="Root/Element[position() &gt; 1 and position() &lt; 5]">...</xsl:for-each>
    die Menge
    Code (Text):
    1.   <Element>b</Element>
    2.   <Element>c</Element>
    3.   <Element>d</Element>
    verarbeitet.
     
    sheel gefällt das.
  5. lexmex_83

    lexmex_83 Grünschnabel

    so einfach und doch so genial....

    wie sagt man so schön "vor lauter Bäumen sieht man den Wald nicht mehr"!

    Einfach "to" verwenden ah ah ah :)

    Danke für den HInweis
     
Die Seite wird geladen...