Community articleremoveAttribute method
Added by IBM contributorIBM on July 26, 2013
Rate this article 1 starsRate this article 2 starsRate this article 3 starsRate this article 4 starsRate this article 5 stars

Description

This method removes a specific attribute from a node. For example, the following XFDL represents a value node:
   <value custom:myAtt="x"></value>

To remove the custom attribute from this node, you would use removeAttribute.

Method

   public void removeAttribute(
      String theNamespaceURI,
      String theAttribute
   ) throws UWIException;


Parameters

Table 1. Method parameters
ExpressionTypeDescription
theNamespaceURIStringThe namespace URI for the attribute. For example:
http://www.ibm.com/xmlns/prod/XFDL/7.5

theAttributeStringThe local name of the attribute. For example, compute, encoding, and so on.


Returns

Nothing or throws a generic exception (UWIException) if an error occurs.

Usage details

Attributes and the null namespace:
If an attribute is on a node in a non-XFDL namespace, and that attribute has no namespace prefix, then the attribute is in the null namespace. For example, the following node is the custom namespace, as is the first attribute, but since the second attribute does not have a namespace prefix, it is in the null namespace:
   <custom:processing custom:stage="2" user="tjones">

When an attribute is the null namespace, you may either provide a null value for the namespace URI or use the namespace URI for the containing element.
For example, to indicate user attribute on the processing node, you could use the null namespace or the custom namespace URI.
Attributes and namespace prefixes:
If you refer to an attribute with a namespace prefix, removeAttribute first looks for a complete match, including both prefix and attribute name. If it does not find such 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:
   <a xmlns:custom="ABC" xmlns:test="ABC">
      <custom:myElement id="1" test:id="2">
   </a>

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:
   <custom:myElement id="1">


Example

The following method uses getAttributeList to retrieve the list of a node's attributes. It then searches through the list looking for a compute attribute. When if locates a compute attribute, it uses removeAttribute to remove the compute from the node.
   private static void stripCustomAttributes(FormNodeP theNode) throws Exception
   {
   int counter;
   StringListHolder URIList = new StringListHolder[];
   StringListHolder attributeList = new StringListHolder[];
 
      /* Get the list of attributes for the node. */
 
      theNode.getAttributeList(URIList, attributeList);
 
      /* Step through each attribute and delete the compute. */   
 
      for (counter = 0; counter < attributeList.value.length; counter++)
      {
         if (attributeList.value[counter].equals("custom:myAtt"))
         {
            theNode.removeAttribute(URIList.value[counter],
               attributeList.value[counter]);
         }
      }
   }


Parent topic:
FormNodeP class