Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Внутри тега - 2 других тега. Как вытащить один, зная значение другого? / 2 сообщений из 2, страница 1 из 1
10.07.2012, 22:28
    #37873974
t00kuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутри тега - 2 других тега. Как вытащить один, зная значение другого?
Дорогие IT-коллеги.

В процессе работы мне потребовалось выполнить задачу, которую я не очень понимаю как решать. Я бы с удовольствием разобрался сам с нуля, но очень ограничен во временных ресурсах.

Пожалуйста, окажите содействие если не прямым ответом, то хотя бы публикацией названия инструмента языка XSL, который подойдет под задачу.

Итак, имеется XML со структурой, по сути описывающей таблицу:

Код: xml
1.
2.
3.
4.
5.
6.
<row>
<column> <id> 1</id> <val> A</val> </column>
<column> <id> 2</id> <val> BC</val> </column>
..............................................................
<column> <id> N</id> <val> XXZ</val> </column>
</row>


Надо перекроить всё в следующий вид, зная соответствия между значением внутри тега id первой таблицы, и тегом второй:

Код: xml
1.
2.
3.
4.
5.
6.
<row>
<first> A</first>
<alpha> BC</alpha>
..................................
<xeno> XXZ</xeno>
</row>



В данном случае для <id> 1<id> соответствует тег <first></first>.
Рядов (блоков <row>) несколько.
...
Рейтинг: 0 / 0
10.07.2012, 23:31
    #37874014
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутри тега - 2 других тега. Как вытащить один, зная значение другого?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<xsl:template match="column">
  <xsl:variable name="name">
    <xsl:choose>
      <xsl:when test="id = 1">
        <xsl:value-of select="'first'"/>
      </xsl:when>
      <xsl:when test="id = 2">
        <xsl:value-of select="'alpha'"/>
      </xsl:when>
      ........................
      <xsl:when test="id = N">
        <xsl:value-of select="'xeno'"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="'unknown'"/>
      </xsl:otherwise>
    <xsl:choose>
  </xsl:variable>
  <xsl:element name="{$name}">
    <xsl:value-of select="val"/>
  </xsl:element>
</xsl:template
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Внутри тега - 2 других тега. Как вытащить один, зная значение другого? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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