[XSL] XML naar XML met bepaalde tags

Pagina: 1
Acties:

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 01-12 12:35
Ik heb hier een XML bestand, en nu wil ik via XSL tot een ander XML bestand komen, waarin alleen nog maar tags opgenomen staan die ik kies.

Stel dat ik heb :

XML:
1
2
3
4
5
6
7
8
9
<muziek>
   <album>
     <naam>Henk</naam>
     <prijs>2</prijs>
   </album>
   <album>
     <naam>Klaas</naam>
     <prijs>3</prijs>
   </album>


en ik wil dit krijgen:

XML:
1
2
3
4
5
6
7
<muziek>
   <album>
     <naam>Henk</naam>
   </album>
   <album>
     <naam>Klaas</naam>
   </album>


Zou iemand mij dit kunnen uitleggen? Als ik copy-off gebruik, wordt mijn tekst ineens niet meer opgemaakt maar gewoon alles in mijn browser gedumpt.

/edit

Ik heb w3schools doorgespit, nog een stapel documentjes dat ik nog had liggen van school, waar het ooit behandeld is, google, enzovoort. Toch lijkt het mij niet zo heel lastig te zijn, ik krijg het enkel niet voor elkaar |:(

[ Voor 15% gewijzigd door _eXistenZ_ op 05-07-2007 14:47 ]

There is no replacement for displacement!


Verwijderd

bijvoorbeeld:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<xsl:template match="muziek">
<muziek>
<xsl:apply-templates select="album" />
</muziek>
</xsl:template>

<xsl:template match="album">
<album>
<xsl:apply-templates select="naam" />
</album>
</xsl:template>

<xsl:template match="naam">
<naam>
<xsl:value-of select="." />
</naam>
</xsl:template>

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
code:
1
<xsl:output method="xml" />
Voor in je XSL is wellicht ook een handige toevoeging.

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 01-12 12:35
Thx, maar het wil nog niet lukken, Ik krijg alle waarden van de XML achter elkaar als plaintext geplakt.
Zoek het later nog wel eens uit.

There is no replacement for displacement!


  • akaIDIOT
  • Registratie: Januari 2005
  • Laatst online: 03-10 23:33
Je browser zal een ge-xsl't document altijd als plaintext laten zien. Als je firebug oid hebt kan je naar de generated source kijken, die is dan zoals je bedacht had.

*stu!ter* *boink*


  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 01-12 12:35
Nee andere XML bestanden worden wel met van die mooie paarse lettertjes in Firefox weergegeven ;)

/edit

Je zegt geXSLde... interresant.

Maar dan snap ik niet waarom je moet zeggen dat de output XML is, aangezien dat dan toch niet uitmaakt...

[ Voor 44% gewijzigd door _eXistenZ_ op 05-07-2007 17:46 ]

There is no replacement for displacement!


  • akaIDIOT
  • Registratie: Januari 2005
  • Laatst online: 03-10 23:33
Wat die ouput = xml doet zou ik zo ook niet weten, maar elke keer als ik iets xsl, dan denkt de browser dat ie het mag weergeven, omdat de xsl er bij staat als "stylsheet". An sich heeft ie daar natuulijk gelijk in, ware het dat het resultaat vaak helemaal niet bedoeld is voor directe weergave (ik gebruik het meestal bij AJAX-requests).

Wat je kan doen is een Javascript-xsltprocessor maken, en het resultaat daarvan in je xhtml-document gooien, als je van plan bent te gaan xsl'en naar (X)HTML...

je krijgt dan ongeveer
JavaScript:
1
2
3
var xsltProc = new XSLTProcessor();
var fragment = xsltProc.transformToFragment(xmlDoc, document);
document.getElementById("blaat").appendChild(fragment);

Hierin is xmlDoc een xml document van bijvoorbeeld een asynchroon request. De xsltProcessor moet natuurlijk wel eerst een xsl document inladen, maar dat is natuurlijk allemaal wel te googlen...

*stu!ter* *boink*


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
De output tag geeft gewoonweg de ouput van je XSL-document aan. De opties zijn "text", "html" of "xml", maar je XML-processor zou hier nog wat aan toe kunnen voegen denk ik. Zelf maak ik gebruik van MsXML, en daar maakt het wel degelijk een groot verschil.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:output 
        method="xml"
        version="1.0"
    />

    <xsl:template match="/">
        ...
        ...
        ...
    </xsl:template>

</xsl:stylesheet>

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je zegt dat de namen achter elkaar staan. Als je dan naar de broncode van het resultaat kijkt, is dan het resultaat wel goed? Want daar gaat het om. Dat is dan ook hetgeen je terug krijgt bij een ajax call en kan gaan verwerken.

Houd er rekening mee dat spiders van search engines geen hol begrijpen van ajax calls (die voeren namelijk de javascript niet uit) en die zullen daarom ook je content niet indexeren.

If it isn't broken, fix it until it is..

Pagina: 1