Description This function returns the value of an attribute in a node. For example, in the XFDL fragment shown, the mimedata node has an attribute called encoding with the value base64.
Table 1. Function parameters
|theNode ||formNodeP||The node containing the attribute.|
|theNamespaceURI||r_charP||The namespace URI for the attribute. For example:
|theAttribute||r_charP||The local name of the attribute. For example, encoding.|
|returnPtr ||r_charP*||A pointer to the value of the attribute. If the attribute is empty or does not exist, this is set to NULL.|
Returns OK on success or an error code on failure.
If you refer to an attribute with a namespace prefix, getAttribute first looks for a complete match, including both prefix and attribute name. If it does not find a match, it will look for a matching attribute name that has no prefix but whose containing element has the same namespace.
For example, assume that the custom namespace and the test namespace both resolve to the same URI. In the following case, looking for the id attribute would locate the second attribute (test:id), since it has an explicit namespace declaration:
However, in the next case, the id attribute does not have an explicit namespace declaration. Instead, it inherits the custom namespace. However, since the inherited namespace resolves to the same URI, the id attribute is still located:
<a xmlns:custom="ABC" xmlns:test="ABC">
<custom:myElement id="1" test:id="2">
Forms generally use three special attributes that are not in an explicitly defined namespace and which require special commands to retrieve.
The first is the default namespace attribute, which looks like this:
To retrieve this attribute, you must use a namespace URI of NULL and the attribute name xmlns.
The second special attribute is a namespace declaration, which looks like this:
To retrieve this sort of attribute, you must use the namespace URI http://www.w3.org/2000/xmlns and the appropriate attribute name, such as custom.
Finally, there is the language attribute, which looks like this:
To retrieve this sort of attribute, you must use the namespace URI http://www.w3.org/XML/1998/namespace and the attribute name lang.
Example The following example shows a shortcut function that gets the value of the encoding attribute for a specific node. A node is passed to the function which then uses UFLGetAttribute to get the value of encoding attribute. This sample function assumes that the attribute is always in the XFDL namespace.
r_charP getEncodingType(formNodeP theNode)
if ((error = UFLGetAttribute(theNode,
"http://www.ibm.com/xmlns/prod/XFDL/7.7", "encoding", &theEncodingType))
fprintf(stderr, "Could not retrieve attribute's value.\n.");