Используйте
string((//div/p)[1])
Когда вычисляется это выражение XPath, результатом является строковое значение первого p
в документе, который является потомком div
.
По определению строковое значение элемента является объединением (в порядке документа) всех его потомков текстовых узлов.
Таким образом, вы получите ровно весь текст в поддереве с корнем этого элемента p
, а все остальные узлы (элементы, комментарии, PI) будут пропущены.
Проверка на основе XSLT :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="string(p)"/>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется к следующему документу XML (такого не предусмотрено!):
<p>
Hello <b>
<a href="http://www.w3.org/TR/2008/REC-xml-20081126/">XML</a>
World!</b>
</p>
результат вычисленного выражения XPath выводится :
Hello XML
World!