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