分享方式:


節點的相關函式 - 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。

另請參閱

節點上的函式
local-name 函式 (XQuery)