mysql語法元素 XPath語法

2021-10-19 19:50:11 字數 2800 閱讀 3686

在sql server 2005中,for xml 功能得到了增強,它有了對根元素和元素名稱的新的選項、使用for xml 呼叫以便你可以建立複雜的層次關係的能力、和乙個新的使得你可以定義將要使用xpath 語法來提取的xml結構的path 模式,如下面的示例所示: select productid

在sql server 2005中,for xml 功能得到了增強,它有了對根元素和元素名稱的新的選項、使用for xml 呼叫以便你可以建立複雜的層次關係的能力、和乙個新的使得你可以定義將要使用xpath 語法來提取的xml結構的path 模式,如下面的示例所示:

select productid as '@productid',

productname as 'productname'

from products

for xml path ('product'), root ('products')

這個查詢返回下面的xml:

widget

sprocket

除了增強sql server 2000已推出的xml功能,sql server 2005增加了乙個新的、本地的xml 資料型別,使得你可以為xml資料建立變數和列,如下面的示例所示:

create xml schema collection productschema as

你可以使用xml 資料型別來儲存資料庫中的文件或資料。列和變數可以用於非型別化的xml或型別化的xml,後者是對乙個xml schema 定義(xml schema definition ,xsd)的schema有效。如果要為資料驗證進行定義,開發人員可以使用create xml schema collection 語句,如下面的示例所示:

在建立了乙個schema 集合後,你可以通過參照schema集合將乙個xml變數或列與它所包含的schema 宣告結合起來,如下面的示例所示:

create table salesorders

(orderid integer primary key,

orderdate datetime,

customerid integer,

ordernotes xml)

型別化xml在插入值或更新值時對關聯的schema 集合的宣告進行驗證,這使得可以為了遵從性檢查或相容性原因而加強關於xml資料的結構的業務規則。

xml 資料型別還提供了一些方法,使得你可以使用它們來查詢和操縱例項的xml資料。例如,你可以使用query 方法來查詢xml 資料型別的乙個例項的xml資料,如下面的示例所示: [table][tr][td]declare @x xml

set @x=

'kim abercrombie

margaret smith'

select @x.query(

for $invoice in /invoices/invoice

return $invoice/customer

這個例子中的查詢使用了乙個xquery 表示式,這個表示式找出文件中的每乙個invoice 元素,並返回乙個包含每乙個invoice 元素的customer元素的xml文件,如下面的示例所示:

kim abercrombie

margaret smith

sql server 2005中的另外乙個顯著的與xml相關的特性是對xml索引的支援。你可以為型別化xml的列建立首要和次要的xml索引來增強xml查詢效能,乙個首要的xml索引是乙個xml例項的所有節點的部分表示,查詢處理器可以使用它來快速的找到乙個xml值中的節點。在你建立了乙個首要的xml索引之後,你可以建立次要的xml索引來提高特定的查詢型別的效能。下面的示例建立了乙個首要的xml索引,和乙個path型別的次要xml索引,它可以提高使用xpath表示式來標識乙個xml例項中的節點的查詢的效能。

create primary xml index idx_xml_notes

on salesorders (notes)

gocreate xml index idx_xml_path_notes

on salesorders (notes)

using xml index idx_xml_notes

for path

goselect productid as '@productid',

productname as 'productname'

from products

for xml path ('product'), root ('products')

create xml schema collection productschema as

create table salesorders

(orderid integer primary key,

orderdate datetime,

customerid integer,

ordernotes xml)

declare @x xml

set @x=

'??kim abercrombie

??margaret smith

select @x.query(

for $invoice in /invoices/invoice

return $invoice/customer

create primary xml index idx_xml_notes

on salesorders (notes)

gocreate xml index idx_xml_path_notes

on salesorders (notes)

using xml index idx_xml_notes

for path

go

XPath 簡單語法

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。empire burlesque bob dylan 10.90 hide your heart bonnie tyler 9.90 greatest hits dolly parton 9.90 定位節...

XPath查詢語法

xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。表示式描述 nodename 選取此節點的所有子節點 從根節點擊取 從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置 選取當前節點 選取當前節點的父節點 選取屬性 在下面的 中,我們已列出了一些...

XPath 簡單語法

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。empire burlesque bob dylan 10.90 hide your heart bonnie tyler 9.90 greatest hits dolly parton 9.90 定位節...