Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Retorna o URI do namespace do QName especificado em $arg como xs:string.
Sintaxe
fn:namespace-uri() as xs:string
fn:namespace-uri($arg as node()?) as xs:string
Argumentos
$arg
Nome do nó cuja parte URI do namespace será recuperada.
Comentários
Se o argumento for omitido, o padrão será o nó de contexto.
No SQL Server, fn:namespace-uri() sem um argumento só pode ser usado no contexto de um predicado dependente do contexto. Especificamente, só pode ser utilizado entre parênteses ([ ]).
Se $arg for a sequência vazia, a cadeia de caracteres de comprimento zero será retornada.
Se $arg for um elemento ou nó de atributo cujo QName expandido não esteja em um namespace, a função retornará a cadeia de caracteres de comprimento zero
Exemplos
Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas xml type no banco de dados AdventureWorks.
Um. Recuperar URI de namespace de um nó específico
A consulta a seguir é especificada em relação a uma instância XML sem tipo. A expressão de consulta, namespace-uri(/ROOT[1]), recupera a parte URI do namespace do nó especificado.
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('namespace-uri(/ROOT[1])')
Como o QName especificado não tem a parte URI do namespace, mas apenas a parte do nome local, o resultado é uma cadeia de caracteres de comprimento zero.
A consulta a seguir é especificada em relação às Instruções digitadas coluna xml. A expressão, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), retorna o URI do namespace do primeiro elemento <Location> filho do elemento <root>.
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
Este é o resultado:
https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions
B. Usando namespace-uri() sem argumento em um predicado
A consulta a seguir é especificada na coluna xml digitada CatalogDescription. A expressão retorna todos os nós de elemento cujo URI de namespace é https://www.adventure-works.com/schemas/OtherFeatures. A funçãonamespace- uri() é especificada sem um argumento e usa o nó de contexto.
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
Este é um resultado parcial:
<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>
...
Você pode alterar o URI do namespace na consulta anterior para https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain. Em seguida, você receberá todos os filhos do nó do elemento <ProductDescription> cujo URI do namespace parte do QName expandido é https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain.
Limitações de implementação
Estas são as limitações:
- A função namespace-uri() retorna instâncias do tipo xs:string em vez de xs:anyURI.