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> |