Возможно ли с помощью XPath получить объединенное представление всех дочерних элементов узла? Я ищу что-то вроде метода JQuery .html ().
Например, если у меня есть следующий XML:
<h3 class="title">
<span class="content">this</span>
<span class="content"> is</span>
<span class="content"> some</span>
<span class="content"> text</span>
</h3>
Я бы хотел запрос XPath на "h3 [@ class = 'title']", который бы дал мне "это какой-то текст".
Это реальный вопрос, но если больше контекста / фона полезно, вот оно: я использую XPath, и я использовал этот пост , чтобы помочь мне написать какой-то сложный XSL. Мой исходный XML выглядит следующим образом.
<h3 class="title">Title</h3>
<p>
<span class="content">Some</span>
<span class="content"> text</span>
<span class="content"> for</span>
<span class="content"> this</span>
<span class="content"> section</span>
</p>
<p>
<span class="content">Another</span>
<span class="content"> paragraph</span>
</p>
<h3 class="title">
<span class="content">Title</span>
<span class="content"> 2</span>
<span class="content"> is</span>
<span class="content"> complex</span>
</h3>
<p>
<span class="content">Here</span>
<span class="content"> is</span>
<span class="content"> some</span>
<span class="content"> text</span>
</p>
Мой выходной XML учитывает каждый <h3>
, а также все теги <p>
до следующего <h3>
. Я написал XSL следующим образом:
<xsl:template match="h3[@class='title']">
...
<xsl:apply-templates select="following-sibling::p[
generate-id(preceding-sibling::h3[1][@class='title'][text()=current()/text()])
=
generate-id(current())
]"/>
...
</xsl:template>
Проблема в том, что я использую метод text()
для определения одинаковых h3s. В приведенном выше примере метод title (сложный заголовок 2) text () возвращает пробел. Я думал о том, чтобы использовать такой метод, как JQuery .html, который вернул бы мне «Заголовок 2 сложен».
Обновление: это может помочь уточнить. После преобразования желаемый вывод для вышеупомянутого будет выглядеть примерно так:
<section>
<title>Title</title>
<p>
<content>Some</content>
<content> text</content>
<content> for</content>
<content> this</content>
<content> section</content>
</p>
<p>
<content>Another</content>
<content> paragraph</content>
</p>
</section>
<section>
<title>
<content>Title</content>
<content> 2</content>
<content> is</content>
<content> complex</content>
</title>
<p>
<content>Here</content>
<content> is</content>
<content> some</content>
<content> text</content>
</p>
</section>