Toon posts:

[XML/XSL]Xml werkt niet samen met xsl of andersom

Pagina: 1
Acties:

Verwijderd

Topicstarter
Code van het xml document rechtstreeks uit het boek asp in 24hrs
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
<?xml version="1.0"?>
<?xml:stylesheet type="text/xsl" href="sh.xsl"?>
<snowreport date="3/2/99">
<resort>
    <name>COURCHEVEL</name>
    <snowheights>
        <min>164</min>
        <avg>174</avg>
        <max>293</max>
    </snowheights>
</resort>
<resort>
    <name>MERIBEL</name>
    <snowheights>
        <min>140</min>
        <avg>172</avg>
        <max>230</max>
    </snowheights>
</resort>
<resort>
    <name>VAL THORENS</name>
    <snowheights>
        <min>200</min>
        <avg>270</avg>
        <max>350</max>
    </snowheights>
</resort>
</snowreport>

xml document:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0"?>
<HTML xmlns:xsl="http://www.w3.org/1999/XSL/Format">
<body style="font-family:Tahoma; font-size:12pt; background-color:#ffffff">
<div style="font-weight:bold; font-size=16pt">
Snow Report France <xsl:value-of select="@date"/>
</div>
<xsl:for-each select="resort">
<div style="background-color:#0099ff; color:#ffffff; padding:2px">
<span style="font-weight:bold; color:#ffffff"><xsl:value-of select="name"/></span>
</div>
<xsl:for-each select="snowheights">
<div style="font-weight:bold">
<span style="font-weight:bold">Snow:<xsl:value-of select="min"/>/
<xsl:value-of select="avg"/>/<xsl:value-of select="max"/> cm</span>
</div>
</xsl:for-each>
</xsl:for-each></body>
</HTML>

en het asp merge ding:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<% @Language =VBScript %>
<% Option Explicit %>
<html>
<head>
    <title>Server-side XML/XSL merging</title>
</head>
<body bgcolor="#ffffff">
<%
    Dim XMLDoc, XSLDoc
    Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
    Set XSLDoc = Server.CreateObject("Microsoft.XMLDOM")
    
    XMLDoc.async = false
    XMLDoc.load(Server.MapPath("sh.xml"))
    XSLDoc.async = false
    XSLDoc.load(Server.MapPath("sh.xsl"))
    response.write(XMLDoc.documentElement.transformNode(XSLDoc.documentElement))
%>
</body>
</html>

Als ik het asp bestand opvraag vanaf de server dan krijg ik een titel :Snow Report France
vervolgens een blauwe lijn en vervolgens: Snow:Snow:// cm
En that's it het lijkt wel of hij het xml document niet goed kan lezen ofzo :? maar als ik het xml document zelf open dan zie ik wel wat ik volgens het boek zou moeten zien.

edit leesbaarder gemaakt

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Allereerst moet het dit zijn:
code:
1
<?xml-stylesheet type="text/xsl" href="sh.xsl"?>

ten tweede is je stylesheet niet echt stijlvol. Ik zal even een voorbeeld maken hoe je het beter kan doen...

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


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
beetje een vage stylesheet.

zo werkt ie wel:
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
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:apply-templates select="snowreport"/>
  </xsl:template>
  
  <xsl:template match="snowreport">
    <HTML>
    <body style="font-family:Tahoma; font-size:12pt; background-color:#ffffff">
      <div style="font-weight:bold; font-size=16pt">
        Snow Report France <xsl:value-of select="@date"/>
      </div>
      <xsl:for-each select="resort">
        <div style="background-color:#0099ff; color:#ffffff; padding:2px">
        <span style="font-weight:bold; color:#ffffff"><xsl:value-of select="name"/></span>
        </div>
        <xsl:for-each select="snowheights">
        <div style="font-weight:bold">
          <span style="font-weight:bold">Snow:<xsl:value-of select="min"/>/
            <xsl:value-of select="avg"/>/<xsl:value-of select="max"/> cm
          </span>
        </div>
        </xsl:for-each>
      </xsl:for-each>
    </body>
    </HTML>
  </xsl:template>
</xsl:stylesheet>

maar dat for-each is nog steeds niet echt mooi. kun je beter aparte templates voor maken.

[edit]
mbravenboer:
Ik zal even een voorbeeld maken hoe je het beter kan doen...
te laat >:) ;)

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Naja zeg, ik was er ook al mee bezig..

Dit stylesheet klopt in ieder geval weer van geen kanten...

nog maar 1 keertje dan: www.xfront.com , check de xsl-tutorial...

Ik laat het maken van die stylesheet maar over aan mbravenboer, dan kan ik nuttige dingen gaan doen :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum ik had hem al af en vind hem mooier dus post hem lekker toch nog :P .

Bekijk dit eens:
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
<?xml version="1.0"?>

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

<xsl:output method="xml" indent="yes"/>

    <xsl:template match="snowreport">
      <html>
        <head>Snow report</head>

        <body style="font-family:Tahoma; font-size:12pt; background-color:#ffffff">
            <div style="font-weight:bold; font-size=16pt">
              Snow Report France <xsl:value-of select="@date"/>
            </div>
            <xsl:apply-templates select="resort"/>
        </body>
      </html>
    </xsl:template>

    <xsl:template match="resort">
      <div style="background-color:#0099ff; color:#ffffff; padding:2px">
        <span style="font-weight:bold; color:#ffffff">
            <xsl:value-of select="name/text()"/>
        </span>
      </div>
      
      <xsl:apply-templates select="snowheights"/>
    </xsl:template>

    <xsl:template match="snowheights">
      <div style="font-weight:bold">
        <span style="font-weight:bold">
            Snow:
            <xsl:value-of select="min/text()"/>,
            <xsl:value-of select="avg/text()"/>,
            <xsl:value-of select="max/text()"/> cm
        </span>
      </div>
    </xsl:template>
</xsl:stylesheet>

Je ziet dat ik ipv for-each werk met meerdere templates. Dat is de grote kracht van XSLT en dat zou je dus ook moeten gebruiken. For-each is typisch een constructie die imperatieve programmeurs gebruiken als ze XSLT gaan schrijven. Met templates werkt alles een stuk duidelijker. Je herschrijft zo termen naar andere termen en dat ziet er erg prettig uit :) .

Had je deze stuff uit een boek?
Zo ja: :X
;)
ff codetags gefixt :P

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


Verwijderd

Topicstarter
Nieuwe stylesheet copy-pasted, geupload en getest. Resultaat:
er staat nu een spatie tussen de slashes, het lijkt dus of het document wel data binnenkrijgt maar het niet afdrukt. en er is nog steeds maar 1 regel

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op donderdag 31 januari 2002 14:01 schreef mbravenboer het volgende:
Hum ik had hem al af en vind hem mooier dus post hem lekker toch nog :P .

Bekijk dit eens:
code:
1
...HTML zooi...
handig heh, die HTML rechten? ;)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op donderdag 31 januari 2002 14:03 schreef marcusk het volgende:
handig heh, die HTML rechten? ;)
heb het al gefixt :)

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
LOL ik zie tussen je [ code ] tags staan : SNOWREPORT, blauwe regel en dan 2 x een slash :D

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
D2k: heb het al gefixt :)
Bedankt :o . Ik had hem niet nagekeken idd |:( .

Lite-mod zijn is ook niet alles ;) .

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


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op donderdag 31 januari 2002 14:01 schreef mbravenboer het volgende:
Had je deze stuff uit een boek?
Zo ja: :X
;)
was misschien een oud boek? van veel XSL zooi uit 'the XML Bible' klopte ook weinig.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

mbravenboer: Bedankt :o . Ik had hem niet nagekeken idd |:( .

Lite-mod zijn is ook niet alles ;) .
np :)
je begon met [/code] en toen ging het fout
toen vond topix het HTML :)

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Maar je code heeft nog steeds geen resultaat op mijn pagina. Kan het aan de server of browser liggen?

Verwijderd

Topicstarter
K heb ook al dit voorbeeld van msdn geprobeert maar dat geeft hetzelfde resultaat: een mooi kopje en een grote sneeuwvlakte :'(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zoepnek: Maar je code heeft nog steeds geen resultaat op mijn pagina. Kan het aan de server of browser liggen?
Hier werkt hij wel, zowel in Mozilla als in Xalan, dus met de stylesheet is niet mis.

Het zou kunnen komen doordat je een oude MSXSL hebt. Je moet sowieso werken met IE 6.0 of Mozilla 0.9.7...

Als hij in Mozilla niet werkt kan het nog door het mime-type komen. Die moet goed ingesteld zijn als je hem via een webserver opent:
code:
1
2
AddType text/xml .xml
AddType text/xml .xsl

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


Verwijderd

Het gaat helemaal niet om de stylesheet.
Het probleem zit hem in de volgende regel :

Response.Write(XMLDoc.documentElement.transformNode(XSLDoc.documentElement))

Hij laadt nu alleen de xsl, verwissel je beide documenten van plaats, laadt hij alleen de xml, dus de fout zit hem denk ik in transformNode.

Ok, roept u maar weer !!

Verwijderd

Topicstarter
We zitten hier met IE 5.50 maar de gewone xml file zie ik heel mooi en kan ik ook mooi klikken maar met die xsl gaat het gewoon niet

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 00:15
Op donderdag 31 januari 2002 14:19 schreef Zoepnek het volgende:
We zitten hier met IE 5.50 maar de gewone xml file zie ik heel mooi en kan ik ook mooi klikken maar met die xsl gaat het gewoon niet
Als er wordt gezegd dat je IE6 nodig hebt moet je daar niet tegenin drammen :)

XML zien werkte al veel eerder ja, maar client-side XSL niet. Dus gewoon ff nieuwe browser installeren.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zoepnek: We zitten hier met IE 5.50 maar de gewone xml file zie ik heel mooi en kan ik ook mooi klikken maar met die xsl gaat het gewoon niet
IE 5.5 support alleen een halvegare XSLT working draft. Die moet je dus niet hebben. Ik zou even IE 6.0 of Mozilla downloaden.

Probeer het eerst gewoon vanaf je harde schrijf te openen, dan kan je daarna wel server-side in ASP gaan transformeren.

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


Verwijderd

Topicstarter
[SCHOP]
Owkee ik ben weer bezig met XML en XSL Ik heb de XMLmergedinges en het XML bestand zelf uit mijn eerste post gebruikt (wel deze
code:
1
<?xml-stylesheet type="text/xsl" href="sh.xsl"?>

aangepast. Toen heb ik de laatste stylesheet gebruikt (die van mbravenboer) maar het werkt nog steeds voor geen kant.

k heb nu trouwens wel IE 6

Verwijderd

Topicstarter
ow en ik heb nu xt.exe (een parser voor xml en xslt ofzowiets right :?) en die geeft wel een prachtige output zoals het moet, maar zet ik m op de server dan doet ie (bijna) nix waar ligt het dan aan ??????

Verwijderd

Topicstarter
output van xt:
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
<html>
<head>Snow report</head>
<body style="font-family:Tahoma; font-size:12pt; background-color:#ffffff">
<div style="font-weight:bold; font-size=16pt">
              Snow Report France 3/2/99</div>
<div style="background-color:#0099ff; color:#ffffff; padding:2px">
<span style="font-weight:bold; color:#ffffff">COURCHEVEL</span>
</div>
<div style="font-weight:bold">
<span style="font-weight:bold">
            Snow:
            164,
            174,
            293 cm
        </span>
</div>
<div style="background-color:#0099ff; color:#ffffff; padding:2px">
<span style="font-weight:bold; color:#ffffff">MERIBEL</span>
</div>
<div style="font-weight:bold">
<span style="font-weight:bold">
            Snow:
            140,
            172,
            230 cm
        </span>
</div>
<div style="background-color:#0099ff; color:#ffffff; padding:2px">
<span style="font-weight:bold; color:#ffffff">VAL THORENS</span>
</div>
<div style="font-weight:bold">
<span style="font-weight:bold">
            Snow:
            200,
            270,
            350 cm
        </span>
</div>
</body>
</html>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
In Mozilla en Xalan werkt dit uitstekend. Meestal werkt het in IE6 dan ook wel goed, maar dat kan ik hier niet testen. Heb je misschien een specifiekere melding?
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
<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="sh.xsl"?>

<snowreport date="3/2/99">
    <resort>
        <name>COURCHEVEL</name>
        <snowheights>
            <min>164</min>
            <avg>174</avg>
            <max>293</max>
        </snowheights>
    </resort>
    <resort>
        <name>MERIBEL</name>
        <snowheights>
            <min>140</min>
            <avg>172</avg>
            <max>230</max>
        </snowheights>
    </resort>
    <resort>
        <name>VAL THORENS</name>
        <snowheights>
            <min>200</min>
            <avg>270</avg>
            <max>350</max>
        </snowheights>
    </resort>
</snowreport>


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"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="snowreport">
      <html>
        <head>
            <title>Snow report</title>
        </head>

        <body style="font-family:Tahoma; font-size:12pt; background-color:#ffffff">
            <div style="font-weight:bold; font-size=16pt">
              Snow Report France <xsl:value-of select="@date"/>
            </div>
            <xsl:apply-templates select="resort"/>
        </body>
      </html>
    </xsl:template>

    <xsl:template match="resort">
      <div style="background-color:#0099ff; color:#ffffff; padding:2px">
        <span style="font-weight:bold; color:#ffffff">
            <xsl:value-of select="name/text()"/>
        </span>
      </div>
      
      <xsl:apply-templates select="snowheights"/>
    </xsl:template>

    <xsl:template match="snowheights">
      <div style="font-weight:bold">
        <span style="font-weight:bold">
            Snow:
            <xsl:value-of select="min/text()"/>,
            <xsl:value-of select="avg/text()"/>,
            <xsl:value-of select="max/text()"/> cm
        </span>
      </div>
    </xsl:template>
</xsl:stylesheet>

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zoepnek: ow en ik heb nu xt.exe (een parser voor xml en xslt ofzowiets right :?)
XSLT implementatie...
en die geeft wel een prachtige output zoals het moet, maar zet ik m op de server dan doet ie (bijna) nix waar ligt het dan aan ??????
Ah.... hum.... IE6 doet in principe niet moeilijk over mime-types, maar misschien moet je die toch even instellen voor xml en xsl? Wat gebeurt er als je hem lokaal vanaf je harde schijf opent?

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


Verwijderd

Topicstarter
ow ik heb iets :D
Ik keek altijd naar dat merge ding maar als ik nu het XML bestand bekijk doet ie t ook perfect.

Mijn vragen zijn (voorlopig) beantwoord.

Schijttaaltje dat XML :o

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zoepnek: Ik keek altijd naar dat merge ding maar als ik nu het XML bestand bekijk doet ie t ook perfect.
Ahum ;) .
Schijttaaltje dat XML :o
-1, kortzichtig :P ;) .

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

Pagina: 1