Beépített xsd sémák létrehozása

A FOR XML-záradékban kérheti, hogy a lekérdezés a lekérdezés eredményével együtt egy beépített sémát küldjön vissza. Ha XDR sémát szeretne kapni, használja a FOR XML-záradék XMLDATA kulcsszavát. Ha XSD-sémát szeretne kapni, akkor az XMLSCHEMA kulcsszót kell használnia.







Ez a szakasz leírja az XMLSCHEMA kulcsszót, és megmagyarázza az eredményül kapott beépített XSD séma struktúráját. Az alábbiak a beágyazott sémákra vonatkozó korlátozások.

Az XMLSCHEMA paraméter csak RAW és AUTO módban állítható be, ez EXPLICIT módban nem végezhető el.

Ha egy TYPE direktíva definiálódik a FOR XML alkérdésben, akkor a lekérdezés eredményének az xml adat típusát kell megadnia, és a nem típusú XML-adatok egy példányát kell átadni. További információ: XML adatok (SQL Server).

Az eredményként kapott sémában számos különböző sémakumentum létezik, amelyek különböző névtereket tartalmaznak. Legalább a következő két sémát kell visszaküldeni.

Egy séma dokumentum a Sqltypes névtér számára. amelyhez az alapvető SQL típusok visszakerülnek.

Egy másik sémadokumentum, amely leírja a FOR XML lekérdezés eredményének formáját.

Ezenkívül, ha a lekérdezés eredményei magukban foglalják az összes xml típusú adattípust. akkor az ezekhez az xml adattípusokhoz társított rendszerek visszaküldésre kerülnek.

A FOR XML eredményformátumot leíró sémadokumentum céldokumentum-névtérében egy rögzített rész és egy számszerű rész kerül automatikusan növekvő értékre. A névtér formátuma az alábbiakban látható, ahol n pozitív egész szám. Például az előző lekérdezésben a célnevek urn: schemas-microsoft-com: sql: SqlRowSet1.

Nemkívánatos lehet a céltáblák megváltoztatása a két futás között bekövetkezett eredmények következtében. Ha például az eredményül kapott XML-t kérték, akkor a célnevek helyének módosításakor frissítenie kell a lekérdezést. Szükség esetén meg lehet adni egy célnevtartományt, ha az XMLSCHEMA paramétert hozzáadja a FOR XML-záradékhoz. Az eredményül kapott XML tartalmazza a megadott névteret, és változatlan marad, függetlenül attól, hogy hány alkalommal hajtották végre a lekérdezést.

Mivel a ELEMENTS direktíva hozzá van adva a lekérdezéshez, az XML-eredmény elemek felhasználásával készül. Ez a kérés egy XMLSCHEMA direktíva meghatározását is tartalmazza, így a beépített XSD séma visszakerül. Eredményhalmaz:







Vegye figyelembe a következő adatokat az előző lekérdezésből.

, és Ezek nem alkotóelemek, mivel oszlopokra vannak leképezve. Az ELEMENTS direktíva miatt az oszlopadatokat az XML elemekként adják vissza. Ezek egy összetett entitástípus helyi elemeihez vannak leképezve. Ne feledje, hogy ha az ELEMENTS direktíva nincs megadva, akkor a SalesOrderID értékeket. A ProductID és a OrderQty a megfelelő összetett entitás típus helyi attribútumaira van leképezve.

A következő érvelés a CustOrder és a CustOrderDetail táblákat használja. A következő minták teszteléséhez hozzon létre ugyanazokat a táblázatokat, és adja hozzá saját mintaadatait:

Ez az XML. A beépített XSD csak a része látható:

Vegye figyelembe a következőket a beépített XSD sémában.

Mindkét érték, a ListPrice és a DealerPrice, azonos adattípussal és pénzzel rendelkeznek. és mindkettő értéke NULL a táblázatban. Így, mivel nem térhetnek vissza az eredményül kapott XML-ben, egy összetett elemtípus deklarációjában csak egy gyermek lehet a paraméterek minOccurs = 0 és maxOccurs = 2 paraméterekkel.

Ennek eredményeképpen, mivel a DealerPrice értéke a táblában NULL, mint elem csak a ListPrice érték kerül vissza. Amikor hozzáadja az XSINIL paramétert az ELEMENTS direktívahoz, az xsi: nil értéket tartalmazó elemek fognak fogadni. egyenlő TRUE, az elemhez , a megfelelő márkakereskedő. Továbbá két gyermeket fognak kapni egy összetett típus definíciójában a beépített XSD rendszerben. Mindkét esetben a nillable attribútum TRUE lesz. Ez egy köztes eredmény:

2. eset Egy kulcs oszlop és egy nem kulcsos oszlop, azonos típusú

A következő lekérdezés egy kulcs oszlopot és egy azonos típusú nem kulcsos oszlopot tartalmaz.

Az eredmény. Megjelenik a beépített XSD séma csak egy része:

Ne feledje, hogy a beépített XSD sémában az elem a Col2 oszlopnak felel meg 0-nak megfelelő minOccurs paraméterrel.

3. eset. A különböző típusú elemek és a megfelelő oszlopok NULL lehetnek

A 2. esethez a következő lekérdezést adjuk meg a minta táblázathoz képest:

Ebben a lekérdezésben a Col2 és a Col3 azonos aliasokkal rendelkezik. Ez két azonos nevű elem megjelenéséhez vezet, amelyek az elem gyermekelemei ennek eredményeként. Mindkét oszlop különböző típusokhoz tartozik, és lehet NULL. Az eredmény. Megjelenik a beépített XSD séma csak része.

IgnoreKanaType IgnoreWidth "sqltypes: sqlSortId =" 52 ">

Vegye figyelembe a következőket a beépített XSD sémában.

Ennek eredményeként egy elem minden egyes példánya a példány típusára utal az xsi: type attribútum használatával.




Kapcsolódó cikkek