Próbuję wyeksportować niektóre dane z bazy danych w określonym formacie XML określonym przez klienta. Produkowany przeze mnie plik XML zostanie zmanipulowany (prawdopodobnie przez XSLT) przez trzecią stronę w celu uzyskania ostatecznego wyniku, ale chcę sformatować mój XML tak blisko, jak to tylko możliwe, do tego formatu.SQL FOR XML - Dane wyjściowe jako elementy lub jako Atrybuty
Klient zażądał danych na temat każdego produktu tak:
<product id="1234567890123">
<activeState partNumber="A1234567890" shipmentDate="20110518" />
</product>
Moja istniejący SQL to:
SELECT SerialNo as id,
PartNo as partNumber,
CONVERT(VARCHAR(8), GETDATE(), 112) AS shipmentDate,
FROM Products
WHERE SerialNo = @SerialNo
FOR XML PATH ('product'), TYPE)
... co czyni:
<product>
<id>100000000458</id>
<partNumber>10004905892</partNumber>
<shipmentDate>20120312</shipmentDate>
</product>
Spodziewam się, że łatwo jest manipulować tymi danymi w XSLT, ale wyłącznie jako ćwiczenie intelektualne, chciałbym zobaczyć, jak daleko mogę SQL. Moją pierwszą ambicją było po prostu wyrazić id jako atrybut produktu, a nie jako element dziecka. Renderowanie elementu activeState miałem zamiar pozostawić XSLT, ale wyraźnie, jeśli mogę pomóc im w drodze, dlaczego nie zrobić tak ...
Wszelkie sugestie?
działa wspaniale - dzięki. – CJM