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 egy XPath lekérdezést egy XSD séma alapján jelölnek, a legtöbb esetben kulcsinformációra van szükség az eredmény megfelelő beágyazásához. A sql:kulcsmezők annotációjának meghatározása biztosítja, hogy a megfelelő hierarchia létrejön.
Megjegyzés:
A megfelelő féskelés érdekében ajánlott megadni sql:key-fields elemeket olyan elemekhez, amelyek táblázatokhoz fordulnak. A létrehozott XML érzékeny az alapul szolgáló eredményhalmaz rendezésére. Ha a sql:kulcsmezők nincsenek megadva, előfordulhat, hogy a generált XML nem lesz megfelelően kialakítva.
A sql:key-fields értéke azonosítja azokat az oszlopokat(okat), amelyek egyediségesen azonosítják a reláció sorait. Ha egy sor egyediségéhez több oszlop szükséges, az oszlopértékek szóközek szerint vannak kijelölve.
A sql:key-fields annotációt akkor kell használni, ha egy elem tartalmaz egy< sql:kapcsolatot>, amely az elem és egy gyermekelem között van definiálva, de nem adja meg a tábla elsődleges kulcsát, amely a szülőelemben van megadva.
Példák
A következő példák alapján működő minták létrehozásához bizonyos követelményeknek kell megfelelned. További információért lásd: Az SQLXML futtatási követelmények példái.
A. Megfelelő fészkelés létrehozása, amikor <a sql:relationship> nem ad elegendő információt
Ez a példa megmutatja, hol kell megadni a sql:kulcsmezőket .
Vegyük figyelembe a következő sémát. A séma hierarchiát határoz meg a <Order> és <Customer> elemek között, amelyben a <Order> elem az anya, az <Ügyfél> elem pedig egy gyermek.
A< sql:relationship> címkét használják a szülő-gyermek kapcsolat meghatározására. A Sales.SalesOrderHeader táblában azonosítja a CustomerID-t az Sales.Customer tábla CustomerID gyermekkulcsaként, amely a Sales.Customer táblában található CustomerID gyermekkulcsra utal. A sql:relationship> által megadott< információk nem elegendőek ahhoz, hogy egyedileg azonosítsák a sorokat az anyatáblában (Sales.SalesOrderHeader). Ezért a sql:kulcsmezők annotációja nélkül a generált hierarchia pontatlan.
A sql:kulcsmezőkOrder<> beállításon van megadva, az annotáció egyedileg azonosítja a sorokat az övüleben (Sales.SalesOrderHeader tábla), és a gyermekelemei a szülő alatt jelennek meg.
Ez a séma:
<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="OrdCust"
parent="Sales.SalesOrderHeader"
parent-key="CustomerID"
child="Sales.Customer"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:key-fields="SalesOrderID">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customer" sql:relation="Sales.Customer"
sql:relationship="OrdCust" >
<xsd:complexType>
<xsd:attribute name="CustID" sql:field="CustomerID" />
<xsd:attribute name="SoldBy" sql:field="SalesPersonID" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name= "CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Hogy egy működő mintát készítsünk ebből a sémából
Másold le a fenti sémakódot, és illesztsd be egy szövegfájlba. Mentse el a fájlt KeyFields1.xml.
Másold le a következő sablont, és illesztsd be egy szövegfájlba. Mentsd a fájlt KeyFields1T.xml-ként ugyanabba a könyvtárba, ahol KeyFields1.xmlmentetted. Az XPath lekérdezés a sablonban minden <Rendelés> elemet visszaad, amelynek CustomerID-je kevesebb, mint 3.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFields1.xml"> /Order[@CustomerID < 3] </sql:xpath-query> </ROOT>A leképezési sémához (KeyFields1.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:
mapping-schema="C:\MyDir\KeyFields1.xml"Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.
További információért lásd: Using ADO to execute SQLXML Queries.
Ez a részleges eredményhalmaz:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="43860" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
<Order SalesOrderID="44501" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
<Order SalesOrderID="45283" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
.....
</ROOT>
B. A sql:key-mezők megadása, hogy az eredmény megfelelő féskelést hozzon létre
A következő sémában nincs hierarchia sql<:relationship> használatával. A séma továbbra is megköveteli a sql:key-fields annotáció megadását, hogy egyedileg azonosítsuk az alkalmazottakat a HumanResources.Employee táblában.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="HumanResources.Employee" sql:key-fields="EmployeeID" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Title">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="EmployeeID" type="xsd:integer" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Hogy egy működő mintát készítsünk ebből a sémából
Másold le a fenti sémakódot, és illesztsd be egy szövegfájlba. Mentse el a fájlt KeyFields2.xml.
Másold le a következő sablont, és illesztsd be egy szövegfájlba. Mentsd a fájlt KeyFields2T.xml-ként ugyanabba a könyvtárba, ahol KeyFields2.xmlmentetted. Az XPath lekérdezés a sablonban az összes <HumanResources.Employee> elemet visszaadja:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFields2.xml"> /HumanResources.Employee </sql:xpath-query> </ROOT>A leképezési sémához (KeyFields2.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:
mapping-schema="C:\MyDir\KeyFields2.xml"Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.
További információért lásd: Using ADO to execute SQLXML Queries.
Ez az eredmény:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<HumanResources.Employee>
<Title EmployeeID="1">Production Technician - WC60</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="2">Marketing Assistant</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="3">Engineering Manager</Title>
</HumanResources.Employee>
...
</ROOT>