tag style attribute sql xml tsql xslt for-xml

sql - style - tr html



SQL para XML-Salida de datos como elementos o como atributos (1)

Estoy intentando exportar algunos datos de una base de datos en un formato XML específico especificado por el cliente. El XML que produzco será manipulado (presumiblemente por XSLT) por un tercero para producir el resultado final, pero quiero formalizar mi XML lo más cerca posible de ese formato.

El cliente ha solicitado datos de cada producto así:

<product id="1234567890123"> <activeState partNumber="A1234567890" shipmentDate="20110518" /> </product>

Mi SQL existente es:

SELECT SerialNo as id, PartNo as partNumber, CONVERT(VARCHAR(8), GETDATE(), 112) AS shipmentDate, FROM Products WHERE SerialNo = @SerialNo FOR XML PATH (''product''), TYPE)

... lo que hace que:

<product> <id>100000000458</id> <partNumber>10004905892</partNumber> <shipmentDate>20120312</shipmentDate> </product>

Espero que sea tan fácil manipular estos datos en XSLT, pero simplemente como un ejercicio intelectual, me gustaría ver hasta dónde podría llegar en SQL. Mi primera ambición era simplemente expresar el id como un atributo del producto en lugar de un elemento secundario. La representación del elemento activeState que iba a dejar al XSLT, pero claramente, si puedo ayudarles en su camino, ¿por qué no hacerlo?

¿Alguna sugerencia?


Utilice @ para crear atributos.

select SerialNo as "@id", PartNo as "activeState/@partNumber", convert(varchar(8), getdate(), 112) as "activeState/@shipmentDate" from Products where SerialNo = @SerialNo for xml path(''product'')