0

I have some problem with XML, namespace and PHP DOM.

This is my output that I should get:

<cd:Document xmlns="http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2" xmlns:cd="http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0/ZbsCreaDoc.xsd">
<cd:Data>
    <cd:DataFormat>
        <cd:MimeType>text/xml</cd:MimeType>
    </cd:DataFormat>
    <cd:Content>
        <cd:EmbeddedData>

and this is my PHP code

$root = $doc->appendChild($doc->createElementNS('http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2', 'cd:Document'));
$root->setAttributeNS('http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2', 'cd', 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0');
$root->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation', 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0/ZbsCreaDoc.xsd');

Any ideas how to resolve this?

0

1 Answer 1

3
<?php
$doc = new DOMDocument();
$doc->formatOutput = true;
//set root element to correct cd prefix _and_ namespace:
$root = $doc->appendChild(
        $doc->createElementNS(
        $cd = 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0',
        'cd:Document'));
//this is the bit of obscure magic: it will set the default namespace
$doc->createAttributeNS(
        'http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2',
        'xmlns');
//now continue as normal
$root->setAttributeNS(
        'http://www.w3.org/2001/XMLSchema-instance',
        'xsi:schemaLocation',
        'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0/ZbsCreaDoc.xsd');
$data = $root->appendChild($doc->createElementNS($cd,'cd:Data'));
$dataformat = $data->appendChild($doc->createElementNS($cd,'cd:DataFormat'));
$dataformat->appendChild($doc->createElementNS($cd,'cd:MimeType','text/xml'));
$content = $data->appendChild($doc->createElementNS($cd,'cd:Content'));
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.