Menambahkan logika bisnis ke data XML

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database

Logika bisnis Anda dapat ditambahkan ke data XML dengan beberapa cara:

  • Anda dapat menulis batasan baris atau kolom untuk memberlakukan batasan khusus domain selama penyisipan dan modifikasi data XML.

  • Anda dapat menulis pemicu pada kolom XML yang diaktifkan saat Anda menyisipkan atau memperbarui nilai di kolom. Pemicu dapat berisi aturan validasi khusus domain atau mengisi tabel properti.

  • Mesin Database mencakup kemampuan untuk menjalankan kode terkelola. Anda dapat menggunakan integrasi runtime bahasa umum (CLR) ini untuk menulis fungsi dalam kode terkelola tempat Anda meneruskan nilai XML, dan menggunakan kemampuan pemrosesan XML yang disediakan oleh namespace System.Xml. Contohnya adalah menerapkan transformasi XSL ke data XML. Atau, Anda dapat mendeserialisasi XML ke dalam satu atau beberapa kelas terkelola dan mengoperasikannya dengan menggunakan kode terkelola.

  • Anda dapat menulis prosedur dan fungsi tersimpan Transact-SQL yang memulai pemrosesan pada kolom XML untuk kebutuhan bisnis Anda.

Contoh: Menerapkan transformasi XSL

Pertimbangkan fungsi TransformXml() CLR yang menerima instans jenis data xml dan transformasi XSL yang disimpan dalam file, menerapkan transformasi ke data XML, lalu mengembalikan XML yang diubah dalam hasil. Berikut ini adalah fungsi kerangka yang ditulis dalam C#:

public static SqlXml TransformXml (SqlXml XmlData, string xslPath) {
   // Load XSL transformation
   XslCompiledTransform xform = new XslCompiledTransform();
   XPathDocument xslDoc = new XPathDocument (xslPath);
   xform.Load(xslDoc);

   // Load XML data
   XPathDocument xDoc = new XPathDocument (XmlData.CreateReader());

   // Return the transformed value
   MemoryStream xsltResult = new MemoryStream();
   xform.Transform(xDoc, null, xsltResult);
   SqlXml retSqlXml = new SqlXml(xsltResult);
   return (retSqlXml);
}

Setelah rakitan terdaftar dan fungsi Transact-SQL yang ditentukan pengguna dibuat, SqlXslTransform() sesuai dengan TransformXml(), fungsi dapat dipanggil dari Transact-SQL seperti yang ditunjukkan dalam kueri berikut:

SELECT SqlXslTransform (xCol, 'C:\MyFile\xsltransform.xsl')
FROM    T
WHERE  xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;

Hasil kueri berisi kumpulan baris XML yang ditransformasi.

Integrasi CLR ke dalam SQL Server memperluas kemungkinan untuk menguraikan data XML ke dalam tabel atau promosi properti, dan mengkueri data XML dengan menggunakan kelas terkelola di namespace System.Xml. Untuk informasi selengkapnya, lihat Data XML (SQL Server).