Как выбрать содержимое строки следующих узлов:
Во-первых, я думаю, что ваш вопрос неясен.
Вы можете выбрать нисходящие текстовые узлы, как Джон Кугельман имеет ответ с
//span//text()
Я рекомендую использовать абсолютный путь (не начиная с //
)
Но сдля этого вам нужно будет обработать текстовые узлы, находя у родителей span
которые являются дочерними.Поэтому было бы лучше просто выбрать элементы span
(например, //span
) и затем обработать их строковое значение.
С XPath 2.0 вы можете использовать:
string-join(//span, '.')
Результат:
word test. word test2 more words
С XSLT 1.0 этот вход:
<div>
<span class="url">
word
<b class=" ">test</b>
</span>
<span class="url">
word
<b class=" ">test2</b>
more words
</span>
</div>
С этой таблицей стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="span[@class='url']">
<xsl:value-of select="concat(substring('.',1,position()-1),normalize-space(.))"/>
</xsl:template>
</xsl:stylesheet>
Выход:
word test.word test2 more words