Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
En XML Path Language (XPath)-fråga kan specificeras som en del av en URL eller inom en mall. Mappningsschemat bestämmer strukturen för detta resulterande fragment, och värdena hämtas från databasen. Denna process liknar konceptuellt att skapa vyer med CREATE VIEW-satsen och skriva SQL-frågor mot dem.
Anmärkning
För att förstå XPath-frågor i SQLXML 4.0 måste du vara bekant med XML-vyer och relaterade koncept som mallar och mappningsscheman. För mer information, se Introduktion till annoterade XSD-scheman (SQLXML 4.0) och XPath-standarden definierad av World Wide Web Consortium (W3C).
Ett XML-dokument består av noder såsom en elementnod, attributnod, textnod och så vidare. Till exempel, betrakta detta 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>
I detta dokument <är Customer> en elementnod, cid är en attributnod och "Important" är en textnod.
XPath är ett grafnavigationsspråk som används för att välja en uppsättning noder från ett XML-dokument. Varje XPath-operatör väljer en nodmängd baserat på en nodmängd vald av en tidigare XPath-operatör. Till exempel, givet en uppsättning <kundnoder>, kan XPath välja alla <Order-noder> med datumattributsvärdet "14/7/1999". Den resulterande noduppsättningen innehåller alla order med orderdatum 14/7/1999.
XPath-språket definieras av World Wide Web Consortium (W3C) som ett standardiserat navigationsspråk. SQLXML 4.0 implementerar en delmängd av W3C XPath-specifikationen, som finns vid http://www.w3.org/TR/1999/PR-xpath-19991008.html.
Följande är viktiga skillnader mellan W3C XPath-implementeringen och SQLXML 4.0-implementeringen.
Rotfrågor
SQLXML 4.0 stöder inte rotfrågan (/). Varje XPath-fråga måste börja på en toppnivå <ElementType> i schemat.
Rapporteringsfel
W3C XPath-specifikationen definierar inga felvillkor. XPath-frågor som inte kan välja några noder returnerar en tom noduppsättning. I SQLXML 4.0 kan en fråga returnera många typer av felmeddelanden.
Dokumentordning
I SQLXML 4.0 bestäms inte alltid dokumentordningen. Därför implementeras inte numeriska predikat och axlar som använder dokumentordning (såsom följande).
Bristen på dokumentordning innebär också att strängvärdet för en nod endast kan utvärderas när den noden mappas till en enda kolumn i en enda rad. Ett element med underelement eller en IDREFS- eller NMTOKENS-nod kan inte konverteras till sträng.
Anmärkning
I vissa fall kan nyckelfältsannotationen eller nycklarna från relationsannotationen resultera i en deterministisk dokumentordning. Detta är dock inte den primära användningen av dessa anteckningar. För mer information, se Identifiera nyckelkolumner med sql:key-fields (SQLXML 4.0) och Specificera relationer med sql:relation (SQLXML 4.0).
Datatyper
SQLXML 4.0 har begränsningar i implementeringen av XPath-strängen, numret och booleska datatyperna. För mer information, se XPath Data Types (SQLXML 4.0).
Korsproduktfrågor
SQLXML 4.0 stöder inte cross-product XPath-frågor, såsom
Customers[Order/@OrderDate=Order/@ShipDate]. Denna fråga väljer alla kunder med en order där orderdatumet är lika med leveransdatumet för en order.SQLXML 4.0 stöder dock frågor som
Customer[Order[@OrderDate=@ShippedDate]], som väljer kunder med vilken order som helst där orderdatumet är lika med dess leveransdatum.Felhantering och säkerhet
Beroende på vilket schema och XPath-frågeuttryck som används kan Transact-SQL fel exponeras för användare under vissa förhållanden.
Tabellerna i följande avsnitt ger detaljer om hur implementeringen av XPath-frågor i SQLXML 4.0 skiljer sig från W3C-specifikationen inom dessa områden.
Stödd funktionalitet
Följande tabell visar funktionerna i XPath-språket som är implementerade i SQLXML 4.0.
| Egenskap | Objekt | Länk till exempelfrågor |
|---|---|---|
| Yxor | attribut,barn, förälder och självyxor | Specificering av axlar i XPath-frågor (SQLXML 4.0) |
| Boolesk-värderade predikat inklusive successiva och nästlade predikat | Specificering av aritmetiska operatorer i XPath-frågor (SQLXML 4.0) | |
| Alla relationella operatorer | =, !=, <, <=, >, >= | Specificering av relationsoperatorer i XPath-frågor (SQLXML 4.0) |
| Aritmetiska operatorer | +, -, *, division | Specificering av aritmetiska operatorer i XPath-frågor (SQLXML 4.0) |
| Explicita konverteringsfunktioner | number(), string(), boolesk() | Specificering av explicita konverteringsfunktioner i XPath-frågor (SQLXML 4.0) |
| Booleska operatorer | OCH, ELLER | Specificering av booleska operatorer i XPath-frågor (SQLXML 4.0) |
| Booleska funktioner | sant(), falskt(), inte() | Specificering av booleska funktioner i XPath-frågor (SQLXML 4.0) |
| XPath-variabler | Specificering av XPath-variabler i XPath-frågor (SQLXML 4.0) |
Funktioner som inte stöds
Följande tabell visar funktionerna i XPath-språket som inte är implementerade i SQLXML 4.0.
| Egenskap | Objekt |
|---|---|
| Yxor | förfader, förfader-eller-själv, ättling, ättling-eller-själv (//),följande, följande-syskon, namnrymd, föregående, föregående-syskon |
| Numeriskt värda predikat | |
| Aritmetiska operatorer | mod |
| Nodfunktioner | förfader, förfader-eller-själv, ättling, ättling-eller-själv (//),följande, följande-syskon, namnrymd, föregående, föregående-syskon |
| Strängfunktioner | sträng(), konkat(), börjar-med(), innehåller(), delsträng-före(), delsträng-efter(), delsträng(), stränglängd(), normalisera(), translate() |
| Booleska funktioner | lang() |
| Numeriska funktioner | summa(), golv(), tak(), rund() |
| Fackföreningsoperatör | | |
När du anger XPath-frågor i en mall, notera följande beteende:
- XPath kan innehålla tecken som < eller & som har speciella betydelser i XML (och mallen är ett XML-dokument). Du måste escape dessa tecken med XML &-kodning, eller ange XPath i URL:en.