我正在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">
我在哪里错了?
答案 0 :(得分:1)
我在哪里错了?
您的目标不对。如果使用命名空间前缀,则必须声明。 您目标中的XML使用名称空间前缀,但从不声明它们。这将使XML不会namespace-well-formed。
您生成的输出 是命名空间格式正确的,并且是 应 产生的结果。