Estoy tratando de hacer coincidir algunos resultados XML en una consulta SQL Server 2008 TSQL. El XML que estoy haciendo corresponder puede devolver listas de elementos. Las listas se identifican por nombre de atributo, no por nombre de nodo.Agregar atributo a ElementNode creado por TSQL FOR XML Path
Las funciones de ruta XML devolverán un nodo contenedor pero no puedo encontrar la manera de agregar atributos a ese nodo. En mi caso, serán valores codificados con base en el nombre de la tabla con la que estoy ejecutando contra la que seleccionan.
Tengo la 'x' como 'x' para mantener separadas las dos listas. En mis datos reales eso no es un problema ya que están en diferentes nodos. El problema es cómo agregar atributos al nodo "Lista".
Aquí es una SQL Fiddle page for the example below:
esquema de ejemplo
create table Table1 (Value varchar(50));
create table Table2 (Value varchar(50));
insert Table1 values
('A'), ('B'), ('C');
insert Table2 values
('X'), ('Y'), ('Z');
selecta muestra
select
(
select Value as '@I'
from Table1
for XML PATH('L'), TYPE
) as List,
'x' as 'x', -- needed to keep the Lists apart.
(
select Value as '@I'
from Table2
for XML PATH('L'), TYPE
) as List
for XML PATH
de salida real
<row>
<List>
<L I="A"/>
<L I="B"/>
<L I="C"/>
</List>
<x>x</x>
<List>
<L I="X"/>
<L I="Y"/>
<L I="Z"/>
</List>
</row>
salida deseada: (Adición de la "N ame "atributo al contenedor de lista.)
<row>
<List Name='Table1'> <!-- Added Attribute "Name" here -->
<L I="A"/>
<L I="B"/>
<L I="C"/>
</List>
<x>x</x>
<List Name='Table2'> <!-- Added Attribute "Name" here -->
<L I="X"/>
<L I="Y"/>
<L I="Z"/>
</List>
</row>