[xslt] xml-documenten invoegen

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 24-08 19:17
Ik heb 2 xml-documenten met beide een stylesheet (om om te zetten naar html) die ik wil samenvoegen. Eitje zou je zeggen, maar helaas.

Het ene documenten moet namelijk in de ander staan (als in een IFRAME), en het geheel moet worden geladen worden via dit ene documenten (dat dus in het andere staat) en omgezet worden via xslt naar html.

Nu kan ik best documenten samenvoegen met document() en stylesheets includen met xsl:include, maar dit lukt me dus niet. Ik heb ook nog op geen enkele site een voorbeeld kunnen ontdekken

Iemand hier suggesties of oplossingen voor? Thnx!

PS:
Ja, ik heb met Google gezocht.
Ja, ik heb een boek over XML.

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Heb je al geprobeerd dit op te lossen met een serverside-techniek? of vindt de transformatie clientside plaats? In dit laatste geval wordt het lastig denk ik.

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 24-08 19:17
Het vind clientside plaats, dit kan eigenlijk niet anders omdat er anders een berg nutteloze bandbreedte zou worden gebruikt en het geheel nogal traag zou worden.

Ik weet dat het moeilijk word :-( Ik snap nu ook eindelijk waarom iedereen zo ontevreden is over XSLT en waarom ze nu al aan v2 bezig zijn...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Klaus_1250: Het ene documenten moet namelijk in de ander staan (als in een IFRAME), en het geheel moet worden geladen worden via dit ene documenten (dat dus in het andere staat) en omgezet worden via xslt naar html.
Ik zie je probleem niet: een iframe verwijst toch naar een URL? Je kan dan toch gewoon verwijzen naar het XML document? Als de browser dit document wat in het iframe moet komen dan niet transformeert naar (X)HTML bij het ophalen, is dat een bug in de browser en eigenlijk niet jouw fout. Het heeft dan ook niets met XSLT te maken

Sowieso zou ik van iframe afstappen. iframe is geen onderdeel meer van XHTML 1.0 Strict en dus ook niet van XHTML 1.1 en zeker niet van XHTML 2.0. Je kan daarom beter gebruiken maken van een CSS2 oplossing. Als je niet weet hoe je dat doet, moet je in W&G zijn ;) .

Je hebt dan geen problemen meer met een eventuele browser en je kan gewoon je hele document in 1 klap opleveren. Je kan de zaak dan includen met de document() functie.
Ik snap nu ook eindelijk waarom iedereen zo ontevreden is over XSLT en waarom ze nu al aan v2 bezig zijn...
Ten eerste zal versie 2 dit 'probleem' niet oplossen omdat het simpelweg niet aan XSLT ligt.

Ten tweede is het een onjuiste constatering dat iedereen ontevreden is over XSLT. Heb je dit stukje over het vijf jarig jubileum van XML gelezen? XSLT komt daar nogal positief uit, als 1 van de weinig standaarden.

Ten derde hebben de meeste problemen die mensen hier op GoT wel met XSLT hebben te maken met een gebrek aan kennis van XSLT. Het is niet zomaar iets wat je even op een middagje leert, zeker niet als je nooit iets anders doet dan imperatief programmeren.

Er zijn wel degelijk problemen in XSLT en gelukkig wordt daarvan een deel opgelost in XSLT 2.0 :) .

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


  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 24-08 19:17
mbravenboer schreef op 13 februari 2003 @ 12:16:
[...]

Ik zie je probleem niet: een iframe verwijst toch naar een URL? Je kan dan toch gewoon verwijzen naar het XML document? Als de browser dit document wat in het iframe moet komen dan niet transformeert naar (X)HTML bij het ophalen, is dat een bug in de browser en eigenlijk niet jouw fout. Het heeft dan ook niets met XSLT te maken
Nee, dat kan niet. Het moet namelijk crossbrowser-compatible zijn, en een paar bugs verhinderen dit.
Sowieso zou ik van iframe afstappen. iframe is geen onderdeel meer van XHTML 1.0 Strict en dus ook niet van XHTML 1.1 en zeker niet van XHTML 2.0. Je kan daarom beter gebruiken maken van een CSS2 oplossing. Als je niet weet hoe je dat doet, moet je in W&G zijn ;) .
? Ik geloof dat ik hier zelf ook al achter was. Overgens zou ik CSS2 nog niet gebruiken als je wil dat het crossbrowsercompatible moet zijn.
En ik denk dat ik meer van CSS2 weet als jij >:)
Je hebt dan geen problemen meer met een eventuele browser en je kan gewoon je hele document in 1 klap opleveren. Je kan de zaak dan includen met de document() functie.
Dat is mijn vraag! :) Dat gaat dus niet (waarom niet, zie originele post)
Ten eerste zal versie 2 dit 'probleem' niet oplossen omdat het simpelweg niet aan XSLT ligt.
Dat weet ik dus niet, maar in die tijd dat ik met XSLT werk ben ik nogal wat beperkingen tegengekomen. Mijn probleem is er ogenschijnlijk één van.
Ten tweede is het een onjuiste constatering dat iedereen ontevreden is over XSLT. Heb je dit stukje over het vijf jarig jubileum van XML gelezen? XSLT komt daar nogal positief uit, als 1 van de weinig standaarden.
Iedereen is misschien een te groot word, "een aantal" beter? Maar dit is offtopic.
Ten derde hebben de meeste problemen die mensen hier op GoT wel met XSLT hebben te maken met een gebrek aan kennis van XSLT. Het is niet zomaar iets wat je even op een middagje leert, zeker niet als je nooit iets anders doet dan imperatief programmeren.
Als je iets wil doen en het lukt niet, dan duidt dat op gebrek aan kennis. Bijna alles wat op GOT gevraagd word, komt voort uit gebrek aan kennis. De reden dat ik hier iets heb gepost is, omdat ik blijkbaar het idee heb dat ik gebrek aan kennis heb, en niet weet waar ik de kennis moet halen om mijn probleem op te lossen. In boeken en op internet vind ik het namelijk niet.

En what-the-*** is imperatief???

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Klaus_1250: Nee, dat kan niet. Het moet namelijk crossbrowser-compatible zijn, en een paar bugs verhinderen dit.
Als je crossbrowser wilt werken ben ik benieuwd waarom je wel XSL Transformaties client-side aan het toepassen bent. Als iets niet crossbrowser is, is dat het wel.
? Ik geloof dat ik hier zelf ook al achter was. Overgens zou ik CSS2 nog niet gebruiken als je wil dat het crossbrowsercompatible moet zijn.
Waarom noem je dat dan niet in je vraag? Je geeft duidelijk aan dat je bezig bent met iframes. Als ik dan suggereer dat je misschien beter geen iframes kan gebruiken, lijkt mij dat een goede tip.
En ik denk dat ik meer van CSS2 weet als jij >:)
Je kent mij kennelijk beter dan ik jou, maar dat is dan fantastisch. Iedereen zo z'n werkterrein he?
Dat is mijn vraag! :) Dat gaat dus niet (waarom niet, zie originele post)
Als je de document functie beheerst (dat geef je aan) zie ik het probleem niet echt. Ik denk dus dat je originele post niet zo duidelijk was als je wellicht zelf vermoed.
Dat weet ik dus niet, maar in die tijd dat ik met XSLT werk ben ik nogal wat beperkingen tegengekomen.
Ik ben benieuwd wat voor beperkingen jij dan gevonden hebt die aan XSLT zelf te wijten zijn. XSLT is namelijk Turing compleet en dat is tamelijk compleet. Ik ken maar 1 serieus probleem, maar die ga ik natuurlijk niet verklappen ;) .
De reden dat ik hier iets heb gepost is, omdat ik blijkbaar het idee heb dat ik gebrek aan kennis heb.
Gebrek aan kennis is geen probleem, daar kan aan gewerkt worden. Maar waarom lever je dan direct zoveel commentaar op XSLT?
En what-the-*** is imperatief???
Ik denk dat Google daar een prima antwoord op kan vinden. Ik zou de vraag dan wel iets anders stellen :+ .

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hier trouwens een transformatie die ik gebruik om navigatie aan de paginas van m'n site toe te voegen. Je kan hier volgens mij alle benodigde onderdelen uithalen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version="1.0"?>
 
<xsl:transform version="1.0"
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
             xmlns:html="http://www.w3.org/1999/xhtml"
                  xmlns="http://www.w3.org/1999/xhtml"
                exclude-result-prefixes="html xsl">

    <xsl:output method="xml" indent="yes" encoding="UTF-8"
          doctype-public="-//W3C//DTD XHTML 1.1//EN"
            doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
 
  <xsl:template match="/html:html">
      <html xml:lang="en">
          <head>
              <title>
                  <xsl:text>mbravenboer.org - </xsl:text>
                  <xsl:value-of select="html:title/text()"/>
              </title>
 
              <link rel="stylesheet" href="navigation.css" type="text/css"/>
              <link rel="stylesheet" href="general.css"    type="text/css"/>
 
              <xsl:copy-of select="html:head/*"/>
          </head>
 
          <body>
            <div class="body">
              <div class="title">
                <span class="site-name">
                  <a class="grey-on-blue" href="http://www.mbravenboer.org">mbravenboer.org</a>
                </span>
                <span class="page-title">
                  <a class="grey-on-blue" href="{html:file/text()}.xhtml">
                    <xsl:value-of select="html:title/text()"/>
                  </a>
                </span>
              </div>
         
              <div class="content">
                <xsl:copy-of select="html:body/*"/> 
              </div>
            </div>
  
            <xsl:copy-of select="document('left-index.xhtml')"/>
          </body>
      </html>
  </xsl:template>
</xsl:transform>

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


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Ik geloof dat ik hier zelf ook al achter was. Overgens zou ik CSS2 nog niet gebruiken als je wil dat het crossbrowsercompatible moet zijn.
zoals mbravenboer al zegt als er iets is wat totaal niet cross-browser compatible is dan is het wel XSL.

Om het clientside te laten plaatsvinden is eerder onmogelijk dan moeilijk in dit geval.
Ik denk toch dat de transformatie op de server te laten plaats vinden de beste oplossing is, in ieder geval heb je dan ook geen problemen mbt compatibiliteit ;)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones

Pagina: 1