functx:change-element-names-deep

Muda os nomes de elementos de um fragmento XML

Descrição

A função functx:change-element-names-deep muda os nomes dos elementos que estão em $nodes ou entre os descendentes deles, a partir de uma lista de nomes antigos ($oldNames) e de uma lista de nomes novos ($newNames). As listas andam por posição: o primeiro nome de $oldNames vira o primeiro nome de $newNames. Nomes que não estão em $oldNames não mudam.

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

nodes:node()

o elemento ou os elementos a alterar

oldNames:string()

a sequência de nomes antigos

newNames:string()

a sequência de nomes novos

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:stylesheet xmlns:dty="http://datypic.com">...
<xsl:variable name="in-xml-1" as="item()*">
  <in-xml>
     <a>
        <b>b</b>
        <c>c</c>
     </a>
  </in-xml>
</xsl:variable>
<xsl:variable name="in-xml-2" as="item()*">
  <in-xml xmlns:dty="http://datypic.com">
     <a>
        <dty:b>b</dty:b>
        <c>c</c>
     </a>
  </in-xml>
</xsl:variable>

XPath

Resultado

functx:change-element-names-deep($in-xml-1, xs:QName('b'), xs:QName('y'))

<in-xml> <a> <y>b</y> <c>c</c> </a> </in-xml>

functx:change-element-names-deep($in-xml-1, (xs:QName('a'), xs:QName('b'),xs:QName('c')), (xs:QName('x'), xs:QName('y'),xs:QName('z')))

<in-xml> <x> <y>b</y> <z>c</z> </x> </in-xml>

functx:change-element-names-deep($in-xml-2, (xs:QName('dty:b'),xs:QName('c')), (xs:QName('q'), QName('http://new','new:c')))

<in-xml> <a> <q>b</q> <new:c xmlns:new="http://new">c</new:c> </a> </in-xml>

Depende de

Veja também