Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Одноуровневый xml с разделителями - в двухуровневый / 3 сообщений из 3, страница 1 из 1
15.06.2008, 06:01
    #35373348
prof_nimnul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одноуровневый xml с разделителями - в двухуровневый
Есть одноуровневая структура с разделителями:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<root>
  <pair/>
  <p> 1 </p>
  <p> 2 </p>
  <separator/>
  ...
  <pair/>
  <foo>bar</foo>
  <bar>baz</bar>
  <separator/>
  ...
</root>

Ее нужно преобразовать в двухуровневую - содержимое между pair и separator завернуть в элемент feature:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
  <feature>
    <p> 1 </p>
    <p> 2 </p>
  </feature>
  <feature>
    <foo>bar</foo>
    <bar>baz</bar>
  </feature>
</root>

Я додумался только до изврата с count():

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xsl:for-each select="pair">
   <feature>
      <xsl:variable name="sep" select="count(following-sibling::separator)"/>
      <xsl:copy-of select="following-sibling::*[not (name() = "separator"") and 
              count(following-sibling::separator) = $sep]"/>
   </feature>
</xsl:for-each>

Можно ли это сделать как-то без сравнения count(following-sibling::separator)? Например, первое что пришло мне в голову - это

Код: plaintext
<xsl:copy-of select="following-sibling::separator[1]/preceding-sibling::*"/>

Но оно, как вы понимаете, не работает.
...
Рейтинг: 0 / 0
16.06.2008, 14:02
    #35374498
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одноуровневый xml с разделителями - в двухуровневый
count(following-sibling::*)-count(following-sibling::separator[1]/following-sibling::*) вроде даст искомое число элементов.
...
Рейтинг: 0 / 0
17.06.2008, 19:17
    #35378354
prof_nimnul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одноуровневый xml с разделителями - в двухуровневый
Искомое число элементов??
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Одноуровневый xml с разделителями - в двухуровневый / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]