Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: chiusura tag in xhtml

  1. #11
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    29
    Scusa ma non sono d'accordo, o forse non ho capito.

    A titolo di esempio, se ho nell'xml un elenco di elementi "persone" che hanno l'attributo "descrizione", potenzialmente vuoto, e realizzo un xsl tipo

    codice:
    <person name="Pippo" desc="Amico di Topolino"/>
    <person name="Pluto" desc=""/>
    codice:
    <xsl:template match="person">
       [img]person.gif[/img]
       <div class="person_desc"><xsl:value-of select="@desc"/></div>
    </xsl:template>
    - Con 'xslutput' su 'xml' il tag 'img' viene chiuso (conforme xhtml), ma il secondo div risulta '<div class="person_desc" />' (compressato dal parser, non conforme xhtml)

    - Con 'xslutput' su 'html' il tag 'img' non viene chiuso (conforme html ma non xhtml) e il secondo div risulta '<div></div>' (conforme html e xhtml).

    Non prendo in considerazione toppe (tipo testare se nel template l'attributo è vuoto, e in tal caso scrivere spazi per evitare che il parser lo compressi).

    Morale, non esiste modo di generare xhtml da xsl.
    Se così non fosse, perchè nel XSLT versione 2 aggiungeranno il
    mode='xhtml' a xslutput?

    ciao!

  2. #12
    Utente di HTML.it L'avatar di Polley
    Registrato dal
    Jan 2005
    Messaggi
    696
    1) Un attributo nell'xml senza contenuto non ha senso e di norma si toglie l'attributo.

    Codice PHP:
    <person name="Pippo" desc="Amico di Topolino"/>
    <
    person name="Pluto" /> 
    2) Nel foglio di stile xsl devi fare dei controlli per verificare se l'elemento ha l'attributo ed in quel caso visuaslizzarlo.

    Codice PHP:
    <xsl:template match="person">
       [
    img]person.gif[/img]
       <
    xsl:if test="@desc">
           <
    div class="person_desc"><xsl:value-of select="@desc"/></div>
       </
    xsl:if>
    </
    xsl:template

    Non prendo in considerazione toppe (tipo testare se nel template l'attributo è vuoto, e in tal caso scrivere spazi per evitare che il parser lo compressi).
    Non sono toppe, lasciare un div vuoto in un documento xhtml <div></div> solo perchè manca il suo contenuto al suo interno indica che stai sbagliando a creare il documento e non ha senso, se quel div ti serve per la formattazione del layout, cambiala.

    Se proprio vuoi metterci un div vuoto <div></div> devi crearti uno schema xml da dare in pasto lato server e formattare il documento in uscita.


  3. #13
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    29
    Polley, le tue osservazioni sono + che corrette, il mio era solo un grezzo esempio di riflessione sul fatto che, forse solo a mio parere, xhtml non è xml, perchè in xml '<alfa></alfa>' e '<alfa />' sono equivalenti, mentre in xhtml no, e se un documento xhtml è implicitamente anche un xml, allora non dovrebbe servire aggiungere in xslt2 il mode='xhtml' all''xslutput'. no?

    Non intendevo dire che è una toppa testare se l'attributo è vuoto o non c'è, intendevo dire che è una toppa aggiungere spazi per evitare che sia compresso!

    grazie mille per il feedback!

  4. #14
    per quel che so io (X)HTML non è XML ma una transizione dall' HTML verso XML quindi non è prorpiamente ne uno ne l'altro, questo perchè browser "fighissimi" come IE non sono in grado di servire pagine XML

  5. #15
    Utente di HTML.it L'avatar di Polley
    Registrato dal
    Jan 2005
    Messaggi
    696
    Xhtml è a tutti gli effetti un documento xml, non per niente viene emessa anche la dichiarazione

    Codice PHP:
    <?xml version="1.0" encoding="iso-8859-1"?>
    che poi xhtml imponga delle regole al documento è un'altro discorso ma resta comunque un xml

    scrivere in xml <alfa></alfa> <alfa /> non ti dà errore ma un programmatore scrive <alfa /> che poi xhtml ti imponga di scrivere <alfa /> perchè devi seguire delle regole standard per tutti i browser è diverso.

    il parser xsl non conosce le regole dell'xhtml, sei tu che devi conoscerle

    Non intendevo dire che è una toppa testare se l'attributo è vuoto o non c'è, intendevo dire che è una toppa aggiungere spazi per evitare che sia compresso!
    infatti non si devono aggiungere spazi, ma si deve togliere l'elemento div; a che serve un div vuoto nel documento ?

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.