Toon posts:

[XSLT]Sablotron geeft geen tabel terug..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik heb het voorbleed van "freak007" eens uitgeprobeert over Sablotron i.c.m PHP. Zijn Pagina werkt goed maar als ik zelf mijn eigen nieuws systeem wil omzetten werkt het niet meer. Dit zijn mijn bestanden:

:: class.xslt.php ::
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
class xslt
{

function nieuws ($sid)
{
$xml = join("", file("../sites/$sid/nieuws/nieuws.xml"));
$xsl = join("", file("../sites/$sid/nieuws/nieuws.xsl"));

xslt_process($xsl, $xml, $result);
    echo $result;

$fp = fopen ("../sites/$sid/nieuws/nieuws.html", "w+");
fwrite($fp, $result);
fclose($fp);
}
}

$xslt = new xslt();

$xslt->nieuws(1);
?>

:: nieuws.xml ::
code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" ?> 

<Nieuws>
  <Item Id="1">
    <Titel>Bericht</Titel> 
    <Datum>28-12-2001</Datum> 
    <Tekst>Even wat tekst typen</Tekst> 
    <Auteur>Henk Erik van der Hoek</Auteur> 
  </Item>
</Nieuws>

:: nieuws.xsl ::
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" indent="yes" encoding="utf-8"/>

    <xsl:template>
      <!-- style sheet includen -->
      <!--<LINK REL="stylesheet" HREF="nieuws.css" TYPE="text/css"></LINK>-->

      <STYLE TYPE="text/css">
.Header {
background : #73DBD9;
border-bottom : 1px solid #30B8B5;
border-top : 1px solid #30B8B5;
padding : 2px;
}

.Body {
border-bottom : 1px solid #30B8B5;
padding : 1px;
background : #DDF7F5;
}

.Tekst {
font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size : smaller;
}

.Titel {
font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size : 14px;
font-weight : 500;
}
      </STYLE>

      <xsl:for-each select="Nieuws/Item">
        <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0">
            <TR>
              <TD>
                <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0" CLASS="Header">
                    <TR>
                      <TD>
                        <DIV CLASS="Titel">
                            <STRONG><xsl:value-of select="Titel"/></STRONG>
                        </DIV>
                      </TD>
                      <TD>
                        <xsl:value-of select="Datum"/>
                      </TD>
                    </TR>
                </TABLE>
              </TD>
            </TR>

            <TR>
              <TD>
                <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0" CLASS="Body">
                    <TR>
                      <TD>
                        <DIV CLASS="Tekst">
                            <xsl:value-of select="Tekst"/>
                        </DIV>
                      </TD>
                    </TR>
                    <TR>
                      <TD ALIGN="right">
                        Geschreven door: <xsl:value-of select="Auteur"/>
                      </TD>
                    </TR>
                </TABLE>
              </TD>
            </TR>
        </TABLE>

        <BR />
      </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

De output van dit script is echter dit:

Bericht28-12-2001Even wat tekst typenHenk Erik van der Hoek

Niet echt mijn bedoeling zoals je ziet. De totale opmaak gaat verloren. Ik heb al geprobeert de style-sheet te includen maar dat maakt niks uit. Ik hoop dat iemand mij verder kan helpen.

Al vast Bedankt.

Henk Erik

edit: even wat indenting ingevoegd en code tags....

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
hmmz.. je xslt klopt voor geen meter..

misschien is het raadzaam de tutorial op www.xfront.com eens te downloaden en te volgen?

edit: damn, ik blijf letters vergeten :(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je hebt op je enige template helemaal geen match attribuut staan. Ik denk dat je dat wel wilt.

Hierdoor worden alleen de default templates gebruikt en 1 daarvan is een template die alleen maar alle tekst oplevert. Vandaar je vreemd resultaat :) .

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Die tutorial lijkt mijn inderdaad een goed idee ;) .

Je moet ook niet al te veel in for-each termen denken. Je moet het recursie mechanisme van XSLT gebruiken en liefst meerdere templates gebruiken.

Verrgelijk wat jij hebt eens met dit:
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
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" indent="yes" encoding="utf-8"/>

    <xsl:template match="Nieuws">
      <html>
        <head>
            <title>Nieuws</title>
            <link rel="stylesheet" href="nieuws.css" type="text/css"/>
        </head>

        <body>
            <ol>
              <xsl:apply-templates select="Item"/>
            </ol>
        </body>
      </html>
    </xsl:template>

    <xsl:template match="Item">
      <li>
        <ul>
            <li>
              Titel: <xsl:value-of select="Titel"/>
            </li>
            <li>
              Datum: <xsl:value-of select="Datum"/>
            </li>
            <li>
              Tekst: <xsl:value-of select="Tekst"/>
            </li>
            <li>
              Geschreven door: <xsl:value-of select="Auteur"/>
            </li>
        </ul>
      </li>
    </xsl:template>

</xsl:stylesheet>

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


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op donderdag 24 januari 2002 21:20 schreef mbravenboer het volgende:
Die tutorial lijkt mijn inderdaad een goed idee ;) .
Ja, idd :)

Ik was trouwens al bezig met een stylesheet, bedankt :(

:+

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
PlayR: Ik was trouwens al bezig met een stylesheet, bedankt :(
Hehe ;) . Dan heb je een missie: maak een mooiere :P ;) .

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


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op donderdag 24 januari 2002 21:29 schreef mbravenboer het volgende:
Hehe ;) . Dan heb je een missie: maak een mooiere :P ;) .
Mja, ik wil je natuurlijk niet in verlegenheid brengen ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
PlayR: Mja, ik wil je natuurlijk niet in verlegenheid brengen ;)
lol@PlayR :D .

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


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op donderdag 24 januari 2002 21:39 schreef mbravenboer het volgende:
lol@PlayR :D .
nou maak je mij verlegen :*

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
* Rense Klinkenberg zag zijn naam staan, maar blijkbaar is dit ook al weer opgelost :(

;)

ps. Aan het php script is te zien dat je nog php 4.0.6- gebruikt. Let er stark op wanneer je naar 4.1.0+ overstapt dat je je scriptjes iets aan moet passen. Hoe exact is al keurig uitgelegd in een ander topic hier.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hier bijvoorbeeld:

[topic=387934]

:) .

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


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Wat ik heb gedaan is eerst een XSL met bijbehoordende XML client-side gemaakt. En client-side laten parsen. Fouten worden gelijk afgestraft maar je ziet tenminste waar het fout gaat.

edit:

Het kan zijn dat ik nu een onzin antwoord geef, kom net terug van trainen en ik ben moe! :z :z :z

Programmer - an organism that turns coffee into software.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Wat je ook kan doen: Java 2 Standard Edition 1.4.0 downloaden, installeren mijn stukje code + uitleg uit dit topic gebruiken:

[topic=379860/1/25]

Je kunt dan makkelijk XSLT van de command-prompt toepassen met een zeer goede en nauwkeurige XSLT engine: Xalan van Apache.

Ik heb alleen het idee dat onze topic-starter zoek is :o .

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

Pagina: 1