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
Dotaz XML Path Language (XPath) může být zadán jako součást URL nebo v rámci šablony. Mapovací schéma určuje strukturu tohoto výsledného fragmentu a hodnoty jsou získávány z databáze. Tento proces je koncepčně podobný vytváření pohledů pomocí příkazu CREATE VIEW a psaní SQL dotazů proti nim.
Poznámka:
Abyste porozuměli dotazům XPath v SQLXML 4.0, musíte být obeznámeni s XML pohledy a souvisejícími koncepty, jako jsou šablony a mapovací schémata. Pro více informací viz Úvod do anotovaných XSD schémat (SQLXML 4.0) a standard XPath definovaný World Wide Web Consortium (W3C).
XML dokument se skládá z uzlů jako je uzel prvku, uzel atributů, textový uzel a podobně. Například zvažme tento XML dokument:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
V tomto dokumentu <je Customer> uzel prvku, cid je uzel atributu a "Důležité" je textový uzel.
XPath je jazyk pro navigaci v grafech používaný k výběru sady uzlů z XML dokumentu. Každý operátor XPath vybírá sadu uzlů na základě sady uzlů vybraných předchozím operátorem XPath. Například při daném souboru <uzlů zákazníka> může XPath vybrat všechny <uzly objednávky> s hodnotou atributu "7/14/1999". Výsledná sada uzlů obsahuje všechny objednávky s datem objednávky 14. 7. 1999.
Jazyk XPath je definován World Wide Web Consortium (W3C) jako standardní navigační jazyk. SQLXML 4.0 implementuje podmnožinu specifikace W3C XPath, která se nachází na .http://www.w3.org/TR/1999/PR-xpath-19991008.html
Následující jsou klíčové rozdíly mezi implementací W3C XPath a implementací SQLXML 4.0.
Kořenové dotazy
SQLXML 4.0 nepodporuje root dotaz (/). Každý dotaz XPath musí začínat na nejvyšší úrovni <ElementType> ve schématu.
Chyby v hlášení
Specifikace W3C XPath nedefinuje žádné chybové podmínky. XPath dotazy, které nevyberou žádný uzel, vracejí prázdnou sadu uzlů. V SQLXML 4.0 může dotaz vracet mnoho typů chybových hlášení.
Pořadí dokumentů
V SQLXML 4.0 není pořadí dokumentů vždy určeno. Proto nejsou implementovány numerické predikáty a osy, které používají pořadí dokumentů (například following).
Absence pořadí dokumentů také znamená, že hodnota řetězce uzlu může být vyhodnocena pouze tehdy, když se tento uzel mapuje na jeden sloupec v jednom řádku. Prvek s podprvky nebo uzel IDREFS či NMTOKENS nelze převést na řetězce.
Poznámka:
V některých případech může anotace klíčových polí nebo klíče z anotace vztahů vést k deterministickému pořadí dokumentů. Toto však není primární využití těchto anotací. Pro více informací viz Identifikace sloupců klíčů pomocí sql:key-fields (SQLXML 4.0) a Specifikování vztahů pomocí sql:relation (SQLXML 4.0).
Datové typy
SQLXML 4.0 má omezení při implementaci řetězců ,čísel a booleových datových typů XPath. Pro více informací viz XPath Data Types (SQLXML 4.0).
Dotazy mezi součiny
SQLXML 4.0 nepodporuje křížové XPath dotazy, jako je
Customers[Order/@OrderDate=Order/@ShipDate]. Tento dotaz vybírá všechny zákazníky s jakoukoli objednávkou, u které se datum objednávky rovná datu odeslání jakékoli objednávky.SQLXML 4.0 však podporuje dotazy jako
Customer[Order[@OrderDate=@ShippedDate]], které vybírá zákazníky s jakoukoli objednávkou, u které se datum objednávky rovná datu odeslání.Řešení chyb a bezpečnost
V závislosti na použitém schématu a dotazovém výrazu XPath mohou být Transact-SQL chyby uživatelům vystaveny za určitých podmínek.
Tabulky v následujících sekcích poskytují podrobnosti o tom, jak se implementace dotazů XPath v SQLXML 4.0 liší od specifikace W3C v těchto oblastech.
Podporovaná funkcionalita
Následující tabulka ukazuje funkce jazyka XPath, které jsou implementovány v SQLXML 4.0.
| Vlastnost | Položka | Odkaz na ukázkové dotazy |
|---|---|---|
| Sekery | atribut, dítě, rodič a osa já | Specifikace os v XPath dotazech (SQLXML 4.0) |
| Booleovsky hodnotené predikáty včetně po sobě jdoucích a vnořených predikátů | Specifikace aritmetických operátorů v XPath dotazech (SQLXML 4.0) | |
| Všechny relační operátory | =, !=, <, <=, >= > | Specifikace relačních operátorů v XPath dotazech (SQLXML 4.0) |
| Aritmetické operátory | +, -, *, div | Specifikace aritmetických operátorů v XPath dotazech (SQLXML 4.0) |
| Explicitní konverzní funkce | number(), string(), Boolean() | Specifikace explicitních konverzních funkcí v XPath dotazech (SQLXML 4.0) |
| Logické operátory | A, NEBO | Specifikace Booleových operátorů v XPath dotazech (SQLXML 4.0) |
| Booleovské funkce | true(), false(), not() | Specifikace booleovských funkcí v XPath dotazech (SQLXML 4.0) |
| XPathové proměnné | Specifikace XPath proměnných v XPath dotazech (SQLXML 4.0) |
Nepodporované funkce
Následující tabulka ukazuje vlastnosti jazyka XPath, které nejsou implementovány v SQLXML 4.0.
| Vlastnost | Položka |
|---|---|
| Sekery | předek, předek-nebo-já, potomek, potomek-nebo-já (//), následující, následující sourozenec, jmenný prostor, předcházející, předcházející-sourozenec |
| Číselně hodnotové predikáty | |
| Aritmetické operátory | mod |
| Funkce uzlů | předek, předek-nebo-já, potomek, potomek-nebo-já (//), následující, následující sourozenec, jmenný prostor, předcházející, předcházející-sourozenec |
| Řetězcové funkce | string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate() |
| Booleovské funkce | lang() |
| Numerické funkce | sum(), floor(), ceiling(), round() |
| Odborový provozovatel | | |
Když v šabloně specifikujete dotazy XPath, všimněte si následujícího chování:
- XPath může obsahovat znaky jako < nebo &, které mají speciální významy v XML (a šablona je XML dokument). Musíte tyto znaky uniknout pomocí XML a kódování, nebo zadat XPath v URL.