[XSL(T)/XML] Transformatie naar XML

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

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

In het vervolg op dit topic wil ik proberen via XSLT toch mijn doel bereiken. Op zich hoef je het topic niet door te lezen, ik leg wel uit wat ik nu doe/wil: Onderstaand XSL document (chemical.xsl) kopieert precies de originele XML (+CSS) naar de browser.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />

<xsl:template match="/">
    <xsl:apply-templates />
</xsl:template>

<xsl:template match="/">
    <xsl:copy-of select="." />
</xsl:template>

</xsl:stylesheet>


Structuur XML (chemical.xml):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="iso-8859-1"?>
<?DOCTYPE chemical SYSTEM "chemical.dtd"?>
<?xml-stylesheet type="text/xsl" href="chemical.xsl"?>
<?xml-stylesheet type="text/css" media="print" href="chemical-print.css" ?>
<?xml-stylesheet type="text/css" media="screen" href="chemical-screen.css" ?>
<chemical>
    <title>Fluoride</title>
    <chapter>
        <header>
        ...
        </header>
        <paragraph>
        ...
        </paragraph>
    </chapter>
    <chapter>
    ...
</chemical>


Nou wil ik om elk <chapter>-element een <DIV> zetten (ik wil nog veel meer, maar eerst dit maar eens ;)). Door deze code onderaan de XSL toe te voegen:
code:
1
2
3
<xsl:template match="chemical/chapter">
    <div class="column"><xsl:value-of select="." /></div>
</xsl:template>


Maar daarvoor zal ik (denk ik) ten eerste wel de output method in "html" moeten veranderen, echter dan krijg ik plain text. En ik heb het idee dat het niet met copy-of moet, maar ik zie nu een beetje door de bomen het bos niet meer. Kan iemand mij op weg helpen?

BTW, ik ben newbie in XSL, net mee begonnen :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:54

crisp

Devver

Pixelated

Topicstarter
op verzoek afgesplitst uit [rml][ CSS] columns[/rml] :)

Intentionally left blank


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
X-Lars schreef op 06 maart 2004 @ 19:11:
..

Maar daarvoor zal ik (denk ik) ten eerste wel de output method in "html" moeten veranderen
waarom :? xhtml is toch ook xml, dus output mag best in xml zijn..
o en copy-of is de beste en snelste manier om nodesets te kopieren, niks mis mee dus.

[ Voor 17% gewijzigd door Genoil op 08-03-2004 00:51 ]


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Bedankt crisp.

@Genoil: ok bedankt, maar hoe kan ik dan zoiets doen:
code:
1
2
3
<xsl:template match="chemical/chapter">
    <div class="column"><xsl:value-of select="." /></div>
</xsl:template>

Als de 'root-node' al gekopieerd is kan er niets meer aan child nodes toegevoegd worden? Tenminste zoiets als dit werkt hier niet.

Verwijderd

code:
1
2
3
<xsl:template match="chemical/chapter">
    <div class="column"><xsl:value-of select="." /></div>
</xsl:template>
Iets zegt me dat je geen XHTML namespace gedefinieerd hebt ;)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Voor je begint met je XSLT heb je IIRC deze regels nodig:

code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<xsl:transform version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/1999/xhtml">

    <xsl:output method="xml"
        indent="yes"
        encoding="ISO-8859-1"
        doctype-public="-//W3C//DTD XHTML 1.1//EN"
        doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" />


Je kan natuurlijk ook een versie van XHTML 1.0 gebruiken.

[ Voor 21% gewijzigd door djc op 08-03-2004 09:36 ]

Rustacean


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

  • Maar geeft dat geen problemen met de DTD die ik zelf al gedefinieerd heb in de XML (zie TS)? (Alhoewel de browser dat niet valideert.)
  • Waarom moet ik een XHTML namespace definieren als het XML blijft?
Nou ja, ik probeer nog wel wat. Alle tutorials gaan over dat standaard transformatiewerk naar HTML (title bold, kleurtje hier, table daar) en niet over iets waar ik wat aan heb.

Verwijderd

Wellicht heb je wat aan een voorbeeld:
- http://annevankesteren.nl...e_1/landbouwbedrijven.xml
- http://annevankesteren.nl/test/xml/example_1/style.xsl

(dat testje is erg oud, maar wel correct met betrekking tot namespaces etc.)

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
dit sheetje doet iig wat je in je TS vraagt, een div om chapters heen zetten en de rest kopieren:
XSLT:
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"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />
    
    <xsl:template match="/">
        <xsl:apply-templates />
    </xsl:template>
    
    <xsl:template match="*">
        <xsl:copy >
            <xsl:apply-templates />
        </xsl:copy>  
    </xsl:template>

    <xsl:template match="chapter">
        <div>
            <xsl:copy-of select="." />
        </div>
    </xsl:template>
</xsl:stylesheet>


Het is een beetje lastig om te zien dat dit werkt wanneer je (zoals het erop lijkt in je code) gebruikt maakt van clientside MSXML. Deze heeft idd text-output, en als je op view source klikt, laat ie gewoon de source xml zien. Geen flauw idee hoe je er voor zorgt dattie XML displayed...

Met Sablotron (PHP-XSLT extensie) kun je voordat je je resultaat uitspuugt gewoon even een header("Content-type:text/xml;"); sturen en dan maakt IE er weer zo'n fraai XML ding van (fraai XML ding is natuurlijk ook gewoon stiekum een DHTML pagina).

(ik heb het sheetje overigens alleen getest met de minimale XML die je gepost had, dus ik garandeer niet dat het voor je eigenlijke structuur gaat werken)

[ Voor 15% gewijzigd door Genoil op 08-03-2004 13:38 ]


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Bedankt Genoil, dat is precies wat ik zoek. Next step is dan het tellen van het aantal elementen <chapter> en om de helft hiervan een <column> (ipv <div>) zetten, tevens om de andere helft. Eigenlijk zou de hoogte van alle elementen chapter berekend moeten worden, maar dat lijkt me niet echt mogelijk.

Heb geen Sablotron idd. Misschien moet ik dat maar eens installeren dan.

Ik weet dat de transformatie op zich goed gaat, want als ik de laatste <xsl:copy-of select="." /> verander in <xsl:copy-of select="." />blaat, zet-ie "blaat" achter iedere chapter.

Maar nu het irritante (wat ik eerder bedoelde met plain text), hij neemt de stylesheet niet meer mee :?

Voor wie ff wil pielen, de files: O-)
verwijderd

Edit: Mozilla only!

[ Voor 21% gewijzigd door X-Lars op 08-04-2006 18:54 ]


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
wow ik zie nu eigenlijk pas wat je aan het doen bent. vetjes, ik wist ni dat je dat met XML+CSS kon doen! ik snap nu ook wat je bedoelt met "hij pakt de CSS niet". Ook m'n sablotron verwijdert alle referenties naar de CSS sheets...

Maar dat indelen in twee kolommen is niet zo moeilijk met XSLT:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />

    <xsl:template match="//chemical">
        <xsl:copy>
            <xsl:copy-of select="title" />
            <column>
                <xsl:copy-of select="chapter[position() &lt;= last() div 2]" />
            </column>
            <column>
                <xsl:copy-of select="chapter[position() &gt; last() div 2]" />
            </column>
        </xsl:copy>  
    </xsl:template>
    
</xsl:stylesheet>

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

:)

Nu heb jij dus eigenlijk dat columns-probleem opgelost, alleen ik kan het niet zien! (Nogmaals, het is een alternatieve optie om het probleem uit het origineel van dit topic op te lossen.)

Overigens, <?xml-stylesheet type="text/xsl" href="chemical.xsl"?> uit de XML weghalen, dan zie je tenminste wat "gestylede" data (dus met CSS).

Tsja, de stylesheetverwijzingen in de XSL zetten lijkt ook niet te werken..

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Hoe verwijs je naar de stylesheet in je XSL?
Op deze manier zou het moeten werken :)
code:
1
2
3
<xsl:processing-instruction name="xml-stylesheet">
  type="text/css" media="screen" href="chemical-screen.css"
</xsl:processing-instruction>

[ Voor 16% gewijzigd door Rickets op 08-03-2004 16:05 ]

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


Verwijderd

( zie ook http://www.w3.org/TR/1999...g-Processing-Instructions )

( wat je dus moet begrijpen is dat het XSLT document het _nieuwe_ document wordt, het XML document wordt _niet_ gewijzigd oid )

[ Voor 40% gewijzigd door Verwijderd op 08-03-2004 16:11 ]


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
X-Lars schreef op 08 maart 2004 @ 15:54:
Tsja, de stylesheetverwijzingen in de XSL zetten lijkt ook niet te werken..
dat gaat dus zo (zelf ook net pas uitgevonden :)):
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"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />
    
    <xsl:template match="//chemical">
        <xsl:processing-instruction name="xml-stylesheet">
            type="text/css" media="screen" href="chemical-screen.css"
        </xsl:processing-instruction>
        <xsl:copy>
            <xsl:copy-of select="title" />
            <column>
                <xsl:copy-of select="chapter[position() &lt;= last() div 2]" />
            </column>
            <column>
                <xsl:copy-of select="chapter[position() &gt; last() div 2]" />
            </column>
        </xsl:copy>  
    </xsl:template>
    
</xsl:stylesheet>


Ziet er op firefox wel nice uit, Ie maakt er een potje van maar ik geloof dat dat zo "hoort", niet?

[edit]
spuit 11 :P

[ Voor 18% gewijzigd door Genoil op 08-03-2004 16:11 ]


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

JAAAAA _/-\o_

* X-Lars begint toch wel een erg sterk GoT-gevoel te ontwikkelen. Respect folks!!

Edit: verwijderd

Nu alleen nog de hoogtes van de chapters optellen ipv het aantal :p, want zoals het nu is, lukt het op zich wel, maar de chapter-hoogtes schelen teveel

[ Voor 62% gewijzigd door X-Lars op 08-04-2006 18:54 ]


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
X-Lars schreef op 08 maart 2004 @ 16:11:
JAAAAA _/-\o_

* X-Lars begint toch wel een erg sterk GoT-gevoel te ontwikkelen. Respect folks!!

Edit: http://www.webpro.nl/xml/chemical.xml

Nu alleen nog de hoogtes van de chapters optellen ipv het aantal :p, want zoals het nu is, lukt het op zich wel, maar de chapter-hoogtes schelen teveel
* Genoil heeft vandaag geen zin in het werk dattie eigenlijk moet doen, dus hebt mazzel ;)

Hoogte van een chapter gaan berekenen is met een monospaced font, string-length() en count() misschien ook nog wel te doen, maar dan wordt het al wat lastiger. In dat geval denk ik dat de aangedragen oplossing van "alles links neerzetten en chapters overhevelen naar rechts totdat alles even hoog is" veel simpeler is.

Bij de International Herald Tribune hebben ze overigens ook een leuke oplossing:
http://www.iht.com/articles/509185.html

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Genoil schreef op 08 maart 2004 @ 16:28:
[...] * Genoil heeft vandaag geen zin in het werk dattie eigenlijk moet doen, dus hebt mazzel ;)

[..interessant stukje..]
Zoiets dacht ik al :p tnx again.

Lucky me, eigenlijk is het "gewoon" een opdracht voor school waarin ik dit niet echt zou hoeven uitwerken (alleen XML+CSS), maar het lijkt me op allerlei manieren wel bruikbaar. Dus ik ga zeker nog aan een betere oplossing proberen te werken.

Alleen t is allemaal nog nieuw voor mij, ben pas paar dagen met XSL bezig. Best lastig om goed overzicht te houden op wat je aan het doen bent. Achteraf zat het m vooral in die processing-instruction om naar de stylesheet te refereren. Andere opdracht met sort en choose etc. etc. ging overigens al wel prima.

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Ik vond het te klein om er een nieuw topic over te openen, want het is zo'n klein vraagje. Heb d'r al een uur naar gezocht. Zonder succes.

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<website>
  <links>
    <link>
      <id></id>
      <title></title>
      <description></description>
    </link>
    <link>
      <id></id>
      <title></title>
      <description></description>
    </link>
  </links>
</website>

Nu wil ik met XSL dat-ie alle <id> elementen weglaat bij de transformatie.

Het moet dus iets zijn als *strip-strip*:
code:
1
2
3
4
5
<xsl:template match="//website">
  <xsl:copy>
    <xsl:copy-of select="//links/link/*[not(id)]" />
  </xsl:copy>
</xsl:template>

Dit werkt echter niet. Hier de pagina waar iets dergelijks staat (onderaan), maar het lukt me maar niet:
http://www.zvon.org/xxl/XPathTutorial/Output/example5.html. Ook op w3.org etc. kan ik het niet vinden.

[ Voor 17% gewijzigd door X-Lars op 09-03-2004 17:30 ]


Verwijderd

code:
1
//links/link/title | //links/link/description
?

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Ja zoiets had ik ook wel, maar het gaat me om het idee om er 1 uit te kunnen sluiten :) Stel nou dat het aantal elementen wat groter wordt...

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

drm

f0pc0dert

Gebruik in je xpath expressie de name () functie.
code:
1
//links/link/*[name()!='id']

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Correct, dank u! :) Da's ook wel de sleutel tot een heleboel meer oplossingen.

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

drm

f0pc0dert

X-Lars:
Correct, dank u! :) Da's ook wel de sleutel tot een heleboel meer oplossingen.
Pas wel op dat je niet de kracht van de templates gaat negeren en opeens allerlei dingen alleen met xpath expressies op gaat lossen. Je moet XSLT niet gaan zien als een procedurele taal :)

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

drm schreef op 09 maart 2004 @ 18:56:
[...]
Pas wel op dat je niet de kracht van de templates gaat negeren en opeens allerlei dingen alleen met xpath expressies op gaat lossen. Je moet XSLT niet gaan zien als een procedurele taal :)
Dan breng je me zelf op het verkeerde path :p

Maar ik begrijp de essentie wel denk ik. In mijn geval haal ik de gegevens uit een MySQL db en maak ik met PHP een XML bestand aan, dus ik zou er al eerder voor kunnen zorgen dat elementen helemaal niet voor kunnen komen. Maar soms heb je gewoon de XML maar te slikken en wil je niet alles "meetransformeren". Dan zal het toch wel met Xpath moeten? Laatste optie is overigens nog een display:none; (of visibility: hidden;) in CSS, maar dat is worst-case (achteraf wegmoffelen).

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

drm

f0pc0dert

Ik vraag me door die redenering eigenlijk af of je source-tree wel zo lekker in elkaar zit... Kan je daar eens wat van laten zien? (de oorspronkelijke xml zeg maar)

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Sure.

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
header("Content-Type: text/xml");
echo "<?xml version='1.0' encoding='iso-8859-1'?>\n";
echo "<?xml-stylesheet type='text/xsl' href='read.xsl'?>\n";

include 'db.php';
$query_categories = "SELECT * FROM categories";
$query_types = "SELECT * FROM types";
$query_links = "SELECT * FROM links";
$result_categories = mysql_query($query_categories);
$result_types = mysql_query($query_types);
$result_links = mysql_query($query_links);

echo "<website>\n";
    echo "  <categories>\n";
    while ($row = mysql_fetch_assoc($result_categories)) {
        echo "    <category>\n";
        echo "      <id>".$row['cat_id']."</id>\n";
        echo "      <title>".$row['cat_title']."</title>\n";
        echo "      <description>".$row['cat_description']."</description>\n";
        echo "    </category>\n";
    }
    echo "  </categories>\n";

    echo "  <types>\n";
    while ($row = mysql_fetch_assoc($result_types)) {
        echo "    <type>\n";
        echo "      <id>".$row['type_id']."</id>\n";
        echo "      <title>".$row['type_title']."</title>\n";
        echo "    </type>\n";
    }
    echo "  </types>\n";
    
    echo "  <links>\n";
    while ($row = mysql_fetch_assoc($result_links)) {
        echo "    <link>\n";
        echo "      <id>".$row['id']."</id>\n";
        echo "      <title>".$row['title']."</title>\n";
        echo "      <description>".$row['description']."</description>\n";
        echo "      <url>".$row['url']."</url>\n";
        echo "    </link>\n";
    }
    echo "  </links>\n";

echo "</website>\n";

En hiermee krijg ik onderstaand XML:

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
50
51
52
53
<?xml version='1.0' encoding='iso-8859-1'?>
<?xml-stylesheet type='text/xsl' href='read.xsl'?>
<website>
  <categories>
    <category>
      <id>1</id>
      <title>HTML</title>
      <description>HyperText Markup Language</description>
    </category>
    <category>
      <id>2</id>
      <title>XML</title>
      <description>eXtensible Markup Language</description>
    </category>
    <category>
      <id>3</id>
      <title>XHTML</title>
      <description>eXtensible HyperText Markup Language</description>
    </category>
  </categories>
  <types>
    <type>
      <id>1</id>
      <title>Recommendation</title>
    </type>
    <type>
      <id>2</id>
      <title>Tutorial</title>
    </type>
    <type>
      <id>3</id>
      <title>Reference</title>
    </type>
    <type>
      <id>4</id>
      <title>Specification</title>
    </type>
  </types>
  <links>
    <link>
      <id>1</id>
      <title>XHTML 1.0 The Extensible HyperText Markup Language (Second Edition)</title>
      <description>This specification defines...</description>
      <url>http://www.w3.org/TR/xhtml1/</url>
    </link>
    <link>
      <id>2</id>
      <title>HTML 4.01 Specification</title>
      <description>This specification defines...</description>
      <url>http://www.w3.org/TR/html401/</url>
    </link>
  </links>
</website>

Ik zoek dus nog een manier om fatsoenlijk die data uit de db in XML te krijgen in PHP, in plaats van al die echo's. Ik geloof dat xml_parse in PHP losse XML produceert, maar heb hier nog niet echt naar gekeken. Door middel van die header wordt het PHP bestand dus a.h.w. zelf XML (klinkt krom, maar is wel duidelijk).

Dit is dus een testcase voor een kleine site met links (zie mijn sig voor een XHTML ideetje van de bedoeling, maar dit voldoet absoluut niet, veel te kleinschalig). Puur bedoeld voor mezelf om de combi PHP/MySQL/XML/CSS/XSL te leren.

De idee is dus om wat ik nu doe met categories, types en links later ook te kunnen doen met een 'echte' website: bijvoorbeeld 'navigation', 'images' en 'content' of zoiets. Dan wordt het ook allemaal CMS-achtig, compleet db-driven.

Maar het is nog heel pril, ben nog zoekende. Reacties hierop zijn natuurlijk welkom, ook al is dat misschien een beetje off-topic (maar het is mijn topic, dus het mag :p).

Edit: Nou heb ik de categories en de types nog niet in de links verwerkt. Zo ziet een <link> er eigenlijk uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
    <link>
      <id>2</id>
      <title>HTML 4.01 Specification</title>
      <description>This specification defines...</description>
      <url>http://www.w3.org/TR/html401/</url>
      <cat_01>3</cat_01>
      <cat_02>1</cat_03>
      <cat_03>0</cat_03>
      <type_01>2</type_01>
      <type_02>0</type_02>
      <type_03>0</type_03>
    </link>

[ Voor 26% gewijzigd door X-Lars op 09-03-2004 21:37 ]


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

drm

f0pc0dert

Ah... ik geloof dat ik het begrijp. Je wilt een uiteindelijk XML document hebben die gestijld wordt met CSS, en daarom kopieer je de nodes gewoon maar wil je de id niet meekopieren, klopda? Je vermijdt HTML uberhaupt...


edit:
Mijn vermoeden is dan wel bevestigd, jah :P Je wilt nu ook nog in XSL de relatie gaan leggen tussen de links en hun type en categorie? Dan ga je echt volledig voorbij aan het taaltje wat voor dat soort dingen juist bedacht is: SQL.

[ Voor 37% gewijzigd door drm op 09-03-2004 21:45 ]

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Ja dat klopt. En die stelling over 'HTML' deponeer ik net :)

Hiero: [rml]X-Lars in "[ discussie] Web design leren toen en nu."[/rml]

Maar voor de duidelijkheid: het weglaten van de id is niet een primair probleem dat ik heb bij deze case, maar iets waarvan ik welhaast zeker weet dat ik het nog eens nodig ga hebben :)

Edit: Je edit is niet juist, ik heb gewoon in PHP die elementen nog niet meegenomen. That's all.

[ Voor 16% gewijzigd door X-Lars op 09-03-2004 21:47 ]


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

drm

f0pc0dert

Maar dan begrijp ik niet waarom je de tussenstap met XSL nog zou maken :? Als je toch direct XML aan de browser wil voeren, waarom laat je PHP het dan niet meteen goed genereren?

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Omdat de idee is om een goed opgemaakt XML bestand te kunnen gebruiken om een website flexibel mee op te bouwen. Het bepalen van de nodes en bijvoorbeeld sorteren ervan gaat het makkelijkst in SQL.

Maar er zijn ook transformaties bedenkbaar die vervolgens beter met XSL uit te voeren zijn, zoals het om en om aan een class toewijzen van nodes. Of waar het in dit topic oorspronkelijk om ging, het verdelen van de nodes in twee kolommen. In principe is misschien alles al wel in PHP te doen. Maar de idee is dus om geen overbodige nodes toe te voegen die voor opmaakdoeleinden dienen.

Je zou dus in het kolommen-probleem een extra node in kunnen voegen om de eerste helft van de chapters en één om de tweede helft, zodat je met CSS de boel wel in twee kolommen kunt verdelen. Maar dan is de inhoud van de XML niet meer slechts waar het voor dient (data), maar heeft het dus ook elementen in zich die voor de opmaak dienen.

Dus: PHP/MySQL en XSL hebben naar mijn mening allebei hun eigen taken waar ze handig voor in te zetten zijn.

Edit: en ja, ik ben dan nogal puristisch bezig :)

[ Voor 3% gewijzigd door X-Lars op 09-03-2004 22:15 ]


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

drm

f0pc0dert

X-Lars:
Omdat de idee is om een goed opgemaakt XML bestand te kunnen gebruiken om een website flexibel mee op te bouwen. Het bepalen van de nodes en bijvoorbeeld sorteren ervan gaat het makkelijkst in SQL.
Daar is het idd SQL voor :)
Maar er zijn ook transformaties bedenkbaar die vervolgens beter met XSL uit te voeren zijn, zoals het om en om aan een class toewijzen van nodes. Of waar het in dit topic oorspronkelijk om ging, het verdelen van de nodes in twee kolommen. In principe is misschien alles al wel in PHP te doen. Maar de idee is dus om geen overbodige nodes toe te voegen die voor opmaakdoeleinden dienen.
Je kunt dan beter concluderen dat CSS niet toereikend is, volgens mij. Of het dan een extra transformatiestap waard is is voor mij eigenlijk een gauw bekeken zaak, maar goed :)

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

drm schreef op 09 maart 2004 @ 22:23:
[...]
Je kunt dan beter concluderen dat CSS niet toereikend is, volgens mij. Of het dan een extra transformatiestap waard is is voor mij eigenlijk een gauw bekeken zaak, maar goed :)
Kun je dat nader uitleggen?

CSS is inderdaad niet toereikend genoeg (CSS3 biedt al meer mogelijkheden), maar hoe zou ik het anders moeten oplossen? Toch met PHP/MySQL? Ik vind niet dat je de beperkingen van CSS met PHP/MySQL moet oplossen. Dan is XSL IMHO veel correcter.

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

drm

f0pc0dert

X-Lars:
CSS is inderdaad niet toereikend genoeg (CSS3 biedt al meer mogelijkheden), maar hoe zou ik het anders moeten oplossen? Toch met PHP/MySQL? Ik vind niet dat je de beperkingen van CSS met PHP/MySQL moet oplossen.
Laat ik het anders zeggen: Wat is de functie van de XML die PHP en MySQL uit moeten poepen? Dat gaat toch om presentatie? Waarom zou die XML dan niet informatie/structuur over die presentatie mogen bevatten? (en dan is het kiezen voor XHTML als xml-vorm ineens zo heel gek niet meer....)
Dan is XSL IMHO veel correcter.
Ik ben wel benieuwd waarom je vindt dat XSLT correcter is. Helemaal als je je bedenkt dat die verwijzing naar de XSLT ook in het XML document staat. Hej, toch nog presentatiegegevens in je XML! ;)

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

drm schreef op 09 maart 2004 @ 22:43:
[...]
Laat ik het anders zeggen: Wat is de functie van de XML die PHP en MySQL uit moeten poepen? Dat gaat toch om presentatie? Waarom zou die XML dan niet informatie/structuur over die presentatie mogen bevatten? (en dan is het kiezen voor XHTML als xml-vorm ineens zo heel gek niet meer....)
De functie van XML is en blijft "to serve, receive and process data". IMHO is het de data vorm die je op je website (of elders) laat zien (en van layout voorziet door middel van CSS/XSL), min of meer omdat dat niet direct met je db kan.
[...]
Ik ben wel benieuwd waarom je vindt dat XSLT correcter is. Helemaal als je je bedenkt dat die verwijzing naar de XSLT ook in het XML document staat. Hej, toch nog presentatiegegevens in je XML! ;)
Het is in eerste instantie de data die je bekijkt, dat is het belangrijkste. Om daar een layout aan te relateren, zul je toch iets in die data moeten hebben staan om te refereren naar een externe stylesheet. NOFI, maar dat vind ik wel een zwak argument.

Dus waarom vind ik XSL correcter: PHP/MySQL gebruik je voor het genereren/manipuleren van de data (XML) en CSS/XSL voor de styling ervan. Manipuleren is nu juist een gevaarlijk woord, het lijkt namelijk op transformeren (XSLT). In deze context zorgt manipulatie (bv. filteren, sorteren) er namelijk niet voor dat de well-formedness en validiteit van XML in het geding komt. In een situatie zonder XSL (dus waarin je data transformatie/manipulatie met PHP/MySQL uitvoert) is dat wel het geval.

Je laat me er in ieder geval wel goed over nadenken en dat stel ik enorm op prijs. Maar toch ben ik nog niet echt overtuigd van je argumenten.

Verwijderd

Dus waarom vind ik XSL correcter:
Nogmaals XSL bestaat niet, of refereer je naar een WG?
In deze context zorgt manipulatie (bv. filteren, sorteren) er namelijk niet voor dat de well-formedness en validiteit van XML in het geding komt. In een situatie zonder XSL (dus waarin je data transformatie/manipulatie met PHP/MySQL uitvoert) is dat wel het geval.
W3C DOM?

Ik vraag me af waarom je denkt dat XML meerwaarde heeft?

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Verwijderd schreef op 10 maart 2004 @ 07:40:
[...] Nogmaals XSL bestaat niet, of refereer je naar een WG?
XSL is a family of recommendations for defining XML document transformation and presentation. It consists of three parts:

XSL Transformations (XSLT): a language for transforming XML
the XML Path Language (XPath): an expression language used by XSLT to access or refer to parts of an XML document. (XPath is also used by the XML Linking specification)
XSL Formatting Objects (XSL-FO): an XML vocabulary for specifying formatting semantics
Dan is dit toch XSLT:
code:
1
2
3
<xsl:template match="/">
    <xsl:copy-of select="." />
</xsl:template>


En dit Xpath (het deel tussen quotes in de vorige [code]:
code:
1
//links/link/*[name()!='id']

Dan kan ik toch al zeggen dat ik XSL gebruik?! De combinatie van 2 of 3 van de onderdelen van XSL. Hoe simpel het ook nog is.
Ik weet nog net waar de afkorting DOM voor staat :) Verder eigenlijk niet wat het inhoudt. Nou ja, http://www.w3.org/DOM/#what zegt me niet zo heel veel eerlijk gezegd.
Verwijderd schreef op 10 maart 2004 @ 07:40:
Ik vraag me af waarom je denkt dat XML meerwaarde heeft?
Meerwaarde over ... ? XHTML? Ik snap wel dat de semantiek van XML op zich geen betekenis heeft (vandaar mijn geleuter over DTD's ([rml]X-Lars in "[ discussie] Web design leren toen en nu."[/rml])) en die van XHTML wél. Zodat bijvoorbeeld user agents er wat mee kunnen. Je kunt niet zomaar met je eigen "subset" (gebruik ik die term nu goed?) aan de gang gaan, je kunt er vanuit gaan dat je dan zelf de enige bent die het begrijpt, als hier geen standaarden voor bepaald zijn.

Dus als ik het goed begrijp is het niet zo'n probleem om XML te gebruiken zolang ik maar met m'n eigen gefrutsel bezig ben :) Dat is idd niet erg reëel om vol te houden. Evenals het feit dat bijvoorbeeld Google je niet zou kunnen vinden. Alhoewel dat misschien op te lossen is met meta data ofzo :?

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

drm

f0pc0dert

X-Lars:
Ik weet nog net waar de afkorting DOM voor staat :) Verder eigenlijk niet wat het inhoudt. Nou ja, http://www.w3.org/DOM/#what zegt me niet zo heel veel eerlijk gezegd.
Ga eens met JavaScript (of Java ook leuk) aan de gang met DOM methodes om zo een "XML" (eigenlijk DOM-) tree op te bouwen en/of te manipuleren. 't Is onmisbare kennis als je met xml e.d. aan de slag gaat imo.
Dus als ik het goed begrijp is het niet zo'n probleem om XML te gebruiken zolang ik maar met m'n eigen gefrutsel bezig ben :)
Om er wat van te leren kan het nooit kwaad natuurlijk.
Dat is idd niet erg reëel om vol te houden. Evenals het feit dat bijvoorbeeld Google je niet zou kunnen vinden. Alhoewel dat misschien op te lossen is met meta data ofzo :?
Het is zelfs heel gek om het wel vol te houden. Waarom zou je, als er een goed xml dialect is (xhtml), zelf een andere gaan verzinnen om je web-documenten te presenteren? Dan ben je toch ronduit het wiel aan het uitvinden?

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


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

drm schreef op 10 maart 2004 @ 11:11:
[...]
Ga eens met JavaScript (of Java ook leuk) aan de gang met DOM methodes om zo een "XML" (eigenlijk DOM-) tree op te bouwen en/of te manipuleren. 't Is onmisbare kennis als je met xml e.d. aan de slag gaat imo.
JavaScript is ook altijd al een ondergeschoven kindje geweest bij mij. Het was vooral knippen en plakken wat ik deed, maar meer nog het zoveel mogelijk vermijden. JAVA :X Heb ik wel een paar maanden gehad op school, het eerste deel: 5.5, het tweede deel: 5.5 en opeens had ik het door in het 3e deel: 8.7. Weet nog steeds niet waarom en het lijkt wel alsof ik alles vergeten ben. Ik ga dat hele DOM-gebeuren zeker nog eens bekijken, want die term komt ook veel te vaak voor om te negeren natuurlijk.

offtopic:
Ben vanochtend voor de gein maar eens naar college (PHP) gegaan, ik moet nu ff de opdrachten van de hele module van 5 weken maandagochtend a.s. 7 uur inleveren. Moet lukken :Y) Anyway, dat dus eerst. Naast een zwik XML Schema in elkaar draaien, zelfde inlevermoment.
[...]
Het is zelfs heel gek om het wel vol te houden. Waarom zou je, als er een goed xml dialect is (xhtml), zelf een andere gaan verzinnen om je web-documenten te presenteren? Dan ben je toch ronduit het wiel aan het uitvinden?
Ja da's duidelijk :) I'm getting a little closer, tnx guys!

Zou je misschien nog kunnen reageren op onderstaande?
Dus waarom vind ik XSL correcter: PHP/MySQL gebruik je voor het genereren/manipuleren van de data (XML) en CSS/XSL voor de styling ervan. Manipuleren is nu juist een gevaarlijk woord, het lijkt namelijk op transformeren (XSLT). In deze context zorgt manipulatie (bv. filteren, sorteren) er namelijk niet voor dat de well-formedness en validiteit van XML in het geding komt. In een situatie zonder XSL (dus waarin je data transformatie/manipulatie met PHP/MySQL uitvoert) is dat wel het geval.

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

X-Lars schreef op 10 maart 2004 @ 11:21:
[...]

Zou je misschien nog kunnen reageren op onderstaande?

[...]
Lama ;)

Verwijderd

Dan kan ik toch al zeggen dat ik XSL gebruik?! De combinatie van 2 of 3 van de onderdelen van XSL. Hoe simpel het ook nog is.
Fout. Het zijn geen onderdelen van XSL. Het zijn verschillende specificaties die door de XSL working group (onderdeel van de XML working group) ontwikkelt zijn. En als je over XSLT praat, hoort XPath daar automatisch bij (XSLT heeft ook enkele extensies gemaakt op XPath).

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
offtopic:
Anne, ben jij zo iemand die dislectische mensen gaat lopen corrigeren als ze de letters van een afkorting door de war halen, terwijl je wel weet wat er bedoeld wordt? :X

Was XSL overigens niet die brakke transformatietaal in MSIE 5.0? :+

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

@Genoil, Anne heeft me er ondertussen drie keer, en zo blijkt, juist op gewezen. Ik wist heel goed dat het om die 'T' ging en dacht dat mijn redenatie juist was. NOFI :)

@Anne, je hebt (as usual) gelijk :) Heel misschien is het wel aan te raden iets minder over te komen alsof jij de hogere macht bent die dat allemaal zelf bedacht heeft. Ook al heb je gelijk en weet iedereen dat, het kan misschien ietsjes 'more gentle' :)

[ Voor 4% gewijzigd door X-Lars op 10-03-2004 14:23 ]


Verwijderd

Heb je gelijk in, maar meestal schrijf ik iets gehaast op, omdat ik er niet al teveel tijd aan wil besteden, is uiteraard nooit negatief/persoonlijk bedoeld ;)

@Genoil, XSL was het originele idee, een soort style sheets voor XML. Het bleek echter al gauw dat mensen het transformatie gedeelte erg interessant vonden en dat ze daar meer mee wilden. Toen is het opgesplitst in XSLT en XSL-FO, waarbij de eerste voor transformaties was en de tweede meer voro styling (niet bruikbaar op het web).
Pagina: 1