Sdílet prostřednictvím


Úvod do používání XPath dotazů (SQLXML 4.0)

platí pro:SQL Serverazure 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.

Viz také

Použití XPath dotazů v SQLXML 4.0