2011-08-11 43 views
16

¿cuál es la sintaxis correcta para obtener el nombre del nodo primario del nodo actual? Sé que se trata del padre de AxisName, pero ¿cuál es la sintaxis correcta? por ejemplo, de la siguiente XML¿Cómo obtener el nombre de nodo primario del nodo actual?

<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="file:/dev/null" iosp="lasp.tss.iosp.ValueGeneratorIOSP" start="0" increment="1"> 
    <attribute name="title" value="Vector time series"/> 
    <dimension name="time" length="100"/> 
    <variable name="time" shape="time" type="double"> 
     <attribute name="units" type="String" value="seconds since 1970-01-01T00:00"/> 
    </variable> 
    <group name="Vector" tsdsType="Structure" shape="time"> 
     <variable name="x" shape="time" type="double"/> 
     <variable name="y" shape="time" type="double"/> 
     <variable name="z" shape="time" type="double"/> 
    </group> 
</netcdf> 

para la variable elemento que debería obtener netcdf o grupo. Gracias por adelantado.

+1

Buena pregunta, +1. Vea mi respuesta para la expresión XPath más corta posible que evalúa el nombre del padre del nodo actual. También una explicación de por qué un padre puede no tener un nombre. Finalmente, esta es realmente una pregunta XPath y no tanto una XSLT. –

Respuesta

8

name(parent::*) debería hacerlo. Solo va a haber un padre, obviamente.

29

Uso:

name(..) 

El .. abreviatura es una abreviatura de parent::node().

Nota: No todos los padres tienen un nombre. Por ejemplo, el nodo del documento (/) es el padre del elemento superior (/*) del documento y no tiene nombre.

+0

usando eso para recuperar el nombre principal en mi unidad de disco a un error de memoria, en su lugar use el nombre (parent :: *) –

+0

@CarlosCocom, Esto solo muestra que la implementación particular de XPath que está utilizando tiene errores. Sería interesante si puede proporcionar un documento XML (preferiblemente muy corto) y la expresión exacta de XPath. –

Cuestiones relacionadas