[XML/XSL] Ontwerp probleem

Pagina: 1
Acties:

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Ik ben net begonnen met XML en XSL en heb http://www.w3schools.com door genomen en al gezocht, maar niets gevonden.
Nu het probleem:

Ik wil een site die qua uiterlijk en menu overal hetzelfde is. Alleen de inhoud verschilt per onderdeel. Nu wil ik dit doen door 1 XSL bestand te gebruiken voor het menu. Voor de body wil ik verschillende XML bestanden maken. En dan per body-inhoud nog een XSL bestand.


Dit is mijn XML bestand (playlist.xml):
code:
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="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="common.xsl"?>
<playlist>
  <song>
    <artist>Metallica</artist>
    <title>Enter Sandman</title>
  </song>  
  <song>
    <artist>Metallica</artist>
    <title>For Whom the Bell Tolls</title>
  </song>  
  <song>
    <artist>Metallica</artist>
    <title>Seek Destroy</title>
  </song>  
  <song>
    <artist>Metallica</artist>
    <title>So What</title>
  </song>  
</playlist>


En dit de bijbehoorden XSL bestand (playlist.xsl):
code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="playlist">
    <xsl:foreach select="playlist/song">
      <tr>
        <td><xsl:value-of select="artist"/></td>
        <td><xsl:value-of select="title"/></td>
      </tr>
    </xsl:foreach>
  </xsl:template>
</xsl:stylesheet>


Dit is een deel van common.xsl:
code:
1
2
3
4
5
6
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
...
</xsl:template>
</xsl:stylesheet>


Hoe krijg ik nu voor elkaar dat playlist.xsl aangeroepen wordt? En is dit uberhaupt mogelijk?

[ Voor 61% gewijzigd door TheNameless op 23-04-2004 18:02 . Reden: Iets duidelijker gemaakt ]

Ducati: making mechanics out of riders since 1946


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Als jij aan een xml bestand een xslt bestand hebt gekoppeld en als de browser xsl transformaties uit kan voeren, dan zou het gewoon moeten werken.

[edit] mijn antwoord slaat nergens meer op

Omschrijf nou eerst eens heel duidelijk wat je wilt (en niet hoe je het wilt gaan oplossen). En daarna opschrijven hoe je het wilt gaan oplossen.

[ Voor 42% gewijzigd door Alarmnummer op 23-04-2004 17:59 ]


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Het werkt idd ook wel. Zo lang ik zeg dat alleen common.xsl moet worden uitgevoerd dan gaat het goed, maar als ik zeg dat ook playlist.xsl moet worden uitgevoerd dan gaat het mis.

Ducati: making mechanics out of riders since 1946


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

MayaFreak schreef op 23 april 2004 @ 17:59:
Het werkt idd ook wel. Zo lang ik zeg dat alleen common.xsl moet worden uitgevoerd dan gaat het goed, maar als ik zeg dat ook playlist.xsl moet worden uitgevoerd dan gaat het mis.
Je wilt 2 xsl bestanden erop los laten?

Ik ben zelf geen xsl guru maar ik weet wel dat je xslt bestanden oa kunt extenden. Je zou dan ook jouw speciale xsl kunnen laten extenden van een common xsl en hoef je dus maar 1 file aan te roepen.

[edit]
wat voor menu`s wou je trouwens genereren? Dingen die ook open en dicht klappen?

[ Voor 9% gewijzigd door Alarmnummer op 23-04-2004 18:05 ]


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
De menu's zijn gewoon standaart plaatjes waar je op kunkt klikken, geen flash-objecten of iets dergelijks

Ducati: making mechanics out of riders since 1946


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

MayaFreak schreef op 23 april 2004 @ 18:07:
De menu's zijn gewoon standaart plaatjes waar je op kunkt klikken, geen flash-objecten of iets dergelijks
Met dhtml/css en javascript kom je ook een heel eind. Kijk maar eens op mijn site. Dat is ook gewoon opgezet mbv xml/xslt. Ik heb er voor gekozen om de transformaties van te voren allemaal al te laten plaatsvinden zodat minder hoge browser eisen kunt stellen.

[edit]
Kijk ook even naar xsl:import en xsl:include

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:import href="copyright.xsl"/>
<xsl:variable name="owner">Wrox Press Ltd</xsl:variable>
<xsl:include href="date.xsl"/>
<xsl:output method="xml" encoding="iso-8859-1" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="date">
<date><xsl:value-of select="$date"/></date>
</xsl:template>
<xsl:template match="copyright">
<copyright><xsl:call-template name="copyright"/></copyright>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>


Je mag het zelf mooi opmaken ;)

[edit]
In het begin vond het hele XML gebeuren ongelovelijk irritant door een groot gebruik aan samenhangende literatuur. Overal lees je wat maar nergens genoeg om er goed mee uit de voeten te kunnen. Ik heb professional XML van Wrox aangeschaft en toen was die ellende over. 1 boek met een enorm scala aan xml gerelateerde onderwerpen. Als je veel met XSLT bezig gaat kun je eventueel Professional XSLT van Wrox ook ff checken.

[ Voor 91% gewijzigd door Alarmnummer op 23-04-2004 18:35 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
code:
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="song">
    <tr>
      <td><xsl:value-of select="artist"/></td>
      <td><xsl:value-of select="title"/></td>
    </tr>
  </xsl:template>
</xsl:stylesheet>


code:
1
2
3
4
5
6
7
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:apply-templates select="//playlist/song"/>
  </xsl:template>
  <xsl:include href="playlist.xsl"/>
</xsl:stylesheet>

Zoiets?

Noushka's Magnificent Dream | Unity


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
@Michali:
Dat werkt! Thanx voor de reply's.
Maar begrijp ik het nou goed dat ik in common.xsl nu alle andere xsl bestanden moet includen?

Ducati: making mechanics out of riders since 1946


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Wil je gebruik maken van een template uit een andere stylesheet, dan moet je die inderdaad includen of importeren. Het verschil tussen importeren en includen is dat de templates uit een include worden gezien, net alsof er helemaal geen include is geweest en de templates gewoon tot de stylesheet behoren. Je kunt ze dan ook gewoon gebruiken via apply-templates. Er wordt dan gekeken tussen de templates die al in de stylesheet zaten en de templates die ge-include zijn welke de meest nauwkeurige beschrijving/match geeft voor de geselecteerde nodes. Bij een import hebben de templates die al aanwezig waren in de stylesheet altijd voorang op de geimporteerde templates. Je kunt de templates uit een geimporteerde stylesheet gebruiken via xsl:apply-imports. Persoonlijk heb ik nog nooit een import nodig gehad. Als je een goede uitgewerkte stylesheet maakt, dan heb je dit waarschijnlijk ook gewoon niet nodig.

Noushka's Magnificent Dream | Unity

Pagina: 1