節點的相關函式 - namespace-uri
適用於:SQL Server
以 xs:string 傳回$arg 中指定的 QName 命名空間 URI。
語法
fn:namespace-uri() as xs:string
fn:namespace-uri($arg as node()?) as xs:string
引數
$arg
將擷取命名空間 URI 部分的節點名稱。
備註
如果省略引數,則預設值為內容節點。
在 SQL Server 中, 沒有引數的 fn:namespace-uri() 只能在內容相依述詞的內容中使用。 具體來說,它只能在括弧 ([ ]) 內使用。
如果 $arg 為空序列,則會傳回長度為零的字串。
如果 $arg 是一個元素或屬性節點,其 expanded-QName 不在命名空間中,則函式會傳回長度為零的字串
範例
本主題針對 AdventureWorks 資料庫中各種 xml 類型資料行中儲存的 XML 實例,提供 XQuery 範例。
A. 擷取特定節點的命名空間 URI
下列查詢是針對不具類型的 XML 實例所指定。 查詢運算式 會 namespace-uri(/ROOT[1])
擷取指定節點的命名空間 URI 部分。
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('namespace-uri(/ROOT[1])')
由於指定的 QName 沒有命名空間 URI 部分,而只有本機名稱部分,因此結果是長度為零的字串。
下列查詢是針對指示型別 xml 資料行所指定。 運算式 會 namespace-uri(/AWMI:root[1]/AWMI:Location[1])
傳回專案之第一個 Location
>< 元素子系的 <root
> 命名空間 URI。
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
namespace-uri(/AWMI:root[1]/AWMI:Location[1])') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
以下是結果:
https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions
B. 在述詞中使用 namespace-uri() 沒有引數
下列查詢是針對 CatalogDescription 類型的 xml 資料行所指定。 運算式會傳回命名空間 URI 為 https://www.adventure-works.com/schemas/OtherFeatures
的所有專案節點。 未指定 namespace-uri () 函式而不指定引數,並使用內容節點。
SELECT CatalogDescription.query('
declare namespace p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/p1:ProductDescription//*[namespace-uri() = "https://www.adventure-works.com/schemas/OtherFeatures"]
') as Result
FROM Production.ProductModel
WHERE ProductModelID=19
這是部分結果:
<p1:wheel xmlns:p1="https://www.adventure-works.com/schemas/OtherFeatures">High performance wheels.</p1:wheel>
<p2:saddle xmlns:p2="https://www.adventure-works.com/schemas/OtherFeatures">
<p3:i xmlns:p3="http://www.w3.org/1999/xhtml">Anatomic design</p3:i> and made from durable leather for a full-day of riding in comfort.</p2:saddle>
...
您可以將上一個查詢中的命名空間 URI 變更為 https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain
。 然後,您會收到專案的所有元素節點子 <ProductDescription
> 系,其命名空間 URI 部分的展開 QName 為 。 https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain
實作限制
以下是限制:
- namespace-uri() 函 式會傳回 xs:string 類型的實例,而不是 xs:anyURI。