PBDOM_ATTRIBUTE:
SetNamespace method
Description
Sets the
namespace for a PBDOM_ATTRIBUTE object based on the specified namespace
prefix and URI.
Syntax
1 |
<span>pbdom_attribute_name.</span>SetNamespace(string<span>strNamespacePrefix</span>, string<span> stringstrNamespaceUri</span>, boolean <span>bVerifyNamespace</span>) |
Argument |
Description |
---|---|
pbdom_attribute_name |
The name of the PBDOM_ATTRIBUTE |
strNamespacePrefix |
A string containing the namespace prefix |
strNamespaceUri |
A string containing the namespace URI |
bVerifyNamespace |
A boolean value to indicate whether to |
Return Values
Long. Returns 0 if namespace information
was set successfully and -1 if no in–scope namespace matching
the input prefix and URI exists.
Throws
EXCEPTION_INVALID_NAME – If
the input namespace prefix or the URI or the combination of prefix
and URI is not valid. This occurs if:
-
The
namespace prefix is an empty string and the URI is not an empty string.
If both are empty strings, the NONAMESPACE namespace is being specified
and this prefix/URI combination is correct. -
The namespace Prefix is
xmlns
and
the URI is nothttp://www.w3.org/2000/xmlns/
.
This namespace prefix/URI pair is unique and exclusive.
Its elements cannot be used individually and separately. The use
of this pair signifies a namespace declaration. -
The namespace prefix string is invalid. That is,
it does not conform to the W3C “Namespaces in XML” specifications
for the name of a prefix. -
The namespace URI string is invalid. That is, it
does not conform to the W3C specifications for a URI string. -
The owner Element of this PBDOM_ATTRIBUTE
already contains an attribute that has the same name as the current
PBDOM_ATTRIBUTE and belongs to the namespace that is to
be set for the current PBDOM_ATTRIBUTE.
EXCEPTION_INVALID_ARGUMENT – If
the input namespace prefix string or the URI string has been set
to null.
EXCEPTION_MEMORY_ALLOCATION_FAILURE – If
there is insufficient memory to allocate for internal strings.
EXCEPTION_INTERNAL_XML_ENGINE_ERROR – If
some internal error occurred in the XML engine.
Examples
This example demonstrates how to set the namespace
prefix and URI for a PBDOM_ATTRIBUTE. It creates a PBDOM_DOCUMENT
based on the following XML document:
1 |
<root xmlns:pre1="http://www.pre.com"><br>   <child1 pre1:a="123" b="456"/><br></root> |
The
namespace http://www.pre.com,
which has the prefix pre1, is defined in the root
element. The child element child1 has an attribute a that
belongs to the declared namespace and an attribute b that
does not belong to a namespace.
The example uses GetAttribute to get and
store the attribute b in pbdom_attr, then
calls SetNamespace on pbdom_attr,
specifying the strings “pre1” and “http://www.pre.com” as
the prefix and URI, and setting the bVerifyNamespace parameter
to true. This tells SetNamespace to
check first to see if the owner element of b or
the owner element’s ancestor elements contain a namespace
declaration for the pre1/http://www.pre.com namespace prefix/URI
pair.The search for this prefix/URI pair succeeds because
the root element contains such a namespace declaration.
1 |
PBDOM_BUILDER   pbdom_buildr<br>PBDOM_DOCUMENT   pbdom_doc<br>PBDOM_ATTRIBUTE   pbdom_attr<br>string  strXML = "<root xmlns:pre1=~"http://www.pre.com~"><child1 pre1:a=~"123~" b=~"456~"/></root>"<br> <br>try<br>  pbdom_buildr = Create PBDOM_BUILDER<br>  pbdom_doc = pbdom_buildr.BuildFromString (strXML)<br> <br>  pbdom_attr = pbdom_doc.GetRootElement().GetChildElement("child1").GetAttribute("b", "", "")<br>  <br>  pbdom_attr.SetNamespace("pre1", "http://www.pre.com", true)<br>  <br>  MessageBox ("NS Prefix", pbdom_attr.GetNamespacePrefix())<br>  MessageBox ("NS URI", pbdom_attr.GetNamespaceURI())<br>  MessageBox ("Name", pbdom_attr.getName())<br>  MessageBox ("Text", pbdom_attr.getText())<br>  <br>  pbdom_doc.SaveDocument ("ns.xml")<br>  <br>catch (PBDOM_EXCEPTION pbdom_except)<br>  MessageBox ("PBDOM_EXCEPTION", pbdom_except.GetMessage())<br>end try |
There is no other attribute inside child1 that
has the name b and that also belongs to the http://www.pre.com
namespace, so the SetNamespace method succeeds.
When serialized, the PBDOM_DOCUMENT looks like this:
1 |
<root xmlns:pre1="http://www.pre.com"><br>   <child1 pre1:b="456" pre1:a="123" /> <br></root> |
Usage
This method sets this PBDOM_ATTRIBUTE object’s
namespace based on the input prefix and URI. The input prefix can
be an empty string, but the input URI cannot be an empty string
unless the prefix is also an empty string.
If the input prefix and URI are both empty strings, the PBDOM_ATTRIBUTE has
no namespace. The bVerifyNamespace parameter
tells the method whether to search for an in-scope namespace declaration
that matches the input namespace prefix and URI.
As required by the W3C specification on “Namespaces
in XML,” if the current PBDOM_ATTRIBUTE has an
owner PBDOM_ELEMENT that contains an existing PBDOM_ATTRIBUTE
that has the same name as the current PBDOM_ATTRIBUTE and
the same namespace URI as is to be set for the current PBDOM_ATTRIBUTE,
the EXCEPTION_INVALID_NAME exception is thrown.