Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
Můžete specifikovat dotazy proti anotovanému schématu pro získání dat z databáze tím, že zadáte dotazy XPath v šabloně proti schématu XSD.
Prvek <sql:xpath-query> vám umožňuje zadat dotaz XPath proti XML pohledu definovanému anotovaným schématem. Anotované schéma, proti kterému má být dotaz XPath vykonáno, je identifikováno pomocí atributu mapping-schema elementu <sql:xpath-query> .
Šablony jsou platné XML dokumenty, které obsahují jeden nebo více dotazů. Dotazy FOR XML a XPath vracejí fragment dokumentu. Šablony fungují jako kontejnery pro fragmenty dokumentů; šablony tak umožňují specifikovat jeden prvek nejvyšší úrovně.
Příklady v tomto tématu používají šablony k určení dotazu XPath proti anotovanému schématu za účelem získání dat z databáze.
Například uvažujme toto anotované schéma:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact" >
<xsd:complexType>
<xsd:attribute name="ContactID" type="xsd:string" />
<xsd:attribute name="FirstName" type="xsd:string" />
<xsd:attribute name="LastName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Pro ilustraci je toto schéma XSD uloženo v souboru s názvem Schema2.xml. Poté můžete provést dotaz XPath proti anotovanému schématu specifikovanému v následujícím souboru šablony (Schema2T.xml):
<sql:xpath-query
xmlns:sql="urn:schemas-microsoft-com:xmlsql"
>
Person.Contact[@ContactID="1"]
</sql:xpath-query>
Poté můžete vytvořit a použít SQLXML 4.0 Test Script (Sqlxml4test.vbs) k vykonání dotazu jako součásti šablonového souboru. Pro více informací viz Annotated XDR Schemas (zastaralé v SQLXML 4.0).
Použití schémat inline mapování
Anotované schéma lze zahrnout přímo do šablony a poté lze v šabloně zadat dotaz XPath proti inline schématu. Šablona může být také updategram.
Šablona může obsahovat více inline schémat. Pro použití inline schématu zahrnutého v šabloně zadejte atribut id s unikátní hodnotou na prvku <xsd:schema> a poté použijte #idvalue k odkazu na inline schéma. Atribut id se chová identicky s sql:id ({urn:schemas-microsoft-com:xml-sql}id) používaným v XDR schématech.
Například následující šablona specifikuje dvě schémata s inline-anotacemi:
<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
id='InLineSchema1' sql:is-mapping-schema='1'>
<xsd:element name='Employees' ms:relation='HumanResources.Employee'>
<xsd:complexType>
<xsd:attribute name='LoginID'
type='xsd:string'/>
<xsd:attribute name='Title'
type='xsd:string'/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
id='InLineSchema2' sql:is-mapping-schema='1'>
<xsd:element name='Contacts' ms:relation='Person.Contact'>
<xsd:complexType>
<xsd:attribute name='ContactID'
type='xsd:string' />
<xsd:attribute name='FirstName'
type='xsd:string' />
<xsd:attribute name='LastName'
type='xsd:string' />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'
mapping-schema='#InLineSchema1'>
/Employees[@LoginID='adventure-works\guy1']
</sql:xpath-query>
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'
mapping-schema='#InLineSchema2'>
/Contacts[@ContactID='1']
</sql:xpath-query>
</ROOT>
Šablona také specifikuje dva dotazy XPath. Každý z <prvků dotazu> xpath jednoznačně identifikuje mapovací schéma tím, že specifikuje atribut mapping-schema.
Když v šabloně specifikujete inline schéma, musí být na prvku <xsd:schema> specifikována také anotace sql:is-mapping-schema. Schéma sql:is-mapping-nabývá Booleovské hodnoty (0=nepravda, 1=pravda). Inline schéma s sql:is-mapping-schema="1" je považováno za inline anotované schéma a není vráceno v XML dokumentu.
Anotace sql:is-mapping-schema patří do jmenného prostoru šablon urn:schemas-microsoft-com:xml-sql.
Pro otestování tohoto příkladu uložte šablonu (InlineSchemaTemplate.xml) do lokálního adresáře a poté vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání šablony. Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Kromě zadání atributu mapping-schema na prvku <sql:xpath-query> v šabloně (když je dotaz XPath) nebo na <prvku updg:sync> v updategramu můžete udělat následující:
Specifikujte atribut mapping-schema na ROOT> prvku< (globální deklarace) v šabloně. Toto mapovací schéma se pak stává výchozím schématem, které budou používat všechny uzly XPath a updategram, které nemají explicitní anotaci mapovacího schématu .
Specifikujte atribut mapovacího schématu pomocí objektu ADO Command .
Atribut mapping-scheme, který je specifikován v <xpath-query> nebo <updg:sync> , má nejvyšší prioritu; objekt ADO Command má nejnižší prioritu.
Všimněte si, že pokud zadáte dotaz XPath v šabloně a nespecifikujete mapovací schéma, proti kterému se dotaz XPath vykonává, dotaz XPath je považován za dotaz typu dbobject . Například zvažte tuto šablonu:
<sql:xpath-query
xmlns:sql="urn:schemas-microsoft-com:xmlsql">
Production.ProductPhoto[@ProductPhotoID='100']/@LargePhoto
</sql:xpath-query>
Šablona specifikuje dotaz XPath, ale nespecifikuje mapovací schéma. Tento dotaz je proto považován za dotaz typu dbobject , kde Production.ProductPhoto je název tabulky a @ProductPhotoID='100' je predikát, který najde produktovou fotografii s ID hodnotou 100. @LargePhoto je sloupec, ze kterého se hodnota získává.