Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [XSL] Copiare xhtml da xml

    Salve,

    ho un xml abbastanza complesso e un xsl che mi fa la trasformazione in XHTML
    ho del codice (x)html dentro il file xml e vorrei copiarlo paro paro

    <xsl:copy-of select="node()" /> fa il suo lavoro ma mi aggiunge xmlns="" nei tag di primo livello

    i namespace, incuso xhtml, li dichiaro nel file XSL e infatti il resto del xsl non mi da problemi, suggerimenti?

  2. #2
    nell'xml ho una cosa tipo
    codice:
    <section type="column">
    CODICE XHTML
    </section>
    nell'xsl adesso ho
    codice:
    <xsl:template match="@*|node()">
    	
    		<xsl:copy>
    			<xsl:apply-templates select="@*|node()" />
    		</xsl:copy>
    	
    	</xsl:template>
    e

    codice:
     <xsl:template match="section[@type='column']">
    			<div><xsl:attribute name="class">column-<xsl:value-of select="position()"/></xsl:attribute><div><xsl:attribute name="class">column-<xsl:value-of select="position()"/>-inner</xsl:attribute>
    				
    					 <xsl:copy>
    						<xsl:apply-templates select="@*|node()"></xsl:apply-templates>
    					</xsl:copy>
    			
    			 </div></div>
    		 </xsl:template>
    e va bene a parte il fatto che mi spara fuori anche il section

    codice:
    <div class="column-1">
                  <div class="column-1-inner">
                    <section xmlns="" type="column">
    CODICE XHTML
    come faccio a dirgli di copiare solo i contenuti ( ossia xhtml )?

  3. #3

  4. #4
    ho cambiato l'xml

    ora è così

    codice:
    <code type="xhtml">
    CODICE XHTML
    </code>
    e l'xsl

    codice:
    <xsl:template match="code[@type='xhtml']">
    			<xsl:apply-templates select="*" />
    		</xsl:template>
    		 
    		<xsl:template match="*">
    			<xsl:element name="{name()}" xmlns="http://www.w3.org/1999/xhtml">
    				<xsl:apply-templates select="node()|@*" />
    			</xsl:element>
    		</xsl:template>
    e mi copia l'xhtml MA gli attributi dei tag xhtml me li mette come contenuti dei tag

    help me

  5. #5
    Anche io ho avuto un problema simile al tuo...

    Dovevo passare da un file xml ad uno html attraverso un xslt piuttosto semplice....
    il problema era che quando andavo a vedere l'output veniva fuori:

    <html xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Titolo ...</title>
    ..........

    Ovviamente i tag in rosso non li desideravo!!
    Ho eliminato il primo tag (ossia xmlns:xs="http....) semplicemente mettendo nell'elemento radice stylesheet dell'xslt la seguente istruzione:
    <xsl:stylesheet version="2.0" .... exclude-result-prefixes="xs" >

    è un po' una magata ma almeno ho eliminato il primo attributo rosso indesiderato!

    Credo cmq che si possa ottenere lo stesso risultato eliminando xmlns:xs="http://www.w3.org/2001/XMLSchema"
    dall'elemento radice dell'xslt che molti editor mettono di default....certo... sempre a meno che non ti serva!!!

    Per il secondo invece (ossia tutto il tag <meta>) non ho potuto fare niente e l'ho lasciato così...

    Spero di esserti stato un po' d'aiuto....cmq teniamoci aggiornati su possibili svolgimenti
    Vedo se riesco a trovare qualcos'altro...

  6. #6
    grazie per la risposta, ma il problema mi pare diverso

    tra l'altro uso php per fare la trasformazione e non so se supporta xsl 2... indagherò

    in effetti xsl 2 supporta copy con namespace... vediamo

  7. #7
    mi aggiunge xmlns="" nei tag di primo livello
    non era questo il tuo problema?

    altrimenti devo aver capito male io

  8. #8
    Originariamente inviato da dosdosdos
    non era questo il tuo problema?

    altrimenti devo aver capito male io
    sì, era un problema di namespace, risolto

    ora il problema è questo http://forum.html.it/forum/showthrea...0#post12524260

    mi mette gli attributi in output dentro il nodo xhtml e non sono più attributi

  9. #9
    Non è che mi sia molto chiaro quello vuoi fare...
    Tu fai il matching su tutto e trasformi tutto in tag...

    <xsl:apply-templates select="node()|@*" />

    così trasformi tutto in elementi...sia elementi che attributi

    <xsl:apply-templates select="node()" />

    basta togliere gli attributi.....è questo che vuoi?

  10. #10
    Originariamente inviato da dosdosdos
    Non è che mi sia molto chiaro quello vuoi fare...
    Tu fai il matching su tutto e trasformi tutto in tag...

    <xsl:apply-templates select="node()|@*" />

    così trasformi tutto in elementi...sia elementi che attributi

    <xsl:apply-templates select="node()" />

    basta togliere gli attributi.....è questo che vuoi?
    ecco hai quasi capito

    mi chiedevo se c'era il modo di mantenere gli attributi

    se ho <a href="sito"> deve rimanere <a href="sito">

    grazie

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.