Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

XML naar XML via XSLT

Pagina: 1
Acties:

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 22-11 20:54
Beste mensen,

Ik probeer een XML bestand om te zetten met XSLT naar een aangepaste XML bestand.
Nu heb ik een simpel lijstje met movies in een collection waar ik door heen loop om vervolgens enkel de titel en genre van de movie op te halen.

XML:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="movies.xsl" type="text/xsl"?>

<collection>
    <movie>
        <title>Titel 1</title>
        <genre>Gerne 1</genre>
        <year>Jaar 1</year>
    </movie>
    <movie>
        <title>Titel 2</title>
        <genre>Gerne 2</genre>
        <year>Jaar 2</year>
    </movie>
    <movie>
        <title>Titel 3</title>
        <genre>Gerne 3</genre>
        <year>Jaar 3</year>
    </movie>
</collection>


XSLT:
XSLT:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/collection">
    
        <xsl:for-each select="movie">
            
            <collection>
            
                <movie>
                    <xsl:value-of select="title" />
                    <xsl:value-of select="genre" />
                </movie>
            
            </collection>
            
        </xsl:for-each>
        
    </xsl:template>

</xsl:stylesheet>


Dit geeft mij echter geen XML terug. Ik heb al redelijk veel geprobeerd zoals de < en > omzetten naar &lt; &gt; maar dat mocht niet baten. Moet ik misschien een output type mee geven? Wat mis ik over het hoofd? :)

  • Roeligan
  • Registratie: December 2001
  • Laatst online: 22-07 11:37

Roeligan

Feyenoord

Ik krijg als ik de XML file los transformeer gewoon resultaat:

XML:
1
2
<?xml version="1.0"?>
<collection><movie>Titel 1Gerne 1</movie></collection><collection><movie>Titel 2Gerne 2</movie></collection><collection><movie>Titel 3Gerne 3</movie></collection>


Als ik de XML file in IE open krijg ik ook resultaat: Gerne 1 Jaar 1 Gerne 2 Jaar 2 Gerne 3 Jaar 3

[edit]
Het is genre, geen gerne :+

[ Voor 5% gewijzigd door Roeligan op 12-12-2012 13:17 ]

A real man fears not mortality for it's death, he fears mortality for it's lack of life!
RatPack #814


  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 20-11 12:23

edeboeck

mie noow noooothing ...

Volgende XSLT doet bij mij het werk correct (ttz: als je in de browser jouw XML wilt zien):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/collection">
    &lt;collection&gt;
        <xsl:for-each select="movie">
                &lt;movie&gt;
            &lt;title&gt;<xsl:value-of select="title" />&lt;/title&gt;
            &lt;genre&gt;<xsl:value-of select="genre" />&lt;/genre&gt;
                &lt;/movie&gt;
           
        </xsl:for-each>
    &lt;/collection&gt;
    </xsl:template>
</xsl:stylesheet>
De verschillen met jouw code zijn:
  • de collection-node opzetten buiten de for-each (anders herhaal je die telkens mee)
  • enkel de tags van de doelstructuur omzetten naar escaped-formaat