number

Converte um valor ou um nó em número

Descrição

A função fn:number constrói um valor xs:double a partir de um nó que contém um número ou de um valor atômico. É útil para dizer ao processador que trate um nó ou um valor como número, seja qual for o tipo declarado dele (se houver). Devolve o argumento convertido em xs:double.

A diferença entre fn:number e o construtor xs:double é que fn:number devolve NaN quando o argumento não pode ser convertido em número, enquanto o construtor xs:double dá erro.

Parâmetros

Descrição

arg:integer()

o valor a converter em número; se omitido, o item de contexto

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:variable name="priceDoc" select="doc('http://www.functx.com/input/prices.xml')"/>

<!-- content of prices.xml -->
<prices>
  <priceList effDate="2006-11-15">
    <prod num="557">
      <price currency="USD">29.99</price>
      <discount type="CLR">10.00</discount>
    </prod>
    <prod num="563">
      <price currency="USD">69.99</price>
    </prod>
    <prod num="443">
      <price currency="USD">39.99</price>
      <discount type="CLR">3.99</discount>
    </prod>
  </priceList>
</prices>

XPath

Resultado

Explicação

number($priceDoc//prod[1]/price)

29.99

O texto do elemento price é convertido em número.

number($priceDoc//prod/price)

Error XPTY0004

number() aceita um único item, e há três elementos price.

number($priceDoc//prod[1]/@currency)

NaN

USD não é um número.

number('29,99')

NaN

A vírgula não é separador decimal, então a string não é um número.

number('ABC')

NaN

ABC não é um número.

number( () )

NaN

A sequência vazia vira NaN.

$priceDoc//prod/price[number() > 35]

<price currency="USD">69.99</price> <price currency="USD">39.99</price>

Sem argumento, number() converte o item de contexto: os preços maiores que 35.

Veja também