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



Reply via email to