functx:update-attributes

Atualiza o valor de atributos de um elemento XML

Descrição

A função functx:update-attributes recebe um ou mais elementos XML, uma sequência de nomes de atributo e uma sequência de valores, e devolve um elemento novo com esses atributos atualizados. Nomes e valores andam por posição: o primeiro nome corresponde ao primeiro valor, o segundo nome ao segundo valor, e assim por diante. Todos os atributos e o conteúdo originais do elemento são mantidos, exceto que, se o elemento já tiver um atributo com um dos nomes de $attrNames, o valor dele é atualizado com o valor correspondente de $attrValues. Ao contrário da functx:add-or-update-attributes, se o atributo não existia no elemento, ele não é incluído.

Cada nome precisa ser um valor xs:QName. QNames podem ser construídos com o construtor de tipo xs:QName ou com a função fn:QName, como nos exemplos.

Parâmetros

Descrição

elements:element()

o elemento ou os elementos cujos atributos serão atualizados

attrNames:string()

o nome ou os nomes dos atributos a atualizar

attrValues:string()

o valor ou os valores novos dos atributos

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:variable name="in-xml" as="item()*">
  <in-xml xmlns:new='http://new'>
     <a att1='def'>x</a>
     <b>x</b>
     <c new:att1='def'>x</c>
  </in-xml>
</xsl:variable>

XPath

Resultado

functx:update-attributes($in-xml/a, xs:QName('att1'), 123)

<a att1="123">x</a>

functx:update-attributes($in-xml/a, (xs:QName('att1'),xs:QName('att2')), (1,2))

<a att1="1">x</a>

functx:update-attributes($in-xml/b, xs:QName('att1'), 123)

<b>x</b>

functx:update-attributes($in-xml/c, QName('http://new','att1'), 123)

<c xmlns:new="http://new" new:att1="123">x</c>

Veja também