Aracılığıyla paylaş


XPath Sorgularının Kullanımına Giriş (SQLXML 4.0)

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Bir XML Yol Dili (XPath) sorgusu, bir URL'nin parçası olarak veya bir şablon içinde belirtilebilir. Eşleme şeması, ortaya çıkan bu parçanın yapısını belirler ve değerler veritabanından alınır. Bu süreç, CREATE VIEW ifadesini kullanarak görünüm oluşturmak ve onlara karşı SQL sorguları yazmak gibi kavramsal olarak benzer.

Uyarı

SQLXML 4.0'da XPath sorgularını anlamak için XML görünümleri ve şablonlar ile eşleme şeması gibi ilgili kavramlara aşina olmalısınız. Daha fazla bilgi için, Açıklamalı XSD Şemalarına Giriş (SQLXML 4.0) ve Dünya Çapında Web Konsorsiyumu (W3C) tarafından tanımlanan XPath standardına bakınız.

Bir XML belgesi, eleman düğümü, öznitelik düğümü, metin düğümü gibi düğümlerden oluşur. Örneğin, şu XML belgesini ele alalım:

<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>  

Bu belgede, <Customer> bir element düğümüdür, cid bir nitelik düğümüdür ve "Important" bir metin düğümüdür.

XPath, bir XML belgesinden bir düğüm kümesini seçmek için kullanılan bir grafik navigasyon dilidir. Her XPath operatörü, önceki bir XPath operatörü tarafından seçilen bir düğüm setine dayanarak bir düğüm kümesi seçer. Örneğin, bir Müşteri> düğümü kümesi< verildiğinde, XPath "7/14/1999" tarih özellik değerine sahip tüm <Sipariş> düğümlerini seçebilir. Ortaya çıkan düğüm kümesi, 14/7/1999 tarihli tüm siparişleri içerir.

XPath dili, Dünya Çapında Web Konsorsiyumu (W3C) tarafından standart bir navigasyon dili olarak tanımlanmıştır. SQLXML 4.0, W3C XPath spesifikasyonunun bir alt kümesini uygular ve bu spesifikasyon .http://www.w3.org/TR/1999/PR-xpath-19991008.html

Aşağıda, W3C XPath uygulaması ile SQLXML 4.0 uygulaması arasındaki temel farklar yer almaktadır.

  • Kök sorgular

    SQLXML 4.0, kök sorguyu (/) desteklemez. Her XPath sorgusu, şemadaki en üst <seviye bir ElementType> ile başlamalıdır.

  • Raporlama hataları

    W3C XPath spesifikasyonu hata koşulları tanımlamıyor. Herhangi bir düğüm seçemeyen XPath sorguları boş bir düğüm kümesi döndürür. SQLXML 4.0'da, bir sorgu birçok tür hata mesajı döndürebilir.

  • Belge sıralaması

    SQLXML 4.0'da belge sırası her zaman belirlenmez. Bu nedenle, belge sırasını kullanan sayısal öncüller ve eksenler (örneğin aşağıdakı) uygulanmaz.

    Belge sırasının olmaması, bir düğümün dize değerinin ancak o düğüm tek bir satırdaki tek bir sütuna eşlediğinde değerlendirilebileceği anlamına gelir. Bir eleman alt eleman veya IDREFS veya NMTOKEN düğümü ile dize dönüştürülemez.

    Uyarı

    Bazı durumlarda, anahtar alanları açıklaması veya ilişki açıklamasından anahtarlar deterministik bir belge sırasına yol açabilir. Ancak, bu açıklamaların birincil kullanımı değildir. Daha fazla bilgi için bkz. Anahtar Sütunları Tanımlama sql:key-fields (SQLXML 4.0) ve sql:relationship kullanarak ilişkileri belirtmek (SQLXML 4.0) bkz.

  • Veri türleri

    SQLXML 4.0, XPath dizisi, sayı ve boolean veri türlerini uygulamada sınırlamalara sahiptir. Daha fazla bilgi için XPath Veri Türleri (SQLXML 4.0) sayfasına bakınız.

  • Çapraz ürün sorguları

    SQLXML 4.0, örneğin çapraz ürün XPath sorgularını Customers[Order/@OrderDate=Order/@ShipDate]desteklemez. Bu sorgu, Sipariş Tarihi herhangi bir Siparişin Gönderim Tarihine eşit olan tüm Müşterileri seçer.

    Ancak, SQLXML 4.0, Sipariş Tarihi Gönderme Tarihine eşit olan herhangi bir Siparişi olan Müşterileri seçen gibi sorguları Customer[Order[@OrderDate=@ShippedDate]]destekler.

  • Hata yönetimi ve güvenlik

    Kullanılan şema ve XPath sorgu ifadesine bağlı olarak, Transact-SQL hatalar belirli koşullar altında kullanıcılara açığa çıkabilir.

Aşağıdaki bölümlerdeki tablolar, XPath sorgularının SQLXML 4.0'daki uygulamasının bu alanlarda W3C spesifikasyonundan nasıl farklı olduğuna dair detaylar sunar.

Desteklenen Fonksiyonellik

Aşağıdaki tablo, SQLXML 4.0'da uygulanan XPath dilinin özelliklerini göstermektedir.

Özellik Ürün Örnek sorgulara bağlantı
Eksenler Nitelik, çocuk, ebeveyn ve benlik eksenleri XPath Sorgularında Eksenlerin Belirtilmesi (SQLXML 4.0)
Boolean değerli önlemler, ardışık ve iç içe önlemler dahil olmak üzere XPath Sorgularında Aritmetik Operatörlerin Belirtilmesi (SQLXML 4.0)
Tüm ilişkisel operatörler =, !=, <, = <, >, >= XPath Sorgularında İlişkisel Operatörlerin Belirtilmesi (SQLXML 4.0)
Aritmetik işleçler +, -, *, div XPath Sorgularında Aritmetik Operatörlerin Belirtilmesi (SQLXML 4.0)
Açık dönüşüm fonksiyonları number(), string(), Boolean() XPath Sorgularında Açık Dönüşüm Fonksiyonlarının Belirtilmesi (SQLXML 4.0)
Boole işleçleri VE, YA XPath Sorgularında Boolean Operatörlerinin Belirtilmesi (SQLXML 4.0)
Boolean fonksiyonları true(), false(), not() XPath Sorgularında Boolean Fonksiyonlarının Belirtilmesi (SQLXML 4.0)
XPath değişkenleri XPath Sorgularında XPath Değişkenlerinin Belirtilmesi (SQLXML 4.0)

Desteklenmeyen İşlevsellik

Aşağıdaki tablo, XPath dilinin SQLXML 4.0'da uygulanmayan özelliklerini göstermektedir.

Özellik Ürün
Eksenler ata, ata-ve-ben, torun, torun-ya da benlik (//), takip eden , takip kardeş, isim alanı, önde, önde-kardeş
Sayısal değerli önlemler
Aritmetik işleçler mod
Düğüm fonksiyonları ata, ata-ve-ben, torun, torun-ya da benlik (//), takip eden , takip kardeş, isim alanı, önde, önde-kardeş
Dize işlevleri string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate()
Boolean fonksiyonları lang()
Sayısal işlevler sum(), zemin(), tavan(), yuvarlak()
Sendika operatörü |

Bir şablonda XPath sorgularını belirttiğinizde, aşağıdaki davranışa dikkat edin:

  • XPath, XML'de özel anlamlara sahip veya ve gibi karakterler < içerebilir (ve şablon bir XML belgesidir). Bu karakterlerden XML ve kodlama kullanarak kaçmanız veya URL'de XPath'ı belirtmeniz gerekir.

Ayrıca Bkz.

SQLXML 4.0'da XPath Sorguları Kullanımı