Toon posts:

[XML/XSL] XML/XSL gebruiken als Template Parser

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.
Ik ben net op GoT ik heb alles doorgelezen wat ik moest doorlezen, op andere sites gekeken, maar ik snap het toch nog niet, en hoop dat jullie me kunnen helpen. Ik hoop dat ik het goed doe :)

Nu mijn vraag, ik ben me laatst wat gaan verdiepen in XML en XSL. Vooral om het te gebruiken i.p.v. een TemplateParser. Ik vraag me alleen af hoe dit in ze werk gaat.

Ik snap dat XML voor de content zorgt, XSL FO voor de Style, en XSLT XML kan omzetten naar een ander XML bestand, of XHTML/Plain text. Maar hoe gaat dit in zijn werk als ik het wil gebruiken om mijn PHP Content en Layout te scheiden? Of kan dit helemaal niet met XML?

Zoals jullie wel gezien/ gelezen ;) hebben snap ik er nog niet veel van. Ik zou het erg waarderen als jullie me konden uitleggen wat nauw precies het nut is van XML/XSL en hierbij een evt. voorbeeld geven, en mijn ook mijn vraag kunnen beantwoorden. :)

  • Tp21
  • Registratie: December 2003
  • Laatst online: 09-03 17:01
dan kan je bijvoorbeeld een php script maken die als uitvoer een xml bestand geeft (met de "pure" data).
en daarvan kun je dan weer met xsl een xhtml compatible site van maken.
of je doet het direct in php (dus xml + xsl op de server al samenvoegen).

Verwijderd

Topicstarter
Bedankt voor je reactie :)

Dat is wel leuk en aardig, maar wat is het echte nut daarvan nauw? Ik snap dat je daarmee andere gebruikers het makkelijk kan maken om gegevens van je site te "rippen", maar is dat nauw het enige, kan je met die output ook andere handige dingen doen? Daarmee kan ik dan het nut van XML begrijpen en het gaan leren. Als ik begin met leren zonder weet waarvoor de taal precies voor dient is dat niet zo slim natuurlijk ;) Als ik dus mijn content en layout wil scheiden, doe ik dat dan zo:

PHP (Data) --> XML + XSL (=layout) = .html file ?

Ik hoef geen scripts (mag wel :Y) ) maar een heldere uitleg wat er dan zou moeten gebeuren, zoals hierboven. :)

  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Content en layout hou je toch verschillend met html en css. Dan hoef je geen tussenroute te maken en kan je gewoon van php naar html.

Tenzei xml echt een behoefte is...

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

Topicstarter
disjfa schreef op Saturday 07 January 2006 @ 19:52:
Content en layout hou je toch verschillend met html en css. Dan hoef je geen tussenroute te maken en kan je gewoon van php naar html.

Tenzei xml echt een behoefte is...
Ik snap dat niet helemaal, zou je je post wat meer willen onderbouwen? :)

Als ik mijn scripting (PHP) en HTML layout wil scheiden, dan lijkt mij XML de beste keus. Of maak ik daar een fout?

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Als je echt dingen wil scheiden, moet je eens op zoek gaan naar het "Model View Controller" (MVC) pattern. Heel kort:
Model: je model, bijvoorbeeld een mapping van een tabel uit een db, of een xml-file
View: je presentatie aan de gebruiker
Controller: zorgt voor alle business logic

Er zijn veel MVC-frameworks, zoals Ruby on Rails, maar er zijn ook frameworks in PHP, Java en Python geschreven. Zoek daar 's op, erg interessant.

Wat jij wil is denk ik het volgende:
Met php genereer je XML. Dit is bijvoorbeeld iets als
code:
1
2
3
4
5
<topic>
  <author>Kaduna</author>
  <title>Template Parser</title>
  <body>Hi!</body>
</topic>


Dit kan je met XSLT omzetten naar (b.v.) XHTML, en die kan je weer stylen met CSS.

Verwijderd

Topicstarter
Bedankt voor je uitleg :*)

Ik heb wat tutorials gevolgd van MVC, maar ik denk toch dat ik aan de slag ga met XML, en dan wel met de methode die jij zei. Alleen heb ik dan één vraag erover. Stel, ik heb een simpel script, dat steeds veranderd:

<?php echo rand(1,100); ?>

Daarvan maak ik XML steeds, die XML wordt opgeslagen als content.xml. De layout staat in XSL, deze heet layout.xsl. Layout.xsl maakt van content.xml een XHTML file, en deze bekijken de bezoekers, hier staat dus steeds een ander getal in als ze zouden refreshen, alleen dat gebeurd niet, want dan zou de bezoeker eerst het PHP bestand moeten aanroepen, en dan de (X)HTML?

Klopt dit, en hoe zou ik dat kunnen oplossen? :)

Verwijderd

Ik denk dat disjfa probeerde te zeggen dat het onzin is om een custom XML tussenoplossing te hebben als je toch alleen maar gebruikt om XHTML documenten te produceren. Dan kun je net zo goed direct XHTML genereren (dat is ook gewoon een XML document).

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Verwijderd schreef op zondag 08 januari 2006 @ 13:17:
Ik denk dat disjfa probeerde te zeggen dat het onzin is om een custom XML tussenoplossing te hebben als je toch alleen maar gebruikt om XHTML documenten te produceren. Dan kun je net zo goed direct XHTML genereren (dat is ook gewoon een XML document).
Inderdaad; xslt word echter wel interessant als je verschillende output "filters" (geef het een naam) wilt gebruiken. Dus bijvoorbeeld dat je het gewoon via de website als xhtml aanbiedt, maar direct ook een .doc en/of .pdf versie aan kan bieden zonder de content opnieuw te moeten genereren en simpelweg alleen maar een ander xslt te gebruiken.

Verwijderd

Topicstarter
Ok ik snap het :)

Het is dus niet verstandig/handig XML/XSL te gebruiken als Template Parser?

  • nXXt
  • Registratie: November 2004
  • Laatst online: 21-01 14:15

nXXt

Carpe omnia

Verwijderd schreef op zondag 08 januari 2006 @ 13:47:
Ok ik snap het :)

Het is dus niet verstandig/handig XML/XSL te gebruiken als Template Parser?
Dat kan wel en dat kan in sommig situaties handig zijn, maar in jouw situatie (enkel het genereren van XHTML pagina's) heeft het eigenlijk geen voordelen en is het alleen maar extra werk.

Je kunt PHP/ASP/Whatever beter de XHTML (en evt. CSS) direct laten genereren in jouw situatie.

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Volgens mij is XSLT nog steeds erg langzaam. Je kan misschien beter gewoon php als template-taal gebruiken, maar je code goed scheiden op basis van het MVC-model.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-01 16:11
Je haalt je data uit de dataresources met PHP. Deze stel je beschikbaar (voor transformatie naar welke vorm dan ook) in een XML document. Vervolgens gooi je hier de juiste XSLT stylesheet overheen.

Voordeel heb je dan dat je de XML-datasource voor verschillende doeleinden kan (her)gebruiken. Hetzelfde geld voor de XSLT.

PHP -> Dataresources
XML -> beschikbaar maken van selecties/filters op data
XSLT -> Structuur / tranformatie
XHTML -> Presentatie / layout
CSS -> Opmaak

Daarbij moet je in de XML laag de keuzes maken of het voor jou relevant is om gebruik te maken van deze tussenlaag, of waarom het juist NIET wenselijk zou zijn (extra kosten? of juist meer mogelijkheiden die daartegen op wegen). Ook opletten dat je de XML niet als opslag gaat gebruiken, want voor manipulatie van xmldata zelf, doorzoeken, relaties etc is het niet zo geschikt :)

  • :murb:
  • Registratie: Oktober 2001
  • Laatst online: 08-04 09:32

:murb:

@murb.nl

Kaduna, een zelfde idee als jij opwierp is wat ik zelf voor mijn eigen website heb gebruikt (en nog steeds (zo af en toe) mee bezig ben om het te verfijnen). Ik gebruik dus XHTML bestanden als opslag en, hoewel enkele mensen het vreemd lijken te vinden, pars ik deze met XSLT tot XHTML die de eindgebruiker krijgt. Er zitten echter dan wel wat stappen tussen. Mijn opzet is als volgt:

De in eerste instantie te parsen file is sitestructure.xml. Deze bevat verwijzingen naar metabestanden (RDF/XML) Deze meta bestanden staan in een content directory, of waar dan ook, hiervan is er dus voor iedere pagina 1 en bevat verwijzingen naar de daadwerkelijke inhoud. Rondom deze inhoud wordt met behulp van xslt auteurs informatie (meta info), site-navigatie etc. geparsed.

PHP gebruik ik enkel voor het aanroepen van de server side XSLT transformatie (en het doorgeven van variabelen). En op dit moment ben ik een klein admin systeem in deze taal aan het schrijven om niet langer zelf steeds XML bestanden te moeten blijven editen ;)
Pagina: 1