id
Busca elementos pelo ID
Descrição
A função fn:id recebe uma sequência de IDs e devolve os elementos com esses IDs. Se $node não for informado, procura no mesmo documento do item de contexto atual. Se $node for informado, procura no mesmo documento de $node.
As strings de $arg podem ser IDs avulsos ou listas de IDs separadas por espaço. Embora $arg seja uma sequência de xs:string, também dá para passar valores xs:IDREF ou xs:IDREFS, porque esses tipos derivam de xs:string.
Um elemento tem um certo ID se:
tiver um atributo marcado como ID com esse valor, ou
o tipo do próprio elemento for marcado como ID e o conteúdo dele for esse
valor.
Um nó de elemento ou de atributo fica "marcado como ID" quando é validado por um schema que o declara como xs:ID ou, no caso de atributos, quando uma DTD o declara do tipo ID.
A collation padrão não é usada para comparar os IDs; a comparação é simples, pelos code points Unicode.
A função devolve os nós na ordem do documento, e não na ordem dos valores de $arg. O resultado não tem elementos repetidos, mesmo que um ID apareça duas vezes em $arg.
Parâmetros |
Descrição |
|---|---|
arg:string() |
o valor de ID a procurar |
node:node() |
um nó do documento onde procurar |
Exemplos
Os exemplos abaixo usam este documento de entrada:
<xsl:variable name="book" select="doc('http://www.functx.com/input/book.xml')"/>
<!-- content of book.xml -->
<!DOCTYPE book [
<!ELEMENT book (section*) >
<!ELEMENT section ANY >
<!ATTLIST section id ID #REQUIRED >
<!ELEMENT fn ANY >
<!ATTLIST fn fnid ID #REQUIRED >
<!ELEMENT fnref EMPTY >
<!ATTLIST fnref ref IDREF #REQUIRED >
<!ELEMENT secRef EMPTY >
<!ATTLIST secRef refs IDREFS #REQUIRED >
]>
<book>
<section id='preface'>This book introduces XQuery...
The examples are downloadable<fnref ref="fn1"/>...
</section>
<section id='context'>...</section>
<section id='language'>...Expressions, introduced
in <secRef refs='context'/>, are...
</section>
<section id='types'>...As described in
<secRef refs='context language'/>, you can...
</section>
<fn fnid='fn1'>See http://datypic.com.</fn>
</book>
Estes exemplos supõem que o documento de entrada foi validado e que o tipo do atributo id é xs:ID.
XPath |
Resultado |
|---|---|
$book/id('preface') |
<section id="preface">This book introduces XQuery... The examples are downloadable<fnref ref="fn1"/>... </section> |
$book/id(('context','preface')) |
<section id="preface">This book introduces XQuery... The examples are downloadable<fnref ref="fn1"/>... </section> <section id="context">...</section> |
$book/id('context preface') |
<section id="preface">This book introduces XQuery... The examples are downloadable<fnref ref="fn1"/>... </section> <section id="context">...</section> |
$book//section[3]/secRef/id(@refs) |
<section id="context">...</section> |
$book//section[4]/secRef/id(@refs) |
<section id="context">...</section> <section id="language">...Expressions, introduced in <secRef refs="context"/>, are... </section> |
$book//secRef/id(@refs) |
<section id="context">...</section> <section id="language">...Expressions, introduced in <secRef refs="context"/>, are... </section> |
$book/id(('preface','noMatch', 'in!valid')) |
<section id="preface">This book introduces XQuery... The examples are downloadable<fnref ref="fn1"/>... </section> |