[PHP > XML/XSL] linefeed 
 en &10; parse output probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Beetje jammer dat ik hier een topic voor open, vind ik zelf. Maar loop nu al een groot aantal uren te zoeken en kan gewoon het antwoord niet vinden. Wel het omgekeerde,"hoe krijg ik ze erin", maar ik wil ze er dus uit hebben. De = linefeed en de 	 = tab. Die verschijnen na transformatie in mijn output. Nu kan ik wel alles aan elkaar op 1 regel gaan plakken, zodat ze niet verschijnen, maar dat is ook niet de perfecte oplossing.

Voor een voorbeeld zie bijvoorbeeld hier
In de meta voor de keywords zie je dit bijvoorbeeld duidelijk. En ook in andere delen van de pagina (vooral vervelend bij JS gedeeltes.

Stukje uit mijn XSL:
XML:
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
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:om="http://www.onlinemeppel.nl/" 
    xmlns="http://www.w3.org/1999/xhtml">


<xsl:output method="xhtml" version="1.0" indent="yes" encoding="utf-8" omit-xml-declaration="yes"
    media-type="application/xhtml+xml"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" 
    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"    
    />

   ...
    <meta name="keywords" lang="nl">
        <xsl:attribute name="content">
            meppel,online,0522,gemeente,drenthe,bedrijven,buurt,nieuws,forum,foto,vragen,fora,google
            <xsl:for-each select="trefwoorden/trefwoord">
                ,<xsl:value-of select="text()" />
            </xsl:for-each>
        </xsl:attribute>
    </meta>
   ...

<xsl:template name="tplSlides">
    <xsl:param name="iDir" />

    <!-- Om de whitespace tegen te gaan eventjes beetje lelijk afgebroken //-->
    fSlide(event, <xsl:value-of select="$iDir" />,
    Array(<xsl:for-each select="om:bedrijf/om:pics/om:pic"
        >'<xsl:value-of select="."

        />'<xsl:if test="not(position()=last())">, </xsl:if
    ></xsl:for-each>));
</xsl:template>


de xml/xsl parse ik door middel van PHP:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    function xmlTransform($buffer)
    {
        $xml = new DomDocument('1.0','utf-8');
        $xml->resolveExternals=false;
        $xml->loadXML($buffer);
        
        $xsl = new DomDocument('1.0','utf-8');
        $xsl->resolveExternals=false;
        $xsl->loadXML(fReadFile());
        
        $proc = new XSLTProcessor();

        $proc->importStyleSheet($xsl);
        
        return $proc->transformToXML($xml);
    }


Ik wil het wel graag xhtml houden ipv de output op html te zetten. En een replace lijkt me ook beetje overdone :P

//edit: misschien ook nog nodig: phpinfo

[ Voor 14% gewijzigd door r0bert op 25-10-2005 21:25 ]


Acties:
  • 0 Henk 'm!

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
de 'losse' dingen tussen <xsl:text>mijn gave tekst hier die zonder tabs komt</xsl:text> tags zetten.

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Maar daarbinnen moeten ook nog weer value-of elementen komen, en het moet dus ook niet allemaal op 1 regel, want dat is gewoon te onoverzichtelijk. Op jouw manier begrijp ik het, dat ik aan ieder eind van een regel de </xsl:text> moet gebruiken en de volgende regel dan weer moet beginnen met <xsl:text> ?

voorbeeld code
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<xsl:template name="tplSlidesFoto">
    <xsl:param name="iDir" />

    fSlide(event, <xsl:value-of select="$iDir" />, 
        Array(
        <xsl:for-each select="om:fotoserie/om:foto">
            '<xsl:value-of select="om:locatie" />'
            <xsl:if test="not(position()=last())">
                , 
            </xsl:if>
        </xsl:for-each>
        )
    );
</xsl:template>

[ Voor 27% gewijzigd door r0bert op 26-10-2005 16:29 . Reden: vb code > voorbeeld code ]


Acties:
  • 0 Henk 'm!

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
idd, als je wilt dat er niet van die rare tekens komen, dan moet je niet losse tekst in je xslt zetten.
in je huidige oplossing met het dynamisch genereren van javascript is dat veel <xsl:text> tags ..

je kan ook je javascript wat anders maken. Als je bijv los in een variabele je parameters definieert, dan hoeft je functieaanroep niet te wijzigen...