For Each mit bestimmten Bereich

#1
Hallo hallo

Ich versuche seit ein paar Stunden heraus zu finden, wie ich in einer For Each Schleife eine Art Regex setze. Sowas
Code:
<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:
<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
 
#4
Mit XSLT 2.0 (und einem XSLT 2.0 Prozessor with Saxon 9 oder XmlPrime) geht

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

Mit position() kann man auch arbeiten, aber das macht eher Sinn mit
Code:
<Root>
  <Element>a</Element>
  <Element>b</Element>
  <Element>c</Element>
  <Element>d</Element>
  <Element>e</Element>
</Root>
dann wird etwa mit
Code:
<xsl:for-each select="Root/Element[position() &gt; 1 and position() &lt; 5]">...</xsl:for-each>
die Menge
Code:
  <Element>b</Element>
  <Element>c</Element>
  <Element>d</Element>
verarbeitet.
 
#5
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
 

Neue Beiträge