Jeg kan få det til at virke, hvis der kun står et tal i <data>, men det fungerer selvsagt ikke, når der er mere end én værdi, da min for-each så selvfølgelig fejler...
Findes der noget a la split(), hvor man kan spoecifere hvilket element i xml-træet, den skal splitte, og hvilken seperator, der skal vælges?
Den slags funktionalitet er lidt mere besværlig i XSLT.
En måde at løse det på er med rekursion og brugen af funktionen substring-before(). Så kan du nappe strengen inden komma og bruge den værdi, hvorefter du kalder funktionen igen med resten af strengen som parameter (overraskende nok hedder den funktion som finder resten af strengen substring-after() ;-))...
<xsl:if test="string-length($rest) > 0"> <!-- kald den funktion som skal kaldes med værdien --> <xsl:call-template name="template"> <xsl:with-param name="value" select="substring-before($rest,',')" /> </xsl:call-template>
<!-- foretag det rekursive kald for at få den næste værdi --> <xsl:call-template name="splitvalue"> <xsl:with-param name="rest" select="substring-after($rest,',')" /> </xsl:call-template> </xsl:if> </xsl:template>
Du må undskylde at jeg ikke har været til meget hjælp her til aften, men har lige været til noget familietamtam. Det er godt at se du er kommet frem til en løsning trods alt :)
Jeg tror dit hack fungerer fordi substring-before() skal bruge et positivt index at klippe strengen efter og hvis du er ved sidste id i strengen, så er der ikke noget komma og index på den den skal klippe ved er ikke større end 0 (eller hvilken værdi substring-before nu antager, hvis den ikke kan finde stopkriteriet). Godt tænkt! :)
det er helt fair - det er jo principielt det, lørdagen skal bruges til... snarere end at sidde foran computeren og tumle med xslt.
- men nu blev det løst... dejligt - og tak for hjælpen.
Andreas
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.