Toon posts:

[XML/XSL] XSL gebruiken om oorspronkelijke XML te tonen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben vanuit m'n stage bezig met een content management system om webpagina's op te maken. Nou is de documentie van dat cms op sommige punten nogal gebrekkig.

Ik krijg een XML-file binnen, waar ik zelf geen toegang toe heb, die opgemaakt moet worden met XSL. Ik weet echter bijna niet wat voor inhoud die XML-file heeft.. ik weet hoe de root heet.. en ik ken een aantal leafs, maar ik wil graag weten wat voor extra informatie er nog is meegeleverd. Wat ik dus probeer te doen is om alle tags met hun inhoud weer te geven zodat ik de oorspronkelijke XML file weer terug krijg.

Wat ik nu heb is dit:
code:
1
2
3
4
5
6
7
8
<xsl:template match="//tcm:Component/*">
    <xsl:element name="div">
      <xsl:for-each select="./*">
       <xsl:value-of select="concat(name(), '&#xA;')"/>
       <br />
      </xsl:for-each>
    </xsl:element>
  </xsl:template>


In principe werkt dit grotendeels, maar ik kan hiermee niet zien welke tags childeren zijn en welke parent zijn en dat wil ik eigenlijk ook graag weten. Daarnaast wordt de inhoud nog steeds niet weergegeven.

Waarschijnlijk moet er iets recursiefs worden toegevoegd, om de verschillende iteraties uit elkaar te halen en dan met een opsparende parameter extra spaties te plaatsen voor iedere tag om te kunnen zien hoe diep de tag zich bevindt..

Is wat ik wil uberhaupt mogelijk? En zo ja, kan iemand me dan verder helpen om dit voor elkaar te krijgen?

[ Voor 8% gewijzigd door Verwijderd op 24-03-2005 15:56 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Voeg een algemene template toe:
code:
1
2
3
4
5
6
7
8
<xsl:template match="*">
  <xsl:element name="name(.)">
    <xsl:for-each select="@*>
      <xsl:attribute name="name(.)"><xsl:value-of select="." /></xsl:attribute>
    </xsl:for-each>
    <xsl:apply-templates />
  </xsl:element>
</xsl:template>

volgens mij moet dit wel werken.

Noushka's Magnificent Dream | Unity


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
code:
1
2
3
<xsl:template match="/">
    <xsl:copy-of select="." /> 
</xsl:template>


veel simpeler kan een XSL sheet niet zijn ;)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
uitslover, ik vond die van mij net zo mooi :P

Maar dat is idd veeel simpeler, ik wist niet eens dat dat kon.

[ Voor 16% gewijzigd door Michali op 24-03-2005 16:15 ]

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Ahh.. daar ben ik al een stuk mee geholpen. Dank je voor de hulp.

Ik heb nu de volgende code:
code:
1
2
3
4
5
6
7
8
9
<xsl:template match="*">
    <p><xsl:value-of select="name()"/></p>
    <xsl:element name="name">
        <xsl:for-each select="@*">
            <p><xsl:value-of select="name()"/> - <xsl:value-of select="."/></p>
        </xsl:for-each>
        <xsl:apply-templates/>
    </xsl:element>
</xsl:template>

Ik krijg nu alle tags en inhoud op het scherm, alleen kan ik nog niet zien hoe deze zich onderling verhouden; dus of de ene tag een child is van de andere. Kan ik hier iets met een variabele doen ofzo, die continu wordt aangepast met een concat bijvoorbeeld?

Laat maar.. Ik heb het al opgelost met CSS door een divje om <apply-templates> heen te gooien met een left-margin. Dank voor de hulp iig.

[ Voor 24% gewijzigd door Verwijderd op 24-03-2005 16:43 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Hmm dat is vreemd. Hij zou de structuur gewoon moeten behouden. Mischien dat het orginele document ook echt geen structuur heeft? Probeer de methode van Genoil eens. Dan weet je het zeker.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Die manier van Genoil levert ook alleen maar inhoud op, geen namen van tags en ook niet netjes gerangschikt, ofzo. Uiteindelijk had ik dus veel meer hulp aan jouw code, Michali ;)

Anyways, het is opgelost. Dus nogmaals bedankt voor de snelle respons.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Michali:
Hmm dat is vreemd. Hij zou de structuur gewoon moeten behouden.
Lees die stylesheet nog 's goed :P

edit:
Of prop anders eens een hele lange lijst met <p> ... </p> in een html'etje en kijk 's wat voor structuur dat oplevert :P

[/flauw]

[ Voor 34% gewijzigd door drm op 24-03-2005 18:32 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik zag het ook later ja. Maar de versie die ik gaf klopte wel. Die bedoelde ik ook eigenlijk. Ik had zijn versie nog niet echt bekeken toen :)

Noushka's Magnificent Dream | Unity

Pagina: 1