[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-internals
Subject:    Re: [PHP-DEV] annoying DOM limitation
From:       George Schlossnagle <george () omniti ! com>
Date:       2005-05-13 21:54:23
Message-ID: 941EFAF9-DB39-4D98-8829-F9E6FA0F55FC () omniti ! com
[Download RAW message or body]


On May 13, 2005, at 5:29 PM, Jared Williams wrote:

>>
>> While hacking on a PHPDoc -> WSDL generator, I ran into an
>> annoying limitation in the dom extension: you can't add a
>> namespace to a dom document unless you have an element in
>> that namespace.  Why might you want to do this?  Well, a
>> common thing is to have your xml-schema types to be specified
>> as attribute values, i.e.
>>
>> <element name="foo" type="xsd:string"/>
>>
>> for this to work I need xsd to be an alias for
>> http://www.w3.org/2001/ XMLSchema.
>>
>> To work around this, I added a DomElement::addNS($uri,
>> $alias) method to Dom.  Adding the namespace 'manually' as an
>> attribute on an element does not work.
>>
>> I know this isn't part of the Dom spec, but it's incredibly useful.
>> Does anyone (Rob, Chegru) mind me adding it to HEAD?
>>
>
>
> Hmm, I have been doing this via setAttributeNS(), with the XML  
> namespace namepace
>
>
> define('NS_NS', 'http://www.w3.org/2000/xmlns/');
> define('NS_XLINK', 'http://www.w3.org/1999/xlink');
>
> $document = new DOMDocument();
> $root = $document->createElement('root');
> $document->appendChild($root);
> $root->setAttributeNS(NS_NS, 'xmlns:xlink', NS_XLINK);
> echo $document->saveXML();
>
> Haven't encountered any problems with this method, seems to produce  
> XML (SVG in this case) fine.

Apparently I had one too many margaritas yesterday while I was  
writing this.  Whatever I was doing to trigger my error, your methods  
work.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic