data
O valor atômico de um nó
Descrição
A função fn:data recebe uma sequência de itens e devolve os valores tipados deles. Para valores atômicos, isso significa devolver o próprio valor, sem mudança. Para nós, significa extrair o valor tipado do nó.
Muitas vezes não é preciso chamar esta função, porque o valor tipado de um nó é extraído automaticamente (um processo chamado atomização) em muitas expressões XPath 2.0, como comparações, operações aritméticas e chamadas de função. O uso mais comum de fn:data é nos construtores de elemento do XQuery.
Parâmetros |
Descrição |
|---|---|
arg:string() |
o item do qual pegar o valor |
Exemplos
Os exemplos abaixo usam este documento de entrada:
<xsl:variable name="cat" select="doc('http://www.functx.com/input/catalog.xml')"/>
<!-- content of catalog.xml -->
<catalog>
<product dept="WMN">
<number>557</number>
<name language="en">Fleece Pullover</name>
<colorChoices>navy black</colorChoices>
</product>
<product dept="ACC">
<number>563</number>
<name language="en">Floppy Sun Hat</name>
</product>
<product dept="ACC">
<number>443</number>
<name language="en">Deluxe Travel Bag</name>
</product>
<product dept="MEN">
<number>784</number>
<name language="en">Cotton Dress Shirt</name>
<colorChoices>white gray</colorChoices>
<desc>Our <i>favorite</i> shirt!</desc>
</product>
</catalog>
XPath |
Resultado |
|---|---|
data($cat//product[1]/number) |
557 |
data($cat//number) |
(557, 563, 443, 784) |
data($cat//product[1]/@dept) |
WMN |
data($cat//product[1]/colorChoices) |
navy black |
data($cat//product[1]) |
557 Fleece Pullover navy black |
data($cat//product[4]/desc) |
Our favorite shirt! |
Os exemplos abaixo dão resultados diferentes se o documento de entrada tiver sido validado com este schema. Os geradores não validam contra um schema, então no Mapper Idea o data() devolve os valores sem tipo, como na tabela de cima.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog" type="CatalogType"/>
<xs:complexType name="CatalogType">
<xs:sequence>
<xs:element name="product" type="ProductType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductType">
<xs:sequence>
<xs:element name="number" type="xs:integer"/>
<xs:element name="name" type="NameType"/>
<xs:element name="colorChoices" type="ColorListType" minOccurs="0"/>
<xs:element name="desc" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="dept" type="xs:string"/>
</xs:complexType>
<xs:simpleType name="ColorListType">
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:complexType name="NameType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="language" type="LangType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="LangType">
<xs:restriction base="xs:string">
<xs:enumeration value="en"/>
<xs:enumeration value="fr"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
XPath |
Resultado |
|---|---|
data($cat//product[1]/colorChoices) |
('navy', 'black') |
data($cat//product[1]) |
Error FOTY0012 |