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>

Veja também