[xsl] header & footer dmv xsl:include

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik wil graag op een eenvoudige manier de headers en footers van mijn xsl templates aan kunnen passen, dus daarom dacht ik slim te zijn, deze in ieder xsl bestand te includen, omdat ik dan dat ene bestandje aan kan passen en dat door werkt in alle andere bestanden die het includen..

Ik heb het nu zo:

temp1.xml (xml):
HTML:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./temp1.xsl"?>

<document>
    <header />

    <p>test</p>

    <footer />
</document>


temp1.xsl (xsl):
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:include href="./global/xsl/xslHeader.xsl" />
<xsl:include href="./global/xsl/xslFooter.xsl" />

<xsl:template match="/">
    <xsl:apply-templates match="header" />
    
        <xsl:value-of select="p" />
        
    <xsl:apply-templates match="footer" />
        
</xsl:template>

</xsl:stylesheet>


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

<xsl:template match="header">
    <html>

    <head>
        <title>Ietswat</title>
    </head>
    
    <body>
</xsl:template>

</xsl:stylesheet>


xslFooter.xsl (xsl):
HTML:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="footer">
    </body>

    </html>
</xsl:template>

</xsl:stylesheet>


Maar dat werkt niet.. (krijg gewoon geen header of footers in mijn file :S) Als ik dan alles in 1 XSL plant, krijg ik gezeur over de sluitende BODY en HTML tags, want deze komende niet overeen met het XSL:TEMPLATE element, wat daarvoor geopend is ..

Hoe kan ik het beter of anders aanpakken dat ik het wel werkend krijg? Gaat er dus om dat het ook uiteindelijk in verschillende files komt te staan (datafile, headerfile, footerfile)..

[ Voor 17% gewijzigd door r0bert op 30-08-2003 13:54 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Moet je in de header en footer deze regels niet weglaten?:
HTML:
1
2
3
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
weet niet of het moet, maar het werkt in ieder geval niet .. :'(

  • roytanck
  • Registratie: Oktober 1999
  • Laatst online: 07-07 09:29
code:
1
2
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


Moet dit niet helemaal weg uit files die je wilt includen? Het is een tijd geleden dat ik XSL gedaan heb, maar er staat me zoiets bij...

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Waarom <header> en <footer> in je XML verwerken? Dat zijn toch dingen die je in zo'n opzet juist in je XSL wil afhandelen (scheiding van content / layout)?

This can no longer be ignored.


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

drm

f0pc0dert

Dit is helemaal niet de bedoeling van xsl, en ik begrijp ook niet waarom je dit wilt, eigenlijk...

allereerst is dit stukje geen valide (wellformed) xml:
XML:
1
2
3
4
5
6
7
8
9
<xsl:template match="header">
    <html>

    <head>
        <title>Ietswat</title>
    </head>
    
    <body>
</xsl:template>


Je sluit de body-tag tenslotte niet af.

Ten tweede is het de bedoeling dat je met templates werkt, niet met includes. Dat er in een include dan een template kan staan, dat is wat anders, maar je denkt nu volgens mij een beetje te veel op de php-manier.

't Zou volgens mij niet onverstandig zijn als je even een xsl tutorial door gaat nemen. dit is wel een aardige

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


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik zal het nog even een keertje toelichten want zo te merken wordt het niet helemaal begrepen :)

Ik heb bijvoorbeeld 50 templatefiles (allemaal verschillend), maar daar wil ik allemaal dezelfde header boven hebben. Dan kan ik wel in ieder XSL bestand dezelfde (HEADER)template gaan zetten, maar dat is een beetje overbodig lijkt mij, als je het ook gewoon 1x in een bestand kan zetten en die kan includen.

Daar komt nog bij, dat je hiermee het soort CSS idee overneemt, om de layout (in dit geval head) vanuit één bestand aan te passen..

Hopelijk is het nu een beetje duidelijk..


dus eerst heb ik bijv.

incl header..
HTML:
1
2
3
4
5
6
7
8
<html>
<head>

<title> titel is in iedere template nu dit </title>

</head>

....


na wijzigen in bijv dit:
HTML:
1
2
3
4
5
6
7
8
<html>
<head>

<title en nu in iedere template anders </title>

</head>

....

werkt die verandering door in alle templates die dit bestand als header includen, en hoef ik dus niet iedere template met de hand de header aan te gaan passen...

[ Voor 12% gewijzigd door r0bert op 30-08-2003 16:22 ]


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Die header en footer zou ik gewoon samen in 1 include doen, en dan niet met een apply-templates, maar met een call-template, je xml heeft er als het goed is immers niets mee te maken.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin

Pagina: 1