Как опустить объявления пространства имен XML? - PullRequest
0 голосов
/ 03 июля 2018

Я работаю над DomDocument, чтобы построить мой XML. Мне нужно вывести этот заголовок:

<p:FatturaElettronica versione="FPR12" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd">

Для достижения этого результата я написал этот код:

$dom  = new \DomDocument("1.0", "UTF-8");
        $init = $dom->createElementNS('http://www.example.com/XFoo', 'p:FatturaElettronica');
        $init->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
        $init->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation', 'http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd');
        $version = "FPR12";
        $init->appendChild($dom->createAttribute('versione'))->appendChild($dom->createTextNode($version));

Но вывод таков:

    <p:FatturaElettronica xmlns:p="http://www.example.com/XFoo"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd
/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione
/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd" 
versione="FPR12">

Где я не прав?

1 Ответ

0 голосов
/ 03 июля 2018

Где я не прав?

Это твоя цель, это неправильно. Префиксы пространства имен должны быть объявлены, если они используются. XML в вашей цели использует префиксы пространств имен, но никогда не объявляет их. Это оставило бы XML не правильно сформированное пространство имен .

Выходные данные, которые вы генерируете , равны правильно сформированному пространству имен и являются тем, что вы должны произвести.

...