[XSL] Meerdere XSL's over 1 XML

Pagina: 1
Acties:

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Ik heb een meerdere XML-files gemaakt die elk een dossier weergeven uit een database. (Ter archivering)

Ik wil de data uit deze XML-files kunnen presenteren doormiddel van een webbrowser. Dit kan via een XSL.

Het probleem is dat het XML-bestand heel groot is, de HTML weergave wordt dus behoorlijk onoverzichtelijk.

Wat ik nu graag zou willen is dat ik over 1 XML-file meerdere XSL's kan leggen. Dan zou ik vanuit de hoofd XSL kunnen linken naar dezelfde XML maar dan met een andere XSL er over die alleen gegevens weergeeft van een niveau dieper.

Ik heb in o.a. de tutorial van www.xfront.com alleen de mogelijkheid gevonden om 1 XSL te gebruiken.

Er is alleen nog een probleem de XML-files zijn niet meer aanpasbaar (nu nog wel, maar later niet meer) zij komen namelijk op DVD te staan.

Ik wil ze ook rechtstreeks vanaf de dvd laden, dus zonder tussenkomst van een webserver.

Graag zou ik dus zo iets hebben als file:///c:\dossier.xml?main.xsl. Wat een HTML weergave moet opleveren volgens de main.xsl stylesheet. (ik weet dat dit niet werkt, maar ik zoek iets in die strekking)

Ik hoop dat ik het een beetje duidelijk heb neergezet, weet iemand hier een oplossing voor? (ik kan namelijk nog wel wat andere oplossingen bedenken (dmv html en javascriptjes maar dit zou het mooiste zijn))

Alvast bedankt!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 10:30
include/import in je XSL :?

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Op maandag 03 juni 2002 22:22 schreef ddc het volgende:
include/import in je XSL :?
Bedankt voor je snelle reactie, ik denk alleen niet dat dit de oplossing is. Dit staat op xml.apache.org:
<xsl:include> allows you to include one stylesheet into another. The included stylesheet's templates will have the same default priorities and import precedence as the including stylesheet. <xsl:import> offers the same, but the import precedence of elements in an imported stylesheet is always less than that of the importing stylesheet.
Hiermee kan je in een XSL een XSL importeren. Ik wil over mijn XML meerdere XSL's leggen, zodat je verschillende views krijgt van de data.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Allereerst is het niet mogelijk om in een XML file aan te geven dat hij door meerdere XSLs getransformeerd moet worden. Die aanpak kan je dus wel vergeten helaas.

Met XSLT 2.0 zal het verschil tussen resultaat en input opgeheven worden. Dit is erg, heel erg, goed omdat je nu op het resultaat van een transformatie opnieuw transformaties kunt toepassen. Dit is nu niet mogelijk, tenzij je XSL processor specifieke functionaliteit gebreikt.

Met XSLT 2.0 zou je het effect wat jij wilt, dus kunnen bereiken door vanuit 1 transformatie meerdere traversals over de XML structuur te doen, eventueel nog in verschillende modes.

Voorlopig is er echter geen andere optie dan server-side je transformaties toepassen.

Je kan eventueel natuurlijk ook nog je stylesheet samenstellen door middel van transformaties, zodat je geen complexe zooi hoeft te tikken. XSLT is immers XML, dus ook dat kan je transformeren of opleveren in een XSL Transformatie.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Het kan wel als je zoiets doet:

data.xml:
code:
1
2
3
4
5
<?xml version="1.0"?>
<data>
  <bla>x</bla>
  <bla>y</bla>
</data>

bla1.xml:
code:
1
2
3
4
5
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="bla1.xsl"?>
<source>
  <file>data.xml</file>
</source>

bla1.xsl:
code:
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:variable name="file" select="document(source/file)"/>
  
  <xsl:template match="/">
    <xsl:apply-templates select="$file/data"/>
  </xsl:template>
  
  <xsl:template match="data">
    ...
  </xsl:template>
  
</xsl:stylesheet>

bla2.xml:
code:
1
2
3
4
5
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="bla2.xsl"?>
<source>
  <file>data.xml</file>
</source>

etc.

Als je dan bla1.xml opvraagt wordt data.xml getransformeerd met bla1.xsl en met bla2.xml wordt bla2.xsl gebruikt, enzovoort.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Volgens mij werd er bedoeld dat er over 1 XML meerdere stylesheets moeten worden gehaald in een soort keten.

Dit is alleen een oplossing voor het probleem dat je een XML juist graag met verschillende stylesheets wilt presenteren. Dit is in een browser-oplossing echt niet mogelijk omdat de stylesheet dan aangegeven staat in de XML file |:( .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 04 juni 2002 10:24 schreef mbravenboer het volgende:
Volgens mij werd er bedoeld dat er over 1 XML meerdere stylesheets moeten worden gehaald in een soort keten. Dit is alleen een oplossing voor het probleem dat je een XML juist graag met verschillende stylesheets wilt presenteren.
Nadat ik zijn post nog eens doorgelezen heb denk ik nog steeds dat yodax dat wel bedoelt. Ik kan iig nergens uit opmaken dat hij de XML in meerdere stappen wil transformeren. Maarja, er is maar één persoon die het antwoord heeft ;) Dus yodax: wat bedoelde je precies?

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Ik ga dit morgen uit proberen en zal het dan laten weten. Op het eerste gezicht denk ik dat het wel de oplossing is die ik zoek, ook al is het niet zo elegant.

Iig bedankt voor de reacties!

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
De oplossing van marcusk is wat ik zoek. Ik heb het even getest en het werkt perfect!

Ik kan dus nu; meerdere persentatie varianten maken van 1 xml file.

mbravenboer, ddc ook bedankt voor het meedenken!
Pagina: 1