RE: [PHP-DEV] annoying DOM limitation
| From: | Jared Williams | Date: | Fri, 13 May 2005 21:29:59 +0000 |
| Subject: | RE: [PHP-DEV] annoying DOM limitation | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-16243@lists.php.net to get a copy of this message | ||
>
> 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.
Jared