XSLT применяет шаблоны к подмножествам - PullRequest
2 голосов
/ 24 ноября 2011

У меня такая ситуация:

<root>
 //first block other tags

 <data>something</data> //first
 <data>something</data>
 <data>something</data>
 ...others <data/>
 <data>something</data> //last

 //follows second block other tags
</root>

Мне нужно применить шаблоны ко всем тегам до первого <data/> и применить шаблоны ко всем другим тегам после последнего <data/>.

Вы знаете, как выбрать это подмножество?

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Чтобы выбрать все элементы перед первым элементом данных, сделайте это

<xsl:apply-templates select="data[1]/preceding-sibling::*" />

Чтобы выбрать все элементы после последнего элемента данных, сделайте это

<xsl:apply-templates select="data[last()]/following-sibling::*" />

Или выберите оба одновременно ....

<xsl:apply-templates select="data[1]/preceding-sibling::*|data[last()]/following-sibling::*" />

Предполагается, что вы находитесь на элементе root , и хотя имеется хотя бы один элемент data .

0 голосов
/ 24 ноября 2011

Мне нужно применить шаблоны ко всем тегам до первого <data/> и применить шаблоны ко всем другим тегам после последнего <data/>.

КакКак видно из предоставленного XML-документа, между первым и последним data элементами нет элементов, отличных от data, поэтому используйте :

<xsl:apply-templates select="*[not(self::data)]"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...