Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: PHP 5.3 - DOM e creazione namespace con attributi multipli

  1. #1

    PHP 5.3 - DOM e creazione namespace con attributi multipli

    Salve a tutti. Ho un problema coi namespace per un file XML che sto cercando di generare usando DOM document. Il problema è il seguente. Devo generare la seguente intestazione XML
    codice:
    <p:FatturaElettronica versione="1.0" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://www.fatturapa.gov.it/sdi/fatturapa/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    Ho provato nel seguente modo, ma non funziona!
    Codice PHP:
    $xml = new DomDocument("1.0""ISO-8859-1");
    $xml -> formatOutput true
    $root $xml ->createElement('p:FatturaElettronica'); 
    $root $xml->appendChild($root);
    $xml -> createAttributeNS("http://www.fatturapa.gov.it/sdi/fatturapa/v1.0"'xmlns');
    $root -> setAttributeNS('xmlns''xsi','http://www.w3.org/2001/XMLSchema-instance');
    $root -> setAttributeNS('xmlns''ds',"http://www.w3.org/2000/09/xmldsig#");
    $root -> setAttributeNS('xmlns''p'"http://www.fatturapa.gov.it/sdi/fatturapa/v1.0");
    $root -> setAttribute('versione','1.0'); 
    Sapete dirmi il perchè? Come posso risolvere il problema?
    Grazie.

  2. #2
    La situazione è migliorata modificando il codice nel seguente modo:
    Codice PHP:
    $xml = new DomDocument("1.0""ISO-8859-1");
    $root $xml -> createElementNS("http://www.fatturapa.gov.it/sdi/fatturapa/v1.0",'p:FatturaElettronica');
    $root $xml -> appendChild($root);$root -> setAttribute('versione','1.0');
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/'xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/''xmlns:ds',"http://www.w3.org/2000/09/xmldsig#");
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/''xmlns:p',"http://www.fatturapa.gov.it/sdi/fatturapa/v1.0"); 
    che produce il seguente output:
    codice:
    <p:FatturaElettronica xmlns:p="http://www.fatturapa.gov.it/sdi/fatturapa/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" versione="1.0">
    Direi che ci siamo.

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    2,942
    Ma questi a cosa servono
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ?

    Senza questi namespace non riconosce i tag ?

  4. #4
    Cassano, sono direttive del ministero su come creare l'XML della fattura elettronica. Mi sono dovuto attenere. Se lo togli non saprei cosa pregiudica a livello di coerenza del file.

  5. #5
    Quote Originariamente inviata da DanTecoda Visualizza il messaggio
    La situazione è migliorata modificando il codice nel seguente modo:
    Codice PHP:
    $xml = new DomDocument("1.0""ISO-8859-1");
    $root $xml -> createElementNS("http://www.fatturapa.gov.it/sdi/fatturapa/v1.0",'p:FatturaElettronica');
    $root $xml -> appendChild($root);$root -> setAttribute('versione','1.0');
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/'xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/''xmlns:ds',"http://www.w3.org/2000/09/xmldsig#");
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/''xmlns:p',"http://www.fatturapa.gov.it/sdi/fatturapa/v1.0"); 
    che produce il seguente output:
    codice:
    <p:FatturaElettronica xmlns:p="http://www.fatturapa.gov.it/sdi/fatturapa/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" versione="1.0">
    Direi che ci siamo.
    Ottima guida, anche io sto provando a realizzare un export fatto in casa per la fattura elettronica... ho seguito il tuo codice, ma quando provo a validare il file genarato... mi restituisce sempre il solito errore di formato non valido sulla seconda riga....

    l'attuale formato prevede xmlns:ds="http://www.w3.org/2000/09/xmldsig#" prima di xmlns p="http://www.fatturapa.gov.it/sdi/fatturapa/v1.1".... ho provato ad invertirli nello script ma mi da errore nella generazione del file xml !!?!?

    E' possibile invertirli ?? Potrebbe essere proprio quello il problema ?!??!

    Grazie in anticipo


  6. #6
    Motfeus, l'ordine non credo sia un problema. A me il sistema le valida tranquillamente. Stai attento ovviamente che la versione fatturaPA v1.1 va cambiata sia nel createElementNS che nel setAttributeNS, mentre la versione del domdocument rimane 1.0. Superfluo dire di controllare bene tutte le url. Se l'hai fatto e non funziona, l'errore potrebbe essere altrove.



  7. #7
    Ciao DanTecoda... hai per caso adeguato il tuo script alla versione 1.2 ???

  8. #8
    Ciao. Non ho ancora adeguato il mio script alla 1.2, ma da quanto ho capito, basta modificare i valori degli attributi:

    codice:
    $xml = new DomDocument("1.0", "UTF-8");
    $root = $xml -> createElementNS("http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2",'p:FatturaElettronica');
    $root = $xml -> appendChild($root);$root -> setAttribute('versione','FPA12');
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/', xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:ds',"http://www.w3.org/2000/09/xmldsig#");
    $root -> setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:p',"http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2");
    Quando generi l'XML l'elemento FormatoTrasmissione và settato a FPA12.

    Non ho ancora provato, dunque non ci metterei la mano sul fuoco...

  9. #9
    Ok ora provo a fare delle verifiche di validazione..
    anche se ora esce il formato FPA12 ma manca la riga xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd " che ho visto essere presente negli esempi di formato


  10. #10
    Ok ora provo a fare delle verifiche di validazione.
    Anche se ora esce il formato FPA12 ma manca la riga xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd " che è comunque presente nel file di esempio come modello per la versione 1.2

    Ti aggiorno

Tag per questa discussione

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 © 2018 vBulletin Solutions, Inc. All rights reserved.