Toon posts:

[xml] transformatie naar niet-xml document

Pagina: 1
Acties:

Verwijderd

Topicstarter
Met xslt kun je xml documenten naar nieuwe xml documenten transformeren. Is er een vergelijkbare (dus met templates en xpath etc) 'standaard' techniek voor het transformeren van xml documenten naar niet-xml documenten (zoals bijvoorbeeld sourcecode) ?

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

drm

f0pc0dert

dat is toch juist het hele idee van xslt, dat je een xml document omzet naar elke andere vorm die je maar wenst :?

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


Verwijderd

Topicstarter
Op donderdag 09 mei 2002 02:31 schreef drm het volgende:
dat is toch juist het hele idee van xslt, dat je een xml document omzet naar elke andere vorm die je maar wenst :?
Nee, ik citeer de XSLT recommendation:
XSLT, which is a language for transforming XML documents into other XML documents

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Op donderdag 09 mei 2002 02:50 schreef Sneechy het volgende:
Nee, ik citeer de XSLT recommendation:
Dat is maar net hoe je het uitlegt.
XSLT is wel degelijk voor transformatie naar elke andere vorm.

Who is John Galt?


Verwijderd

Topicstarter
Ik heb nog even rondgevraagd op irc, en ook daar werd mij veelvuldig mede gedeeld dat xslt inderdaad toch echt voor allerlei (ook non-xml) transformaties geschikt is.

Toch vreemd dat xslt dan eigenlijk meer general-purpose is dan ze in de recommendation vermelden.. :?

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Volgens mij is het gewoon spraakverwarring.
Ik geloof dat XSLT voor de transformatie is en XSL voor de opmaak.
Maar in de praktijk gebruik je ze bij elkaar en kun je daarmee alles maken.

Who is John Galt?


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je kan ook naar HTML of plain-text transformeren. Zie dit topic bijvoorbeeld:

[topic=489789/1/25]

Als je echt hele andere dingen wilt, is het wellicht verstandig om eerst te transformeren naar een XML representatie van dit formaat en in een andere taal dit om te zetten naar hetgene wat je wilde (PDF, MS Word, LaTeX bijvoorbeeld).

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
XSLT, which is a language for transforming XML documents into other XML documents
Dit klopt dus trouwens gewoon niet, maar het is uiteraard wel het hoofddoel.

Zie ook hier:
http://www.w3.org/TR/xslt#output

Een text-output method levert trouwens nog wel steeds iets wat uit nodes bestaat, maar dat is dus zeker geen XML.

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


  • Baxlash
  • Registratie: Juni 2000
  • Niet online

Baxlash

Its a boy Genius!

Op donderdag 09 mei 2002 07:07 schreef mbravenboer het volgende:

[..]

Dit klopt dus trouwens gewoon niet, maar het is uiteraard wel het hoofddoel.

Zie ook hier:
http://www.w3.org/TR/xslt#output

Een text-output method levert trouwens nog wel steeds iets wat uit nodes bestaat, maar dat is dus zeker geen XML.
Dit klopt wel degenlijk!

XSL is gemaakt voor transformatie van XML naar XML. HEt ene systeem heeft minder (of in dir geval meer info!) nodig dan de ander.
In dus geval is de toegevoegde waarde van de transformatie van de XML de opmaak tags. Ook css kan je op deze manier er in verwerken.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
rolandketel: Dit klopt wel degenlijk!
Vind jij dit dan XML :?
code:
1
2
3
werknemer=Jaap
bedrijf=Philips
afdeling=Customer
XSL is gemaakt voor transformatie van XML naar XML.
Dat zal ik zeker niet ontkennen.... Tuurlijk is XSLT daarvoor ontworpen :) . Punt is echter dat de output van een XSL Transformatie niet altijd een XML document is, wat de omschrijving in de recommendation wel doet vermoeden. Dat is gezeur van mij, maar het is wel zo ;) .
In dus geval is de toegevoegde waarde van de transformatie van de XML de opmaak tags.
:? .

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


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 08:34
mbravenboer:
Je kan ook naar HTML of plain-text transformeren. Zie dit topic bijvoorbeeld:
Ok, maar voor de goede orde moet ik je toch even corrigeren hier. Want je kan niet naar html converteren, maar slechts naar xhtml.

Overigens zal die quote van het W3c xhtml wel beschouwen als óók een vorm van XML :).

  • StratoFarmer
  • Registratie: April 2000
  • Laatst online: 04-09 21:10

StratoFarmer

Anke :*

Je kunt naar alles converteren, dus ook gewone 'ouwe' html.

Mijn plekkie + Sympathisant van 'GoT voor Behoud der Nederlandsche Taal' [GvBdNT]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
ddc: Ok, maar voor de goede orde moet ik je toch even corrigeren hier. Want je kan niet naar html converteren, maar slechts naar xhtml.
Read the fine recommendation :P . html is gewoon een output-method van XSLT en daar komt dus klassieke html uit, wat geen well-formed XML is...

Ik moet onwillekeurig denken aan een stukje wat ik las in het laatste JDJ, maar ik heb geen zin om het over tikken ;) .

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


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 08:34
Als je tags niet afsluit in je XSL krijg je volgens mij wel problemen anders. Althans ik wel ;)

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
het kan wel als je alle HTML <'s vervangt door < (en de output method goed insteld), maar handig is anders ;)

Verwijderd

Op donderdag 09 mei 2002 12:43 schreef ddc het volgende:
Als je tags niet afsluit in je XSL krijg je volgens mij wel problemen anders. Althans ik wel ;)
Ja hehe: Je XSL moet natuurlijk wel wellformed xml zijn. XSL is een xml-taal. Maar er kan naar elk willekeurig formaat getransformeerd worden, als jij bijvoorbeeld je output op 'html' zet en dit staat er in je xsl:

[img]"plaatje.gif"/[/img] (let op de sluitende slash)

dan wordt dat in de output gewoon [img]"plaatje.gif"[/img] (zonder sluitende slash)

als je de output op 'xml' zet blijft de sluitende slash staan

Verwijderd

Op donderdag 09 mei 2002 12:44 schreef marcusk het volgende:
het kan wel als je alle HTML <'s vervangt door < (en de output method goed insteld), maar handig is anders ;)
Dat is dus niet nodig (zie m'n reactie hierboven

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik wil niemand persoonlijk beledigen maar moet wel even zeggen dat ik toch wel wat verbaasd ben door de reacties hier. Mensen die hier vragen stellen verwachten correcte antwoorden en schenken jou hun vertrouwen. Ze kunnen niet controleren of je het juist hebt. Zeker als je mensen gaat corrigeren, zou ik toch echt even zorgen dat je weet waarover je hebt en je bronnen raadpleegt voor je zulk commentaar levert.

Toch maar even uit JDJ overgetikt:

"I've been lurking around some of the Java mailing lists and am continually amused at some of the postings. In fact, let me scrub that, I'm scared to death of some of the post. [...] The question wasn't the issue; it was the array of answers that tickled me at first until I read one that scared the life out of me.".

Iedereen kan zich vergissen, maar als je commentaar levert op mij wat betreft XSLT zou ik me toch eerst even orienteren... (waarbij ik vast arrogant over kom).

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


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Het soort document van de output kun je instellen door (weet niet precies zo):
code:
1
2
<?xml version="1.0" encoding="...."?>
<?xml output="HTML"?>

waarbij HTML dus vervangen kan worden door een andere output

Verwijderd

Op donderdag 09 mei 2002 13:32 schreef mbravenboer het volgende:
Ik wil niemand persoonlijk beledigen maar moet wel even zeggen dat ik toch wel wat verbaasd ben door de reacties hier. Mensen die hier vragen stellen verwachten correcte antwoorden en schenken jou hun vertrouwen. Ze kunnen niet controleren of je het juist hebt. Zeker als je mensen gaat corrigeren, zou ik toch echt even zorgen dat je weet waarover je hebt en je bronnen raadpleegt voor je zulk commentaar levert.
Couldn't agree more...

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

drm

f0pc0dert

mbravenboer:
Iedereen kan zich vergissen, maar als je commentaar levert op mij wat betreft XSLT zou ik me toch eerst even orienteren...
I second that.
<non sliming>
* drm is verbaasd over het feit dat de mbravenboer zo snel vergeten is :?
</non sliming>

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


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 08:34
mbravenboer:
Ik wil niemand persoonlijk beledigen maar moet wel even zeggen dat ik toch wel wat verbaasd ben door de reacties hier. Mensen die hier vragen stellen verwachten correcte antwoorden en schenken jou hun vertrouwen. Ze kunnen niet controleren of je het juist hebt. Zeker als je mensen gaat corrigeren, zou ik toch echt even zorgen dat je weet waarover je hebt en je bronnen raadpleegt voor je zulk commentaar levert.

Iedereen kan zich vergissen, maar als je commentaar levert op mij wat betreft XSLT zou ik me toch eerst even orienteren... (waarbij ik vast arrogant over kom).
Omdat dit uiteraard over mij gaat; sorry ;)
Maar als ik in een XSL tussen de xhtml-output
code:
1
[img]"bla.gif"[/img]

zet, dan vind de XML parser dat niet zo leuk. Als ik hem dan afsluit met / vind ie het al wat beter, hoe zit dat dan :?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op donderdag 09 mei 2002 17:49 schreef ddc het volgende:

[..]

Omdat dit uiteraard over mij gaat; sorry ;)
Maar als ik in een XSL tussen de xhtml-output
code:
1
[img]"bla.gif"[/img]

zet, dan vind de XML parser dat niet zo leuk. Als ik hem dan afsluit met / vind ie het al wat beter, hoe zit dat dan :?
Zoals al eerder vermeld. de XSL moet wel well-formed zijn. De output die het genereert hoeft dat niet te zijn. And that's the way it should be, ik vind dat een programma er van uit maggaan dat een (xml)developer een well-formed stylesheet kan bakken. Dit in tegenstelling tot html waar ook de 'huis tuin en keuken' internet gebruiker een pagina in elkaar moet kunnen prakken (was de gedachte).

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 08:34
Orphix:
Zoals al eerder vermeld. de XSL moet wel well-formed zijn. De output die het genereert hoeft dat niet te zijn. And that's the way it should be, ik vind dat een programma er van uit maggaan dat een (xml)developer een well-formed stylesheet kan bakken. Dit in tegenstelling tot html waar ook de 'huis tuin en keuken' internet gebruiker een pagina in elkaar moet kunnen prakken (was de gedachte).
Hmz, misschien dat hier de html wordt "geschreven" via XSL-functies, dan zou het wel kunnen, nooit geprobeerd.

Maar als je xhtml rechtstreeks schrijft als xhtml in de xsl, kan het iig geen html zijn.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op donderdag 09 mei 2002 18:00 schreef ddc het volgende:
Hmz, misschien dat hier de html wordt "geschreven" via XSL-functies, dan zou het wel kunnen, nooit geprobeerd.

Maar als je xhtml rechtstreeks schrijft als xhtml in de xsl, kan het iig geen html zijn.
Nouja ... xhtml is wel html, maar html is geen xhtml. Ik zou geen enkel praktisch nut kunnen verzinnen om percee non-well-formed html uit te willen spugen :)

  • tomato
  • Registratie: November 1999
  • Niet online
Orphix: Nouja ... xhtml is wel html, maar html is geen xhtml. Ik zou geen enkel praktisch nut kunnen verzinnen om percee non-well-formed html uit te willen spugen :)
Oudere applicaties (browsers bijv) die alleen met non-well-formed HTML uit de voeten kunnen bijvoorbeeld?


Voor de goede orde (ik zie dit topic nu via een andere link, vandaar wat laat ;)):


Well-formed XML
Een document is well-formed XML als het syntactisch aan de XML standaard voldoet. Dus we sluiten iedere tag netjes af, we quoten attributes, en meer van dat soort ongein.

XML applicaties
Er zijn verschillende standaarden welke gebruik maken van de XML syntax. Voorbeelden van XML applicaties zijn XML, XHTML, XSL, SVG en PostingML.

Valid XHTML/XSL/SVG/etc
Een document is valid XHTML wanneer het well-formed XML is en inhoudelijk voldoet aan de eisen die de XHTML standaard stelt (zelfde zin kun je maken voor ander XML applicaties). Deze eisen kunnen beschreven worden in een schema taal als DTD, XML Schema, of Relax NG.
In je XML document kun je deze eisen linken zodat een gebruiker het document kan valideren als dit nodig is.

XML --[XSL]--> XML
XSL is zoals gezegd een XML applicatie. Een XSL document moet dus well-formed XML zijn en daarnaast nog aan inhoudelijke regels mbt XSL voldoen.
XSL is een transformatie taal om een XML bron te transformeren naar een ander formaat, waarvan XML de meest voor de hand liggende is, maar zeker niet de enige.

XML --[XSL]--> XHTML
Een XSL document kan de transformatie van een XML bron naar een XHTML document beschrijven. Dit is dus gewoon een transformatie van XML naar XML aangezien XHTML een XML applicatie is.

XML --[XSL]--> HTML
Wanneer je een XML bron transformeert naar HTML kun je er nooit zeker van zijn dat het resultaat ook well-formed XML is (dit kan toevallig het geval zijn).
Het XSL document zelf moet nog steeds well-formed XML zijn, maar de output hoeft dit niet te zijn. Zelfde geldt voor een transformatie naar een plain text formaat.


Enkele dingen nogal kort door de bocht, maar hoofdpunten waar het om draait staan er ;)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 10 mei 2002 23:35 schreef tomato het volgende:
Oudere applicaties (browsers bijv) die alleen met non-well-formed HTML uit de voeten kunnen bijvoorbeeld?
Zoals?
Bij <4.0 versie hou ik het voor gezien. Maar nu moet ik het zeggen dat ik al tijden geen 4.0 meer heb gebruikt. Met >=5.0 heb ik nooit problemen gehad.

Ik denk bv dat weinig browsers moeite hebben met bv een <br/> (de slash). En het is altijd een goede gewoonte geweest om well-formed HTML te schrijven, ook al was het niet verplicht, dus ik neem aan dat de software fabrikanten daar rekening mee hielden.

  • tomato
  • Registratie: November 1999
  • Niet online
Orphix: Zoals?
Legio. Denk daarbij niet alleen aan IE of Netscape, maar ook aan bijvoorbeeld een eigengeschreven HTML parsertje die uitgaat van een '<br>' tag en de slash niet slikt in een '<br/>'.
Bij <4.0 versie hou ik het voor gezien. Maar nu moet ik het zeggen dat ik al tijden geen 4.0 meer heb gebruikt. Met >=5.0 heb ik nooit problemen gehad.
Je hebt het over Internet Explorer neem ik aan :?
Ik denk bv dat weinig browsers moeite hebben met bv een <br/> (de slash).
Daar vergis je je misschien lelijk in dan ;)
Sommige browsers pikken bijvoorbeeld geen slash direct na de 'br', daarom wordt er meestal '<br />' (met spatie) gebruikt om nog enigzins backwards compatible te kunnen zijn.
En het is altijd een goede gewoonte geweest om well-formed HTML te schrijven, ook al was het niet verplicht, dus ik neem aan dat de software fabrikanten daar rekening mee hielden.
Maar daar ging het nou net niet om, '<br/>' is geen well-formed HTML (whatever dat ook mag zijn ;)), aangenomen dat je het niet over nieuwe HTML standaarden hebt (maar dat blijkt wel uit je zin).
In de oude HTML standaarden wordt juist over '<br>' gepraat, dus misschien klopt je opmerking (fabrikanten hielden rekening met standaarden), maar dan kan het dus heel goed zo zijn dat ze niet weten om te gaan met het nieuwe XHTML :)

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

drm

f0pc0dert

...en dan wil ik er nog even aan toevoegen dat de HTML output niet per definitie voor browsers of voor het web gegenereerd wordt.

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


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Okay jullie hebben me overtuigd :P

ik heb zelf idd ook programma's gemaakt die splitten op <br> :o

Verwijderd

Op donderdag 09 mei 2002 12:32 schreef mbravenboer het volgende:

[..]

Read the fine recommendation :P . html is gewoon een output-method van XSLT en daar komt dus klassieke html uit, wat geen well-formed XML is...
Dat kan wel zijn, maar veel XML parsers, zoals de MSXML parser, transformeren van XMLDOM naar XMLDOM, dus de output van een XSLT transformatie moet wellformed zijn, anders krijg je errors in de resultDOM. Alleen XHtml geeft goede resultaten.

Genereer je met je XSL template geen well-formed XML, dan lukt de transformatie niet in bv de MS XML parser. (dit was althans het geval t/m versie 3.x). Andere parsers transformeren naar een outputstream, waardoor je wel alle mogelijke handel kunt genereren zonder je te bekommeren om de correctheid van de output mbt XML syntax.

Ik heb er een tijdje niet naar gekeken, dus ik weet niet of de MS XML parser nog steeds puur naar een XML DOM kan transformeren. Wellicht dat een ander daar een licht op kan werpen :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Otis: Dat kan wel zijn, maar veel XML parsers, zoals de MSXML parser, transformeren van XMLDOM naar XMLDOM, dus de output van een XSLT transformatie moet wellformed zijn, anders krijg je errors in de resultDOM. Alleen XHtml geeft goede resultaten.
Hum vreemd: kan je niet naar een stream transformeren? Dat is dan best vervelend.

In de standaard staat natuurlijk precies beschreven wat de html output method moet doen en in principe kan de library dan dus gewoon niet compatible zijn :? Ik neem aan dat dit ondertussen wel aangepast is en dat je ook naar andere resultaten (streams of result-trees dus) kunt transformeren?

In Java kan je via TRaX, de XSL Transformatie bib, transformeren van alles naar alles zo'n beetje... Van een DOM naar een DOM, van een JDOM naar een JDOM van een Reader naar een Writer enzovoorts en dat ook nog allemaal gekruist. Dit is allemaal geabstraheerd door de Source en Result interfaces.

Hetzelfde probleem geldt overigens natuurlijk ook voor de text output method...
Genereer je met je XSL template geen well-formed XML, dan lukt de transformatie niet in bv de MS XML parser.
Ik heb eigenlijk geen idee wat Xalan hier doet als je als Result een DOM neemt.

Ik heb btw ook niet gezegd dat ik het fraai vind ;) . Het kan alleen wel ;) .

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


Verwijderd

Op zaterdag 11 mei 2002 16:32 schreef mbravenboer het volgende:
[..]
Hum vreemd: kan je niet naar een stream transformeren? Dat is dan best vervelend.
Bij mijn weten niet. Je kunt wel de outputted stream opvangen maar die komt uit een destination DOM, dus dat is lood om oud ijzer. Wellicht dat de .NET services meer toevoegen, ik heb daar nog niet naar gekeken.
[edit]
Net even gekeken en de System.XML.Xsl.XslTransform class kan transformeren naar XmlReader, TextWriter en stream. Dus ik heb goede hoop dat het nu wel goed is :)
In de standaard staat natuurlijk precies beschreven wat de html output method moet doen en in principe kan de library dan dus gewoon niet compatible zijn :? Ik neem aan dat dit ondertussen wel aangepast is en dat je ook naar andere resultaten (streams of result-trees dus) kunt transformeren?
Uit de url:http://www.w3.org/TR/xslt#output
"The xsl:output element allows stylesheet authors to specify how they wish the result tree to be output. If an XSLT processor outputs the result tree, it should do so as specified by the xsl:output element; however, it is not required to do so."
Ze hoeven dus niet. Op zich kan ik het me wel voorstellen, want je praat over XML, en het converteren van XML mbv een XSL naar HTML is niet meer dan een truukje, misbruiken maken van de geboden functionaliteit ;) .

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Otis: Net even gekeken en de System.XML.Xsl.XslTransform class kan transformeren naar XmlReader, TextWriter en stream. Dus ik heb goede hoop dat het nu wel goed is :)
Ok, das mooi :) .
it is not required to do so.
Ze bedoelen hiermee volgens mij dat de output-method toegepast moet worden om eventueel iets met de result-tree te doen. Dat is dus kennelijk niet verplicht (wat op zich wel vreemd is).

Het probleem bij een DOM -> DOM transformatie is (was) echter in dit geval niet zozeer de manipulatie van de result-tree, maar het simpele feit dat een result-tree niet altijd in een DOM 'past'...
The xml output method outputs the result tree as a well-formed XML external general parsed entity. If the root node of the result tree has a single element node child and no text node children, then the entity should also be a well-formed XML document entity.
De DOM is in principe een "XML document entity" denk ik. Ik kon echter niet vinden wat er moet gebeuren als de result tree niet well-formed is. Xalan accepteert bijvoorbeeld gewoon niet well-formed result-trees en maakt daar dus ook niet well-formed XML van :o . Of dit klopt: geen idee (en geen zin om na te kijken ;) ).
en het converteren van XML mbv een XSL naar HTML is niet meer dan een truukje, misbruiken maken van de geboden functionaliteit ;) .
Misbruik van de functionaliteit gaat me wat ver ;) , maar ik vind wel dat je gelijk hebt in je houding tegenover deze alternatieve output methods. Een transformatie-taal op XML zou zich denk ik inderdaad moeten beperken tot transformatie van XML -> XML. Wat je verder met die output wilt doen kan op in andere tools worden geregeld...

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

Pagina: 1