Avatar billede saxcon Nybegynder
15. februar 2008 - 12:14 Der er 7 kommentarer

Navn på næste node

Hej,

Jeg har en xml som ser sådan her ud:
<data>
<line>
<cont>a</cont>
<cont>b</cont>
<cont>c</cont>
<cont>d</cont>
<cont>e</cont>
</line>
<line>
<cont>xa</cont>
<cont>xb</cont>
<cont>xc</cont>
<cont>xd</cont>
<cont>xe</cont>
</line>
</data>

Nu har jeg lavet en XSLT som mapper til en flad fil med semicolon og anførselstegn.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="line">
<xsl:for-each select="*">"<xsl:value-of select="node()"/>";</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


Men hvordan undgår jeg anførselstegn efter sidste node? Det må være noget med at spørge på om den næste hedder "LINE" eller? Kan jeg gøre det med "Following Sibling"?
Avatar billede saxcon Nybegynder
15. februar 2008 - 12:15 #1
Rettelse: jeg vil ikke undgå anførselstegn til sidst, men semikolon naturligvis...
Avatar billede jokkejensen Novice
15. februar 2008 - 12:43 #2
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="line">
<xsl:for-each select="*">"<xsl:value-of select="node()"/><xsl:if test="position != last()">";</xsl:if></xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Avatar billede jokkejensen Novice
15. februar 2008 - 12:43 #3
sorry manglede () ved position

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="line">
<xsl:for-each select="*">"<xsl:value-of select="node()"/><xsl:if test="position() != last()">";</xsl:if></xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Avatar billede saxcon Nybegynder
15. februar 2008 - 12:51 #4
Elementært min kære Watson :-)

Smid et svar så giver jeg point!
Avatar billede saxcon Nybegynder
15. februar 2008 - 12:53 #5
Nu jeg har dig - kan du fortælle mig hvorfor outfilen begynder med en tom linie?
Avatar billede saxcon Nybegynder
15. februar 2008 - 13:33 #6
Nå den kunne jeg selv klare...
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="text"/>
<xsl:template match="line">
<xsl:for-each select="*">"<xsl:value-of select="node()"/>"<xsl:if test="position() != last()">;</xsl:if></xsl:for-each><xsl:text>&#10;</xsl:text>
</xsl:template>
</xsl:stylesheet>
Avatar billede jokkejensen Novice
19. februar 2008 - 12:00 #7
:)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester