Toon posts:

XSL/XML Keuzes mbv PHP

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende XML file:
<?xml version="1.0" encoding="UTF-8" ?>
<note>
<english>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</english>
<dutch>
<to>Tove</to>
<from>Jani</from>
<heading>Herinnering</heading>
<body>Vergeet me niet dit weekend!</body>
</dutch>
</note>

En in mijn xsl file zeg dat ie of english of dutch moet kiezen op de volgende manier:
<xsl:template match="/note">
<xsl:for-each select="dutch">

Nu wil ik dus dat die taal dmv van een variabel aangegeven wordt. Is dit mogelijk mbv php:
dus iets als: xsl:for-each select="<?php echo $taal;?>">

Bovenstaande werkt overigens niet :(

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Heb je de server meegedeeld dat hij je xsl bestand als php-script moet parsen?
code:
1
2
3
<Files mijnbestand.xsl> 
ForceType application/x-httpd-php
</Files>

of wat ook in jouw geval van toepassing is...

Verwijderd

Topicstarter
Ik gebruik het volgende script om te parsen:

<?php
Transform( join('', file('test.xml')),
join('', file('simple.xsl')));

function Transform($xml, $xsl) {
xslt_process($xsl, $xml, $result);
echo $result;
}

?>

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

ow ik dacht dat je bezig was iets met cliënt side xsl te doen :)

maar het moet in principe mogelijk zijn, als je geen gebruik maakt van je filesystem maar van de diensten van je webserver parsed hij eerst je xsl bestand (of je txt bestand, of zelfs je gif bestand) als php als jij dat aangeeft...

Verwijderd

Topicstarter
Hoe kan ik dit aangeven dan?

Dat met die ForceType krijg ik niet voor elkaar

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Voor zover ik weet is forcetype de enige manier...

krijg je een foutmelding oid?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je kan aan een stylesheet een parameter meegeven :). Dat zou de perfecte oplossing voor jou zijn.

Heb hier een keer in een topic iets over gezegd... Ik zal even zoeken.

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


Verwijderd

Topicstarter
Maar hoe gebruik die force type? :)
ik zal even de code van de XSL geven:


<?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="/note">
<BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:11pt; background-color:#EEEEEE">

<xsl:for-each select="english">
<DIV>
<SPAN STYLE="font-weight:bold; color:blue; font-size:15pt"><xsl:value-of select="to"/></SPAN>
</DIV>
<DIV>
<SPAN STYLE="font-weight:bold; color:blue; font-size:15pt"><xsl:value-of select="from"/></SPAN>
</DIV>
<DIV>
<SPAN STYLE="font-weight:bold; color:blue; font-size:15pt"><xsl:value-of select="body"/></SPAN>
</DIV>
<p></p>
</xsl:for-each>
</BODY>
</xsl:template>
</xsl:stylesheet>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ok, hier staat een klein voorbeeld hoe je een parameter kunt gebruiken in een XSL stylesheet. Dit is wellicht de makkelijkste oplossing. Je kan natuurlijk ook je stylesheet dynamisch maken, maar das niezo handig en veel werk.

[topic=232403/1/25] (in mijn tweede post)

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


Verwijderd

Topicstarter
Die parameter doorgeven is niet wat ik zoek. Die vult alleen een bepaalde waarde in.

Ik wil selecteren binnen in het XML bestand.
Dus taal=dutch dan pakt ie alles uit <dutch> en zo ook voor english

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
LarBor: Die parameter doorgeven is niet wat ik zoek. Die vult alleen een bepaalde waarde in.
Nope. Je kan die parameter ook gewoon opnemen in een select attribuut van je apply-templates of je for-each (de XPath expressie dus). Hierdoor kan je dus als parameter aan de stylesheet de taal meegeven.
Ik wil selecteren binnen in het XML bestand.
Dus taal=dutch dan pakt ie alles uit <dutch> en zo ook voor english
Dat kan dus ook met een parameter, maar dit kan inderdaad ook door met PHP te stylesheet aan te passen. Makkelijker is dat echter niet.

Ik zal wel ff een voorbeeld bakken.

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik heb het ongeveer voor elkaar, maar wel op een iets andere manier.

Neem deze input:
code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0"?>

<document>
    <language id="dutch">
        <title>Welkom</title>
    </language>

    <language id="english">
        <title>Welcome</title>
    </language>
</document>

en deze stylesheet:
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
<?xml version="1.0"?>

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

    <xsl:output method="html"/>
    <xsl:param name="language"/>

    <xsl:template match="document">
        <html>
            <head>
                <title>Example</title>
            </head>

            <body>
                <xsl:apply-templates select="language[@id=$language]"/>
            </body>
        </html>
    </xsl:template>

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

dan transformeert dit met parameter english netjes naar dit:
code:
1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Example</title>
</head>
<body>
        
<h1>Welcome</h1>
    
</body>
</html>

Helaas kreeg ik het niet voor elkaar om de tag elementen ook de naam van de taal te geven en dan dus op in het apply-templates select attribuut de parameter op te nemen als kantnaam.Ik kon er niet opkomen hoe dat moest |:( .

Maar deze input is misschien ook wel mooier ;)

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

Pagina: 1