Quiero transformar un documento XML. El XML de origen se ve así:Nombres de elementos dinámicos
<svc:ElementList>
<svc:Element>
<Year>2007</Year>
</svc:Element>
<svc:Element>
<Year>2006</Year>
</svc:Element>
<svc:Element>
<Year>2005</Year>
</svc:Element>
</svc:ElementList>
Quiero convertir eso en:
<ElementList>
<NewTag2007/>
<NewTag2006/>
<NewTag2005/>
</ElementList>
la siguiente línea de código no funciona:
<xsl:element name="{concat('NewTag',Element/Year)}"/>
La salida es una serie de elementos que se ven así: < NewTag>. (Sin los espacios ...)
"// Elemento/Año", "./Element/Year", y "// SVC: Elemento/Año" no funcionan bien. Una complicación es que la etiqueta "Elemento" está en el espacio de nombres "svc" mientras que la etiqueta "Año" está en el espacio de nombres predeterminado.
De todos modos, ¿estoy enfrentando un problema de espacio de nombres o estoy mal-utilizando la función "concat()"?
Me alegro de que la solución funcione. Pero, en general, recomendaría NO crear nombres de etiquetas durante el tiempo de ejecución sobre la marcha (¡aunque funciona!). Entiendo la estructura de TAG xml de una manera más estática. Mi solución sería: tomar una etiqueta XML estática como con dicho atributo. Todavía puede acceder a él con XSLT y XPath con "element [year =" 2007 "]. Así que no pierde flexibilidad, sino que gana seguridad y consistencia ... Solo un poco. –
Sauer