Используя XSL 1.0, я пытаюсь получить данные между двумя элементами «Раздел». Мне не составит труда получить только информацию «Заголовок», но я также хотел бы знать, какая Секция находится между ними, поскольку они не являются братьями и сестрами. Вот где я напортачиваюсь.XSL-группирование по разделам
Я искал в Интернете и этот форум различные решения, в основном пытаясь сгенерировать ключ и используя группировку, но мне не удалось получить что-либо, что работает. Иногда это ошибка «ожидаемого пробела» или вообще ничего.
ВХОД:
<Root>
<Content>
<Paragraph Type="New Section">
<Text>Section A</Text>
</Paragraph>
<Paragraph Type="Stuff">
<Text>Random information 1</Text>
</Paragraph>
<Paragraph Type="Heading">
<Text>Important information 1</Text>
</Paragraph>
<Paragraph Type="Stuff">
<Text>Random information 2</Text>
</Paragraph>
<Paragraph Type="Heading">
<Text>Important information 2</Text>
</Paragraph>
<Paragraph Type="End Of Section">
<Text>End of Section A</Text>
</Paragraph>
<Paragraph Type="New Section">
<Text>Section B</Text>
</Paragraph>
<Paragraph Type="Stuff">
<Text>Random information 3</Text>
</Paragraph>
<Paragraph Type="Heading">
<Text>Important information 3</Text>
</Paragraph>
<Paragraph Type="Stuff">
<Text>Random information 4</Text>
</Paragraph>
<Paragraph Type="Heading">
<Text>Important information 4</Text>
</Paragraph>
<Paragraph Type="End Of Section">
<Text>End of Section B</Text>
</Paragraph>
</Content>
</Root>
DESIRED ВЫВОД:
"Important information 1"
"Section A"
"Important information 2"
"Section A"
"Important information 3"
"Section B"
"Important information 4"
"Section B"
Как я уже говорил, с помощью выбрать и когда = "Заголовок" тест против пункта/@ Тип Умею получите текст «Важная информация», но я не могу понять, как рассказать, между какими разделами они падают.
Заранее спасибо.
[1] - важная часть, она становится самой близкой, в противном случае кажется, что предыдущий родной брат возвращает первый. –
Блестяще и намного проще, чем то, что я делал. Это здорово! Спасибо. –
@WilliamWalseth Фактически, 'previous-sibling' выбирает ** все ** из них. Но в XSLT 1.0 'xsl: value-of' возвращает только первый, в порядке документа. –