Nieuwe knooppunten toevoegen aan bestaande variabele XSL

Ik heb een vraag over variabelen in XSL. Ik ben niet zo duidelijk over het concept van de variabelen.

Ik maak een variabelen in xsl-bestand als:


Vervolgens wil ik voor elke lus in een iteratie één knooppunt toevoegen aan bestaande variabelen zoals


A

Moet ik variabelen gebruiken om dit te bereiken? Zo ja, hoe kan ik nieuwe knooppunten toevoegen aan bestaande variabelen ..

Ik kan alleen in XSL-bestanden werken, geen toestemming om xml, xsd te openen of te wijzigen.

Dank je

1
Hallo Michael, ik heb hier een gerelateerde vraag geplaatst stackoverflow. nl/vragen/8424720/& hellip; bedankt voor je hulp.
toegevoegd de auteur Ataman, de bron
Om toe te voegen aan wat anderen hebben gezegd, als je ons vertelt hoe de invoer en uitvoer van je transformatie eruit zien (en zo nodig, hoe ze betrekking hebben) - dat wil zeggen, als je je transformatie als een functie beschrijft - dan zouden we in staat moeten zijn om laat zien hoe je het op een niet-procedurele manier moet coderen.
toegevoegd de auteur Michael Kay, de bron

2 antwoord

XSLT is a functional language. This, among other things means that variables, once defined are immutable (cannot be changed).

Elk probleem dat kan worden opgelost met een imperatieve oplossing kan niet alleen in XSLT worden opgelost, maar ook in elke functionele programmeertaal - waarschijnlijk op vrijwel dezelfde manier. In de meeste gevallen bestaan ​​er efficiënte functionele oplossingen die kunnen worden gebruikt.

Ik zou het ten zeerste aanbevelen een goed boek te lezen over functionele programmering - een als "Haskell in the real world". Niet alleen als algemeen belang, maar ook omdat in de komende XPath 3.0 / XSLT 3.0 en XQuery 3.0 functies zijn eersteklasburgers (hogere orde functies) en functies zoals fold-left() , fold-right() en map() zijn standaard in XPath 3.0.

Please, specify your problem precisely and many people will be able to provide an XSLT solution.

2
toegevoegd

Variabelen in XSLT zijn onveranderlijk; ze kunnen niet worden gewijzigd. (Ze moeten ook in één stap worden gedeclareerd en geïnitialiseerd.)

Het ziet er bijna naar uit dat je een uitvoerstructuur probeert te bouwen. Kun je dat resultaat direct in de lus uitvoeren? Als dat niet het geval is, moet u uw aanpak opnieuw bekijken.

1
toegevoegd