Windows - XML nézetek készítése XDR sémával

SQL XML Support 4. rész

forráskód letöltése
Az előző részekben foglalkoztunk relációs adatok XML formátumú lekérdezésével. A mostani részben megismerkedünk az XDR sémával, amely az SQL 2000 szerver által szolgáltatott megjegyzések segítségével megfeleltethető teljes egészében a relációs adatokhoz.
Az XDR séma
Az SQL szerver XML támogatása révén XML nézeteket készíthetünk XDR (redukált XML adat) sémák segítségével. Ezek a nézetek XPath lekérdezésekkel elérhetőek. Ez hasonló ahhoz, amikor CREATE VIEW segítségével nézetet készítünk, majd SQL lekérdezést készítünk a nézetre.
Egy XML séma leírja az XML dokumentum struktúráját és az adatok különféle megszorításait. Az SQL szerverben az XDR nyelvet használjuk séma létrehozására. Az XDR flexibilis és felülkerekedik néhány megszorításon, amit a DTD tartalmaz – ami szintén adatstruktúrát ír le. A DTD-vel ellentétben az XDR sémák XML szintaxis segítségével írják le az adatstruktúrát. Egy DTD-ben minden adattartalom karakteres adat. Az XDR nyelvi séma lehetőséget nyújt, az elem vagy attribútum típusának deklarálására.
Az XDR séma kiterjesztése magyarázatokkal
Használhatjuk az XDR sémát magyarázatokkal együtt arra, hogy megfeleltetéseket képezzünk az adatbázishoz, lekérdezzük az adatbázistartalmat és visszakapjuk az eredményt egy XML dokumentum formájában. Ha rendelkezünk publikus XDR sémával (mint amilyenek a Biztalk sémák) akkor végrehajthatjuk az alábbiak egyikét:
  • Készítünk egy FOR XML EXPLICIT módú lekérdezést így a létrehozott adat valós a publikus XDR sémával szemben, viszont a FOR XML lekérdezés írása nehézkes lehet.
  • Készítsünk egy saját másolatot a publikus XDR sémáról, és adjunk hozzá megjegyzéseket, így létrejön egy megfeleltető séma. Meghatározhatunk XPath lekérdezéseket a megfeleltető sémához. Ez a folyamat sokkal egyszerűbb, mint egy komplex FOR XML EXPLICIT lekérdezést írni.
Séma megfeleltetés
Relációs adatbázis környezetben hasznos dolog a korlátlan XDR séma megfeleltetése egy relációs tárolóhoz. Az egyik megoldási lehetőség az XDR séma ellátása megjegyzésekkel (annotate XDR schema). Egy megjegyzésekkel ellátott XDR sémát megfeleltető sémának nevezünk, ami arra vonatkozóan nyújt információt, hogy az XML adat hogyan feleltethető meg egy relációs adathalmaznak. Egy megfeleltetett séma végeredményében a relációs adatok XML nézete. Ez a megfeleltetés relációs adatok XML dokumentumként való lekérdezéséhez használatos.
Az SQL szerver 2000 bemutat nagyon sok magyarázatot, ami használható az XDR sémában, hogy elemeket, attribútumokat adatbázis táblákhoz és oszlopokhoz feleltessünk meg. Meghatározhatunk lekérdezéseket a megfeleltetett sémákra, azaz XML nézetekre XPath segítségével. A megfeleltetett séma leírja az eredményül kapott dokumentum struktúrát.
Névtér a megjegyzésekhez
Egy XDR sémában a megjegyzések ezzel a névtérrel adhatók meg: urn:schemas-microsoft-com:xml-sql.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
...........
</Schema>
A névtér prefix használata tetszőleges. Ebben a dokumentumban az sql prefix használatos a megjegyzés névtér jelzésére.
Névtér adattípusokhoz
Az XDR séma lehetővé teszi az elemek és attribútumok típusának definiálását. Az adattípus ebben a névtérben határozható meg: urn:schemas-microsoft-com:datatypes.
Példa XDR séma használatára
A mellékelt példában látható, hogy hogyan néz ki egy XDR séma, illetve a megjegyzéssel ellátott formája. Ez az XDR séma egy <Employee> elemből áll, és az EmpID, Fname, Lname attribútumokból. A megfeleltető sémában az <Employee> elem megfelel az Employee táblának, és mindezt az sql:relation megjegyzés definiálja. Az attribútumok az sql:field megjegyzés segítségével az EmployeeId, FirstName és LastName oszlopokhoz rendeltek.
A megfeleltető sémában a relációs értékek case-sensitive-ek, azaz különböznek a kis és nagy betűk!
Megjegyzések
Az alábbi megjegyzéseket tehetjük az XDR sémába.
Megjegyzések Leírás
sql:relation XML elemet táblának feleltet meg.
sql:field XML elemet adattábla oszlopának feleltet meg.
sql:is-constant Létrehoz egy elemet, ami nem lesz táblának megfeleltetve. Ez az elem a lekérdezés output-ban látszik.
sql:map-field Lehetővé teszi a séma elemeknek, hogy az eredményből kimaradjanak.
<sql:relationship> XML elemek közötti reláció. A key, key-relation, foreign-key, foreign-relation attribútumok használatosak a relációhoz.
sql:limit-field, sql:limit-value Limitálhatjuk a visszatérési értékeket.
sql:key-fields Lehetővé teszi oszlopoknak egyedi azonosító sorok használatát.
sql:target-namespace Segítségével az alapértelmezett névtérből az outputban az elemek egy másik névtérbe kerülnek.
sql:id-prefix Valós XML ID, IDREF, IDREFS értékeket hoz létre.
sql:use-cdata CDATA elemek meghatározását teszi lehetővé.
sql:url-encode Amikor XML elem/attribútum egy SQL BLOB elemnek felel meg, akkor egy referencia értéket kapunk (URI), amit későbbi BLOB adathoz használhatunk.
sql:owerflow-field Azonosítja az adatbázis oszlopot, amely túlcsordult adatot tartalmaz.

SQL XML Support cikksorozat