Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Amikor frissíted a meglévő adatokat, meg kell határoznod mind az <előtt> , mind <a után> blokkokat. Az előtte> és utána<>blokkokban megadott elemek leírják a kívánt változást.< A updategram az előző> blokkban megadott< elemeket használja az adatbázisban meglévő rekord(ok) azonosítására. Az utáni<> blokk megfelelő elemei azt jelzik, hogyan néznek ki a rekordoknak a frissítési művelet végrehajtása után. Ebből az információból a updategram létrehoz egy SQL utasítást, amely megegyezik az <after> blokkkal. A updategram ezután ezt az utasítást használja az adatbázis frissítésére.
Ez a updategram formátum egy update művelethez:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync [mapping-schema="SampleSchema.xml"] >
<updg:before>
<ElementName [updg:id="value"] .../>
[<ElementName [updg:id="value"] .../> ... ]
</updg:before>
<updg:after>
<ElementName [updg:id="value"] ... />
[<ElementName [updg:id="value"] .../> ...]
</updg:after>
</updg:sync>
</ROOT>
<Frissítés: Előtte>
Az előtte<> blokk elemei azonosítják a meglévő rekordokat az adatbázis tábláiban.
<Frissítés: után>
Az after> blokk elemei< leírják, hogyan néznek ki az előtte> blokkban megadott rekordok< a frissítések alkalmazása után.
A mapping-séma attribútum azonosítja azt a leképezési sémát, amelyet a updategram használ. Ha a updategram megad egy leképezési sémát, akkor az előtti> és utána blokkokban megadott< elem- és attribútumneveknek meg kell egyezniük a séma neveivel.>< A leképezési séma ezeket az elem- vagy attribútumneveket az adatbázis táblájára és oszlopneveire képezi.
Ha egy updategram nem határoz meg sémát, az updategam alapértelmezett leképezést használ. Alapértelmezett leképezésben az updategramban megadott <ElementName> az adatbázis táblájához fordul, míg a gyermekelemek vagy attribútumok az adatbázis oszlopaihoz fordulnak.
Az előtte<> blokk egy eleme csak egy táblázatsorral egyezik az adatbázisban. Ha az elem több táblázatsorhoz egyezik, vagy nem egyezik meg egyik tábsorral sem, a updategram hibát ad vissza, és az egész <szinkronblokkot> töröli.
Egy updategram több <szinkronizálási> blokkot is tartalmazhat. Minden <szinkronblokkot> tranzakcióként kezelnek. Minden <szinkronblokk> több <előtt> és <után> blokkból állhat. Például, ha két meglévő rekordot frissítesz, megadhatsz két <elő> - és <utána> párt, egyet minden frissített rekordhoz.
Az updg:id attribútum használata
Ha több elem van megadva az <előtti> és <utána> blokkokban, használd az updg:id attribútumot a sorok megjelölésére az< előtti> és <utána> blokkokban. A feldolgozási logika ezt az információt használja annak meghatározására, hogy melyik rekord az előtti<> blokkban párosítja az utóblokk> melyik rekordját<.
Az updg:id attribútum nem szükséges (bár ajánlott), ha az alábbiak közül bármelyik létezik:
A megadott leképezési séma elemei a sql:key-fields attribútumot definiálják.
A updategramban egy vagy több konkrét érték van megadva a kulcsmező(k)hez.
Ha bármelyik így van, a updategram a sql:kulcsmezőkben megadott kulcsoszlopokat használja, hogy párosítsa az <előtti> és <utána> blokkok elemeit.
Ha a leképezési séma nem azonosítja a kulcsoszlopokat ( sql:key-fields használatával), vagy ha a updategram egy kulcsoszlop értéket frissít, akkor meg kell adnod az updg:id-t.
Az előtte> és utána blokkokban azonosított rekordoknak< nem kell ugyanabban a sorrendben lenniük.>< Az updg:id attribútum kényszeríti az elemek közötti kapcsolatot, amelyek az <előtti> és <utána> blokkokban vannak megadva.
Ha az előtti> blokkban egy elemet< és az utáni> blokkban csak egy megfelelő elemet< adsz meg, az updg:id használata nem szükséges. Ugyanakkor ajánlott, hogy mindenképpen megadd az updg:id-t , hogy elkerüld a kétértelműséget.
Példák
Mielőtt használnád az updategram példákat, figyeld meg a következőket:
A legtöbb példa alapértelmezett leképezést használ (vagyis az updategramban nincs megadva leképezési séma). A leképezési sémákat használó updategramokra további példákat az Updategramban (SQLXML 4.0) található jegyzetekkel ellátott leképezési séma megadása című témakörben talál.
A legtöbb példa az AdventureWorks mintaadatbázist használja. A rendszer az adatbázis tábláira alkalmazza az összes frissítést. Visszaállíthatod az AdventureWorks adatbázist.
A. Rekord frissítése
A következő updategram frissíti az alkalmazott vezetéknevét Fuller-re az AdventureWorks adatbázis Person.Contact táblájában. A updategram nem határoz meg semmilyen leképezési sémát; Ezért a updategram alapértelmezett leképezést használ.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
<Person.Contact ContactID="1" />
</updg:before>
<updg:after>
<Person.Contact LastName="Abel-Achong" />
</updg:after>
</updg:sync>
</ROOT>
Az előző blokkban leírt <rekord az adatbázis aktuális rekordját képviseli.> A updategram az előző> blokkban megadott összes oszlopértéket< használja az rekord kereséséhez. Ebben az updategramban az <before> blokk csak a ContactID oszlopot adja; ezért a updategram csak az értéket használja a rekord kereséséhez. Ha hozzáadnád a Vezetéknév értéket ehhez a blokkhoz, a updategram mind a ContactID, mind a Vezetéknév értékeket használná a kereséshez.
Ebben a updategramban az <after> block csak a Vezetéknév oszlop értékét adja, mert ez az egyetlen érték, amit módosítanak.
A updategram teszteléséhez
Másold le a fenti updategram sablont, és illesztsd be szövegfájlba. Mentse el a fájlt UpdateLastName.xml.
Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) az updategram végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
B. Több rekord frissítése az updg:id attribútummal
Ebben a példában az updategram két frissítést hajt végre a HumanResources.Shift táblán az AdventureWorks adatbázisban:
Az eredeti nappali műszak nevét, amely reggel 7:00-kor kezdődik, "Napról"-ról "Korai Reggelre" változtatja.
Új műszakot indít "Late Morning" néven, amely 10:00-kor kezdődik.
Az updategramban az updg:id attribútum assosiációkat hoz létre az <előtte> és <után> blokkok elemei között.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
<HumanResources.Shift updg:id="x" Name="Day" />
</updg:before>
<updg:after>
<HumanResources.Shift updg:id="y" Name="Late Morning"
StartTime="1900-01-01 10:00:00.000"
EndTime="1900-01-01 18:00:00.000"
ModifiedDate="2004-06-01 00:00:00.000"/>
<HumanResources.Shift updg:id="x" Name="Early Morning" />
</updg:after>
</updg:sync>
</ROOT>
Figyeld meg, hogyan párosítja az updg:id attribútum az első példányt <a HumanResources.Shift> elemből az <előtti> blokkban a HumanResources.Shift> elem második példányával <az <after> blokkban.
A updategram teszteléséhez
Másold le a fenti updategram sablont, és illesztsd be szövegfájlba. Mentse el a fájlt UpdateMultipleRecords.xml.
Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) az updategram végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
C. Több <előtti> és <utána> blokk megadása
A kétértelműség elkerülése érdekében a B példában írhatod az updategramot több <előtte> és <után> blokk párral együtt. Az előtti> és utána párok meghatározása< egy módja annak, hogy több frissítést megadjunk minimális zavarral.>< Ha minden <előtte> és <utána> blokk legfeljebb egy elemet jelöl meg, nem kell az updg:id attribútumot használni.
Megjegyzés:
A pár kialakításához az <utána> címkének azonnal követnie kell a megfelelő <előtti> címkét.
A következő updategramban az első <előtte> és <után> páros frissíti a nappali műszak nevét. A második pár új shift rekordot helyez be.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
<HumanResources.Shift ShiftID="1" Name="Day" />
</updg:before>
<updg:after>
<HumanResources.Shift Name="Early Morning" />
</updg:after>
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Shift Name="Late Morning"
StartTime="1900-01-01 10:00:00.000"
EndTime="1900-01-01 18:00:00.000"
ModifiedDate="2004-06-01 00:00:00.000"/>
</updg:after>
</updg:sync>
</ROOT>
A updategram teszteléséhez
Másold le a fenti updategram sablont, és illesztsd be szövegfájlba. Mentse el a fájlt UpdateMultipleBeforeAfter.xml.
Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) az updategram végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
D. Több <szinkronblokk> meghatározása
Több <szinkronizálási> blokkot is beállíthatsz egy updategramban. Minden <meghatározott szinkronblokk> független tranzakció.
A következő updategramban az első <szinkronblokk> frissít egy rekordot az Sales.Customer táblában. Az egyszerűség kedvéért a updategram csak a szükséges oszlopértékeket határozza meg; az identitásérték (CustomerID) és a frissített érték (SalesPersonID).
A második <szinkronblokk> két rekordot ad hozzá a Sales.SalesOrderHeader táblához. Ebben a táblázatban a SalesOrderID egy IDENTITY típusú oszlop. Ezért a updategram nem határozza meg a SalesOrderID értékét az egyes <Sales.SalesOrderHeader> elemekben.
Több <szinkronblokk> megadása hasznos, mert ha a második <szinkronblokk> (egy tranzakció) nem ad hozzá rekordokat a Sales.SalesOrderHeader táblához, az első <szinkronblokk> még mindig frissítheti az ügyfél rekordját a Sales.Customer táblában.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
<Sales.Customer CustomerID="1" SalesPersonID="280" />
</updg:before>
<updg:after>
<Sales.Customer CustomerID="1" SalesPersonID="283" />
</updg:after>
</updg:sync>
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Sales.SalesOrderHeader
CustomerID="1"
RevisionNumber="1"
OrderDate="2004-07-01 00:00:00.000"
DueDate="2004-07-13 00:00:00.000"
OnlineOrderFlag="0"
ContactID="378"
BillToAddressID="985"
ShipToAddressID="985"
ShipMethodID="5"
SubTotal="24643.9362"
TaxAmt="1971.5149"
Freight="616.0984"
rowguid="01010101-2222-3333-4444-556677889900"
ModifiedDate="2004-07-08 00:00:00.000" />
<Sales.SalesOrderHeader
CustomerID="1"
RevisionNumber="1"
OrderDate="2004-07-01 00:00:00.000"
DueDate="2004-07-13 00:00:00.000"
OnlineOrderFlag="0"
ContactID="378"
BillToAddressID="985"
ShipToAddressID="985"
ShipMethodID="5"
SubTotal="1000.0000"
TaxAmt="0.0000"
Freight="0.0000"
rowguid="10101010-2222-3333-4444-556677889900"
ModifiedDate="2004-07-09 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
A updategram teszteléséhez
Másold le a fenti updategram sablont, és illesztsd be szövegfájlba. Mentse el a fájlt UpdateMultipleSyncs.xml.
Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) az updategram végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
E. Leképezési séma használata
Ebben a példában az updategram a mapping-schema attribútumot használva határoz meg egy leképezési sémát. (Nincs alapértelmezett leképezés; azaz a leképezési séma biztosítja az elemek és attribútumok szükséges leképezését az updategramban az adatbázis tábláihoz és oszlopaihoz.)
A updategramban megadott elemek és attribútumok a leképezési séma elemeire és attribútumaira utalnak.
Az alábbi XSD leképezési séma Customer>, Order és OD elemeket tartalmaz<, amelyek az adatbázisban található Sales.Customer, Sales.SalesOrderHeader és Sales.SalesOrderDetail táblákhoz igazodnak.<><>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustomerOrder"
parent="Sales.Customer"
parent-key="CustomerID"
child="Sales.SalesOrderHeader"
child-key="CustomerID" />
<sql:relationship name="OrderOD"
parent="Sales.SalesOrderHeader"
parent-key="SalesOrderID"
child="Sales.SalesOrderDetail"
child-key="SalesOrderID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Sales.Customer" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Order"
sql:relation="Sales.SalesOrderHeader"
sql:relationship="CustomerOrder" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OD"
sql:relation="Sales.SalesOrderDetail"
sql:relationship="OrderOD" >
<xsd:complexType>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="ProductID" type="xsd:integer" />
<xsd:attribute name="UnitPrice" type="xsd:decimal" />
<xsd:attribute name="OrderQty" type="xsd:integer" />
<xsd:attribute name="UnitPriceDiscount" type="xsd:decimal" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="OrderDate" type="xsd:date" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Ez a leképezési séma (UpdategramMappingSchema.xml) a következő updategramban van megadva. A updategram egy rendelési részletet ad hozzá a Sales.SalesOrderDetail táblába egy adott rendeléshez. Az updategram tartalmaz beágyazott elemeket: egy <OD> elemet, amely egy <Order> elemen belül van beágyazva. A két elem közötti elsődleges kulcs/idegen kulcs kapcsolatot a leképezési sémában határozzák meg.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="UpdategramMappingSchema.xml" >
<updg:before>
<Order SalesOrderID="43659" />
</updg:before>
<updg:after>
<Order SalesOrderID="43659" >
<OD ProductID="776" UnitPrice="2329.0000"
OrderQty="2" UnitPriceDiscount="0.0" />
</Order>
</updg:after>
</updg:sync>
</ROOT>
A updategram teszteléséhez
Másold le a fenti leképezési sémát, és illeszted be egy szövegfájlba. Mentse el a fájlt UpdategramMappingSchema.xml.
Másold le a fenti updategram sablont, és illesztsd be szövegfájlba. A fájlt UpdateWithMappingSchema.xml-ként mented ugyanabba a mappába, ahol a leképezési sémát mentették (UpdategramMappingSchema.xml).
Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) az updategram végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
A leképezési sémákat használó updategramokra további példákat az Updategramban (SQLXML 4.0) található jegyzetekkel ellátott leképezési séma megadása című témakörben talál.
F. IDREFS attribútumokkal rendelkező leképezési séma használata
Ez a példa szemlélteti, hogyan használják az updategramok az IDREFS attribútumokat a leképezési sémában több táblában is frissíteni. Ebben a példában tegyük fel, hogy az adatbázis a következő táblázatokból áll:
Diák (StudentID, Vezetéknév)
Tárgy (CourseID, CourseName)
Regisztráció (StudentID, CourseID)
Mivel egy hallgató sok kurzusra beiratkozhat, és egy kurzusban sok diák is lehet be, a harmadik táblázat, a Regisztrációs Táblázat kötelező ezt az M:N kapcsolatot képviselni.
A következő XSD leképezési séma XML nézetet nyújt a táblázatokra a Hallgató>, Tanfolyam és Regisztráció elemek használatával<.<>>< Az IDREFS attribútumok a leképezési sémában meghatározzák az elemek közötti kapcsolatot. A StudentIDList attribútum a <Kurzus> elemen egy IDREFS típusú attribútum, amely a Hallgatói Azonosító oszlopra utal a Regisztrációs táblázatban. Hasonlóképpen, az EnrolledIn attribútum a <Student> elemen egy IDREFS típusú attribútum, amely a Enrollment tábla CourseID oszlopára utal.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="StudentEnrollment"
parent="Student"
parent-key="StudentID"
child="Enrollment"
child-key="StudentID" />
<sql:relationship name="CourseEnrollment"
parent="Course"
parent-key="CourseID"
child="Enrollment"
child-key="CourseID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Course" sql:relation="Course"
sql:key-fields="CourseID" >
<xsd:complexType>
<xsd:attribute name="CourseID" type="xsd:string" />
<xsd:attribute name="CourseName" type="xsd:string" />
<xsd:attribute name="StudentIDList" sql:relation="Enrollment"
sql:field="StudentID"
sql:relationship="CourseEnrollment"
type="xsd:IDREFS" />
</xsd:complexType>
</xsd:element>
<xsd:element name="Student" sql:relation="Student" >
<xsd:complexType>
<xsd:attribute name="StudentID" type="xsd:string" />
<xsd:attribute name="LastName" type="xsd:string" />
<xsd:attribute name="EnrolledIn" sql:relation="Enrollment"
sql:field="CourseID"
sql:relationship="StudentEnrollment"
type="xsd:IDREFS" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Amikor ezt a sémát megadod egy updategramban, és beilleszted egy rekordot a Kurzus táblába, az updategram új kurzusrekordot helyez be a Kurzus táblába. Ha egy vagy több új diákazonosítót jelölsz meg a StudentIDList attribútumhoz, a updategram minden új diák számára egy bejegyzést is behelyez a Regisztrációs táblázatba. A updategram biztosítja, hogy ne kerüljenek duplikátumok a Regisztrációs táblába.
A updategram teszteléséhez
Létrehozzuk ezeket a táblázatokat az adatbázisban, amelyek a virtuális gyökérben vannak megadva:
CREATE TABLE Student(StudentID varchar(10) primary key, LastName varchar(25)) CREATE TABLE Course(CourseID varchar(10) primary key, CourseName varchar(25)) CREATE TABLE Enrollment(StudentID varchar(10) references Student(StudentID), CourseID varchar(10) references Course(CourseID))Add hozzá ezt a mintaadatot:
INSERT INTO Student VALUES ('S1','Davoli') INSERT INTO Student VALUES ('S2','Fuller') INSERT INTO Course VALUES ('CS101', 'C Programming') INSERT INTO Course VALUES ('CS102', 'Understanding XML') INSERT INTO Enrollment VALUES ('S1', 'CS101') INSERT INTO Enrollment VALUES ('S1', 'CS102')Másold le a fenti leképezési sémát, és illeszted be egy szövegfájlba. Mentse el a fájlt SampleSchema.xml.
Mentse el az updategramot (SampleUpdategram) ugyanabba a mappába, ahol az előző lépésben a térképi sémát mentették. (Ez a updategram kiejti a CS102 kurzusból a StudentID="1" diákot.)
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync mapping-schema="SampleSchema.xml" > <updg:before> <Student updg:id="x" StudentID="S1" LastName="Davolio" EnrolledIn="CS101 CS102" /> </updg:before> <updg:after > <Student updg:id="x" StudentID="S1" LastName="Davolio" EnrolledIn="CS101" /> </updg:after> </updg:sync> </ROOT>Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) az updategram végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
Mentse el és hajtsa végre a következő updategramot az előző lépések szerint. A updategram visszaadja a StudentID="1" jelű hallgatót a CS102 kurzusba, egy bejegyzést hozzáadva a Regisztrációs táblázatba.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync mapping-schema="SampleSchema.xml" > <updg:before> <Student updg:id="x" StudentID="S1" LastName="Davolio" EnrolledIn="CS101" /> </updg:before> <updg:after > <Student updg:id="x" StudentID="S1" LastName="Davolio" EnrolledIn="CS101 CS102" /> </updg:after> </updg:sync> </ROOT>Mentsd el és hajtsd végre ezt a következő updategramot az előző lépések leírása szerint. Ez a frissítés három új diákot beépít és beiratkozik a CS101 kurzusra. Ismét, az IDREFS kapcsolat bejegyzéseket helyez be a Regisztrációs táblába.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync mapping-schema="SampleSchema.xml" > <updg:before> <Course updg:id="y" CourseID="CS101" CourseName="C Programming" /> </updg:before> <updg:after > <Student updg:id="x1" StudentID="S3" LastName="Leverling" /> <Student updg:id="x2" StudentID="S4" LastName="Pecock" /> <Student updg:id="x3" StudentID="S5" LastName="Buchanan" /> <Course updg:id="y" CourseID="CS101" CourseName="C Programming" StudentIDList="S3 S4 S5" /> </updg:after> </updg:sync> </ROOT>
Ez a megfelelő XDR-séma:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Enrollment" sql:relation="Enrollment" sql:key-fields="StudentID CourseID">
<AttributeType name="StudentID" dt:type="id" />
<AttributeType name="CourseID" dt:type="id" />
<attribute type="StudentID" />
<attribute type="CourseID" />
</ElementType>
<ElementType name="Course" sql:relation="Course" sql:key-fields="CourseID">
<AttributeType name="CourseID" dt:type="id" />
<AttributeType name="CourseName" />
<attribute type="CourseID" />
<attribute type="CourseName" />
<AttributeType name="StudentIDList" dt:type="idrefs" />
<attribute type="StudentIDList" sql:relation="Enrollment" sql:field="StudentID" >
<sql:relationship
key-relation="Course"
key="CourseID"
foreign-relation="Enrollment"
foreign-key="CourseID" />
</attribute>
</ElementType>
<ElementType name="Student" sql:relation="Student">
<AttributeType name="StudentID" dt:type="id" />
<AttributeType name="LastName" />
<attribute type="StudentID" />
<attribute type="LastName" />
<AttributeType name="EnrolledIn" dt:type="idrefs" />
<attribute type="EnrolledIn" sql:relation="Enrollment" sql:field="CourseID" >
<sql:relationship
key-relation="Student"
key="StudentID"
foreign-relation="Enrollment"
foreign-key="StudentID" />
</attribute>
<element type="Enrollment" sql:relation="Enrollment" >
<sql:relationship key-relation="Student"
key="StudentID"
foreign-relation="Enrollment"
foreign-key="StudentID" />
</element>
</ElementType>
</Schema>
A leképezési sémákat használó updategramokra további példákat az Updategramban (SQLXML 4.0) található jegyzetekkel ellátott leképezési séma megadása című témakörben talál.