Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13
  1. #11
    Un esempio un po' del minga... dato un foglio di stile con vari templates trasformo l'xml

    XSLT: styles.xsl
    Codice PHP:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:apply-templates />
    </xsl:template>

    <xsl:template match="form">
        <form id="{@id}" name="{@name}" action="{@action}" method="{@method}" enctype="{@enctype}">
            <xsl:apply-templates />
        </form>
    </xsl:template>

    <xsl:template match="items">
        <ul class="{@class}">
            <xsl:for-each select="item">
                [*]<xsl:apply-templates />
            </xsl:for-each>
        [/list]
    </xsl:template>

    <xsl:template match="selectXml">
        <select name="{@name}" id="{@id}">
            <xsl:for-each select="option">
                <option value="{@value}"><xsl:value-of select="text()" /></option>
            </xsl:for-each>
        </select>
    </xsl:template>

    <xsl:template match="link">
        [url="{@href}"]<xsl:apply-templates />[/url]
    </xsl:template>

    <xsl:template match="image">
        [img]{@src}[/img]
    </xsl:template>

    <xsl:template match="list">
        <table class="{@class}" cellpadding="4px" cellspacing="3" border="1" width="100%">
            <xsl:for-each select="row">
                <tr>
                    <xsl:apply-templates select="field" />
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>

    <xsl:template match="field">
        <td><xsl:apply-templates /></td>
    </xsl:template>

    <xsl:template match="labelXml">
        <label for="{@for}"><xsl:value-of select="@for" />:</label>
    </xsl:template>

    <xsl:template match="inputText">
        <input type="text" name="{@name}" value="{@value}" size="{@size}" />
    </xsl:template>

    <xsl:template match="inputHidden">
        <input type="hidden" name="{@name}" value="{@value}" />
    </xsl:template>

    <xsl:template match="textArea">
        <textarea name="{@name}" rows="{@rows}" cols="{@cols}"><xsl:value-of select="@value" /></textarea>
    </xsl:template>
    </xsl:stylesheet>
    XML: form.xml
    Codice PHP:
    <form id="addMessage" name="" action="" method="POST" enctype="">
        <
    labelXml for="Subject" />
        <
    inputText name="subject" value="subject.." size="30" />
        <
    labelXml for="Message" />
        <
    textArea name="message" rows="5" cols="60" value="message.." />
    </
    form
    PHP: es. www.tuosito.it/index.php?c=form
    Codice PHP:
    define('DIR_PATH'dirname(__FILE__));

    require_once( 
    'class/transformer.class.php' );

    try {
            
    // ricavo la pagina da trasformare tramite GET 
        
    $xmlSource 'xml/' $_GET['c'] . '.xml';
        
    $t = new transformer$xmlSource'xsl/styles.xsl' );

        echo 
    $t->toHtml();
        }
    catch ( 
    Exception $e ) {
        
    $msg 'Error: ' $e->getMessage() . '
    '
    ;
        
    $traceErrors $e->getTrace();
        
    $msg .= 'on: ' $traceErrors[0]['file'] . '
    '
    ;
        
    $msg .= 'line: ' $traceErrors[0]['line'] . '
    '
    ;
        echo 
    $msg;

    un esempiucolo di utilizzo.. se hai domande so qua
    Questa volta, più che un voto.. è favoreggiamento.

  2. #12
    Ne ho più di una di dimande.
    Ovviamente il tuo esempio semplice ma efficace.
    Intanto volevo chiederti se è possibile fare la solita cosa avendo solo xml e non avendo il file xsl(dello stile).
    Poi il mio file index.php contiene solo il codice php da te postato?

  3. #13
    Originariamente inviato da topolino
    Intanto volevo chiederti se è possibile fare la solita cosa avendo solo xml e non avendo il file xsl(dello stile).
    se non hai il foglio XSL non ti serve una trasformazione.. Devi imparare a lavorare sul DOM del documento, ci sono le funzioni apposite sia in php che su javascript..


    Poi il mio file index.php contiene solo il codice php da te postato?
    dipende molto dal progetto.. Non credo comunque, quello che ho postato è un esercizio fine a se stesso per capire la logica di utilizzo della classe..
    Questa volta, più che un voto.. è favoreggiamento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.