[XML/XSL] parsen met PHP versus ASP probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem met het parsen van mijn xsl mbv. xslt.

Ik heb op het forum hier code gevonden om html tags in XML goed te laten renderen. een <strong> is ook vetgedrukt op het scherm.

Tenminste dat werkt zo, wanneer ik mijn code parse mbv. ASP

Wanneer ik XSLT gebruik (php) wat toch iedereen uiteindelijk wil :) dan wordt de opmaak niet gerenderd.

mijn XML-bestand

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

  <page xmlns="http://www.test.nl" pageName="Nieuws pagina">    
    <texts>
        <text> 
            <description><html xmlns="http://www.w3.org/1999/xhtml"><strong>Alinea 1</strong>met nog wat text </html></description>
            <divWidth>100</divWidth>
            <divHeight>100</divHeight>
            <divXpos>20</divXpos>
            <divYpos>20</divYpos>     
        </text>
        <text> 
            <description><html xmlns="http://www.w3.org/1999/xhtml">Alinea test met een grote T</html></description>
            <divWidth>100</divWidth>
            <divHeight>100</divHeight>
            <divXpos>140</divXpos>
            <divYpos>20</divYpos>     
        </text>     
    </texts>
  </page>


Mijn XSL-bestand

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

<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:n="http://www.test.nl"
            xmlns:html="http://www.w3.org/1999/xhtml"
            xmlns="http://www.w3.org/1999/xhtml">

    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="n:page">
      <html>
        <head>
            <title><xsl:value-of select="@pageName"/></title>
        </head>

        <body>
        <table border="1" cellpadding="0" cellspacing="0" width="800" height="600" align="center"><tr><td height="600" valign="top">
            <div style="width:800px;height:600px;overflow:auto;border:0px;">
                <xsl:apply-templates />
            </div>
        </td></tr>
        </table>                            
        </body>
      </html>
    </xsl:template>

    <xsl:template match="html:*">
      <xsl:element name="{name(.)}" namespace="http://www.w3.org/1999/xhtml">
        <xsl:for-each select="@*">
            <xsl:attribute name="{name(.)}">
              <xsl:value-of select="."/>
            </xsl:attribute>
        </xsl:for-each>
        <xsl:apply-templates/>
      </xsl:element>
    </xsl:template>

    <xsl:template match="n:text">      
        <div style="position:relative;width:0px;height:0px;left:0px;top:0px;"> 
          <div> <xsl:attribute name="style"> position:absolute; width:<xsl:value-of select="n:divWidth" />px; 
            height:<xsl:value-of select="n:divHeight" />px; left:<xsl:value-of select="n:divXpos" />px; 
            top:<xsl:value-of select="n:divYpos" />px; overflow:auto; border:1px dashed; 
            </xsl:attribute> 
            <table border="0">
              <tr> 
                <td width="100%" height="100%"> <xsl:apply-templates select="n:description"/> 
                </td>
              </tr>
            </table>
          </div>
        </div>        
    </xsl:template>           
</xsl:stylesheet>


Output na parsen mbv XSLT

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
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:n="http://www.test.nl">
  <head>
    <title>Nieuws pagina door Rene</title>
  </head>
  <body>
    <table border="1" cellpadding="0" cellspacing="0" width="800" height="600" align="center">
      <tr>
        <td height="600" valign="top">

          <div style="width:800px;height:600px;overflow:auto;border:0px;">      
    
        <div style="position:relative;width:0px;height:0px;left:0px;top:0px;">
              <div style=" position:absolute; width:100px; 
            height:100px; left:20px; 
            top:20px; overflow:auto; border:1px dashed; 
            ">
                <table border="0">
                  <tr>
                    <td width="100%" height="100%">
                      <ns_1:html xmlns:ns_1="http://www.w3.org/1999/xhtml">
                        <ns_2:strong xmlns:ns_2="http://www.w3.org/1999/xhtml">Alinea 1</ns_2:strong>met nog wat text </ns_1:html>

                    </td>
                  </tr>
                </table>
              </div>
            </div>
        <div style="position:relative;width:0px;height:0px;left:0px;top:0px;">
              <div style=" position:absolute; width:100px; 
            height:100px; left:140px; 
            top:20px; overflow:auto; border:1px dashed; 
            ">
                <table border="0">
                  <tr>

                    <td width="100%" height="100%">
                      <ns_3:html xmlns:ns_3="http://www.w3.org/1999/xhtml">Alinea test met een grote T</ns_3:html>
                    </td>
                  </tr>
                </table>
              </div>
            </div>      
  </div>
        </td>
      </tr>
    </table>
  </body>

</html>

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op 15 maart 2004 @ 15:22:
Ik heb een probleem met het parsen van mijn xsl mbv. xslt.

Ik heb op het forum hier code gevonden om html tags in XML goed te laten renderen. een <strong> is ook vetgedrukt op het scherm.

Tenminste dat werkt zo, wanneer ik mijn code parse mbv. ASP

Wanneer ik XSLT gebruik (php) wat toch iedereen uiteindelijk wil :) dan wordt de opmaak niet gerenderd.
Uhm ja en wat heb je zelf al onderzocht en geprobeerd? Zoals ik het nu zie plemp je hier gewoon al je code neer met het vriendelijke verzoek of wij even een compleet gedebugged resultaat kunnen antwoorden. Dat is niet helemaal de bedoeling for the record ;)

[ Voor 5% gewijzigd door curry684 op 15-03-2004 15:28 . Reden: F*ck HTML-rechten :X ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Kun je alles wat in de <description> tag staat niet escapen? Dus < wordt &lt; en > wordt &gt; enz...

[ Voor 14% gewijzigd door André op 15-03-2004 15:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik plemp hier niet mijn code zomaar neer, ik ben compleet. Anders krijg je weer vragen van: hoe ziet je code eruit etc etc.

Ik ben nog steeds zoekende ook op fora en google naar oplossingen. Om html layout te behouden wanneer er gebruik wordt gemaakt van xslt.

Zoals in de code te zien is, wordt van een <strong> <ns_2:strong xmlns:ns_2="http://www.w3.org/1999/xhtml"> gemaakt.

Iets wat met Response.Write(xml.transformNode(xsl)) (asp) niet gebeurd.

Het verschil zal daarin wel zitten. Wellicht kan de juiste namespace niet toegepast worden of de verkeerde namespace.

Het is niet mijn bedoeling om andere mensen mijn code te laten debuggen.
Toch zou het prettiger zijn als op GOT een wat meer Gentoo-achtige sfeer zou hangen, maar die discussie wil ik hier niet voeren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
André schreef op 15 maart 2004 @ 15:29:
Kun je alles wat in de <description> tag staat niet escapen? Dus < wordt &lt; en > wordt &gt; enz...
Nee, want dan wordt het als letterlijke tekst weergegeven en niet als opmaak-tag gebruikt.

Ergens zit er een wezenlijk verschil tussen de manier waarop ASP ( transformNode(xsl) ) en PHP (xslt) de XSL/ XML parsen.

Acties:
  • 0 Henk 'm!

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Misschien wat offtopic, maar ik vraag me af wat je met 2 html-elementen wilt doen :)
Verder gebruik je dezelfde identifier voor de default namespace en de html-namespace.

[ Voor 35% gewijzigd door Rickets op 15-03-2004 15:45 ]

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.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Rickets schreef op 15 maart 2004 @ 15:38:
Misschien wat offtopic, maar ik vraag me af wat je met 2 html-elementen wilt doen :)
Ik heb dat overgenomen van een voorbeeld van MBravenboer.

Op de een of andere manier is dat nodig.

Acties:
  • 0 Henk 'm!

Verwijderd

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

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 15 maart 2004 @ 15:49:
[...]


<xsl:output method="html" indent="yes"/>
Ook dat helpt niet :(

Nog steeds dit in het resultaat.
<ns_2:strong xmlns:ns_2="http://www.w3.org/1999/xhtml">Alinea 1</ns_2:strong>

Google is vandaag ook al niet mijn beste vriend.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok. ik heb een oplossing gevonden, maar ik weet niet of dit wel zo netjes is.

Ik heb alle html tags verwijderd bij description, alsmede alle namespaces.
Vervolgens heb ik ook ouput op html gezet en bij het weergeven van description niet value-of, maar copy-of gebruikt.

Dan wordt alles in <description> gekopiëerd en omdat de output html is, door de browser goed gerenderd.
Pagina: 1