XPath para devolver la concatenación de cadenas de valores de nodo secundarios calificados

¿Alguien puede sugerir un formato de expresión XPath que devuelve un valor de cadena que contiene los valores concatenados de ciertos nodos secundarios calificados de un elemento, pero haciendo caso omiso de otros?

This text node should be returned. And the value of this element. And this.

But this paragraph element should be ignored.

El valor devuelto debe ser una sola cadena:

 This text node should be returned. And the value of this element. And this. 

¿Es esto posible en una sola expresión XPath?

Gracias.

En XPath 1.0:

Puedes usar

 /div//text()[not(parent::p)] 

para capturar los nodos de texto deseado. La concatenación en sí no se puede hacer en XPath 1.0, recomiendo hacerlo en la aplicación host.

En XPath 2.0 :

string-join(/*/node()[not(self::p)], '')

 /div//text() 

fuerzas de doble barra para extraer texto independientemente de los nodos intermedios

Este aspecto que funciona:

Usando como contexto /div/ :

 text() | em/text() 

O sin el uso del contexto:

 /div/text() | /div/em/text() 

Si desea concaturar las dos primeras cadenas, use esto:

 concat(/div/text(), /div/em/text()) 

Si quieres todos los niños excepto p, puedes probar lo siguiente …

  string-join(//*[name() != 'p']/text(), "") 

que devuelve …

 This text node should be returned. And the value of this element. And this. 

También podría usar un ciclo for-each y ensamblar los valores en una variable como esta