.. _functx_update-attributes:
========================
functx:update-attributes
========================
Updates the attribute value of an XML element
Description
~~~~~~~~~~~
The functx:update-attributes function takes one or more XML element nodes, along
with a sequence of attribute names and a sequence of attribute values, and
returns a newly constructed element with those attributes updated. The attribute
names and values are positionally related, i.e. the first attribute name
corresponds to the first attribute value, the second name to the second value,
etc. It leaves all the original attributes and content of the element, except
that if it already has an attribute with the same name of one of $attrNames, its
value is updated to match the corresponding value in $attrValues. Unlike the
functx:add-or-update-attributes function, if the attribute did not previous
exist on the element, it is not added.
Each name must be specified as an xs:QName value. QNames can be constructed with
calls to the xs:QName type constructor or the fn:QName function, as shown in the
examples.
The functx:update-attributes function takes one or more XML element nodes, along
with an attribute name and value, and returns a newly constructed element with
that attribute's value updated (and all the same content and attributes that
existed on the original element.) If the attribute did not previous exist on the
element, it is not added.
.. list-table::
:widths: 40 60
:header-rows: 1
* - **Parameters**
- **Description**
* - elements:element()
- the element(s) for which you wish to update the attribute
* - attrNames:string()
- the name(s) of the attribute(s) to add
* - attrValues:string()
- the value(s) of the attribute(s) to add
Examples
~~~~~~~~
.. list-table::
:widths: 50 50
:header-rows: 1
* - **XPath**
- **Results**
* - functx:update-attributes($in-xml/a, xs:QName('att1'), 123)
- x
* - functx:update-attributes($in-xml/a, (xs:QName('att1'),xs:QName('att2')), (1,2))
- x
* - functx:update-attributes($in-xml/b, xs:QName('att1'), 123)
- x
* - functx:update-attributes($in-xml/c, QName('http://new','att1'), 123)
- x
See Also
~~~~~~~~
.. toctree::
:titlesonly:
:glob:
* :ref:`functx_add-attributes`.
* :ref:`functx_copy-attributes`.
* :ref:`functx_remove-attributes`.