functx:add-or-update-attributes

Inclui ou atualiza atributos em elementos XML

Descrição

A função functx:add-or-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 incluídos. 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. Já a functx:add-attributes não atualiza o valor.

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 que vão receber o atributo

attrNames:string()

o nome ou os nomes dos atributos a incluir

attrValues:string()

o valor ou os valores dos atributos a incluir

Exemplos

Os exemplos abaixo usam este documento de entrada:

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

XPath

Resultado

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

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

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

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

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

<b att1="1" att2="2">x</b>

functx:add-or-update-attributes($in-xml/a, xs:QName('new:att1'), 1)

<a xmlns:new="http://new" new:att1="1">x</a>

functx:add-or-update-attributes($in-xml/a, QName('http://new','new:att1'), 1)

<a xmlns:new="http://new" new:att1="1">x</a>

Veja também