(PHP 5)
DOMElement::hasAttributeNS — Checks to see if attribute exists
Indicates whether attribute in namespace namespaceURI named localName exists as a member of the element.
The namespace URI.
The local name.
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
This does not work as expected (at least on 5.2.5) with attributes in the default namespace. For instance:
<?php
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns="testns" attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS('testns', 'attr'));
?>
returns bool(false) whereas:
<?php
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns:ns1="testns" ns1:attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS('testns', 'attr'));
?>
returns bool(true). NULL does work properly in the namespaceURI parameter, so changing my initial example to:
<?php
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns="testns" attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS(NULL, 'attr'));
?>
returns bool(true) as expected. Or even better for when you don't know whether the NS will be default:
<?php
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns="testns" attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS(
is_null($dom->documentElement->lookupPrefix('testns')) ? NULL : 'testns', 'attr'));
?>