[XSLT] Variabelen veranderen

Pagina: 1
Acties:

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 22:45
In XSLT voer ik een aantal queries uit om vervolgens per resultaat uit de queries te bepalen of ik dit resultaat wil meenemen in de uiteindelijke output van de XML. Aan het einde van de output wil ik een overzicht van het totaal aantal records dat in de output-XML wordt meegegeven.

Wat ik wil is dus aan het begin een variabele definieren bijvoorbeeld:

<xsl:variable name="NumberOfRecords" text="0"/>

en iedere keer als ik een bepaald resultaat wil meenemen in de output moet de waarde van NumberOfRecords met 1 worden verhoogd.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Variabelen kun je niet veranderen in XSLT 1.0. Hoe het met 2.0 zit weet ik niet precies, maar daar zou je een XSLT over je output kunnen halen om het aantal te tellen.

Misschien kun je in 1.0 nog wat met <xsl:number>

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Je zou dit kunnen oplossen door op een recursieve manier je resultaten uit te printen. Je definieert dan een parameter die je verhoogt bij het opnieuw aanroepen van eigen template. Mischien kun je een stukje laten zien van hoe je het nu doet, dan kan ik kijken of dat mogelijk is.

Noushka's Magnificent Dream | Unity


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-04 12:54

Jaspertje

Max & Milo.. lief

Je kan het op de volgende manier wel doen:

[code]
<msxsl:script language="JScript" implements-prefix="tweak">

var KeyValues = new Array(10)
for(var I=0;I<10;I++)
{
KeyValues = 1;
}
function NewKey(aIndex)
{
var OldValue = Number();
OldValue = KeyValues[aIndex];
KeyValues[aIndex] = KeyValues[aIndex] + 1;
return Number(OldValue);
}
</msxsl:script>
<xsl:variable name="var">0</xsl:variable>
<xsl:variable name="var2">1</xsl:variable>

//Ophogen van de var1
<xsl:with-param name="varnummer" select="tweak:NewKey(number($var))"/>

[ Voor 14% gewijzigd door Jaspertje op 13-07-2005 09:46 . Reden: De parser werkt niet goed met alle [] die ik gebruik, excuus ]


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

De oplossing van Jaspertje zal wel alleen werken als je MSXML gebruikt, dat is natuurlijk een beetje jammer (sowieso nogal een ranzige hack, mijns inziens). De recursieve manier die Michali voorstelt is waarschijnlijk the way to go.

Rustacean


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
XSLT is toch Functional Programming? Dan heb je by design geen variabelen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
je kan ook een extra count() doen op het eind om te kijken hoeveel records je uitgeprint hebt.
Pagina: 1