Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Wanneer een XSD-schema wordt gebruikt om een XML-weergave van de relationele database te bieden, moeten de elementen en attributen van het schema worden gekoppeld aan tabellen en kolommen van de database. De rijen in de databasetabel/weergave worden gekoppeld aan elementen in het XML-document. De kolomwaarden in de database worden gekoppeld aan attributen of elementen.
Wanneer XPath-queries worden gespecificeerd tegen het geannoteerde XSD-schema, worden de gegevens voor de elementen en attributen in het schema opgehaald uit de tabellen en kolommen waaraan ze worden gekoppeld. Om één enkele waarde uit de database te verkrijgen, moet de mapping die in het XSD-schema is gespecificeerd zowel relationele als veldspecificatie hebben. Als de naam van een element/attribuut niet dezelfde naam is als de tabel/weergave of kolomnaam waaraan het wordt gekoppeld, worden de sql:relation- en sql:field-annotaties gebruikt om de mapping te specificeren tussen een element of attribuut in een XML-document en de tabel (view) of kolom in een database.
sql-relatie
De sql:relation-annotatie wordt toegevoegd om een XML-knoop in het XSD-schema aan een databasetabel toe te voegen. De naam van een tabel (view) wordt gespecificeerd als de waarde van de sql:relation-annotatie .
Wanneer sql:relation wordt gespecificeerd op een element, geldt de scope van deze annotatie voor alle attributen en kindelementen die worden beschreven in de complexe typedefinitie van dat element, waardoor een snelkoppeling wordt geboden bij het schrijven van annotaties.
De sql:relation-annotatie is ook nuttig wanneer identifiers die geldig zijn in Microsoft SQL Server niet geldig zijn in XML. Bijvoorbeeld, "Order Details" is een geldige tabelnaam in SQL Server, maar niet in XML. In zulke gevallen kan de sql:relation-annotatie worden gebruikt om de mapping te specificeren, bijvoorbeeld:
<xsd:element name="OD" sql:relation="[Order Details]">
sql-veld
De sql-veldannotatie koppelt een element of attribuut aan een databasekolom. De sql:field-annotatie wordt toegevoegd om een XML-knoop in het schema aan een databasekolom toe te wijzen. Je kunt sql:field niet specificeren op een leeg content-element.
Voorbeelden
Om werkmonsters te maken met de volgende voorbeelden, moet je aan bepaalde eisen voldoen. Voor meer informatie, zie Vereisten voor het uitvoeren van SQLXML-voorbeelden.
Eén. Het specificeren van de sql:relation- en sql:field-annotaties
In dit voorbeeld bestaat het XSD-schema uit een <Contact-element> van complex type met <FName-> en <LName-kindelementen> en het ContactID-attribuut .
De sql:relation-annotatie koppelt het <Contact-element> aan de Person.Contact-tabel in de AdventureWorks-database. De sql:field-annotatie koppelt het <FName-element> aan de FirstName-kolom en het <LName-element> aan de LastName-kolom.
Er is geen annotatie gespecificeerd voor het ContactID-attribuut . Dit resulteert in een standaardmapping van het attribuut aan de kolom met dezelfde naam.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Om een voorbeeld van een XPath-query te testen tegen het schema
Kopieer de bovenstaande schemacode en plak deze in een tekstbestand. Sla het bestand op als MySchema-annotated.xml.
Kopieer het volgende sjabloon hieronder en plak het in een tekstbestand. Sla het bestand op als MySchema-annotatedT.xml in dezelfde map waar je MySchema-annotated.xmlhebt opgeslagen.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>Het directorypad dat voor het mappingschema (MySchema-annotated.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.
Voor meer informatie, zie Gebruik ADO om SQLXML-queries uit te voeren.
Dit is de gedeeltelijke resultatenset:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>