powered by simpleCommunicator - 2.0.31     © 2024 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl поменять значение элемента не изменяя xml
2 сообщений из 2, страница 1 из 1
xsl поменять значение элемента не изменяя xml
    #39709791
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть xml типа
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<temp>
  <header>...</header>
  <body>
    <line>
      <a>1</a>
      <b>2</b>
      <c>3</c>
    </line>
    <line>
      <a>1</a>
      <b>2</b>
      <c>3</c>
    </line>
  </body>
</temp>



нужно с помощью xsl изменить значение c=a*b
и добавить после c элемент d=a+b,
при этом оставив структуру как есть, чтобы на выходе было:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<temp>
  <header>...</header>
  <body>
    <line>
      <a>1</a>
      <b>2</b>
      <c>2</c>
      <d>3</d>
    </line>
    <line>
      <a>1</a>
      <b>2</b>
      <c>3</c>
      <d>3</d>
    </line>
  </body>
</temp>



настоящий шаблон сложнее, но суть та же. Делаю по-разному, но получается на выходе белеберда.
...
Рейтинг: 0 / 0
xsl поменять значение элемента не изменяя xml
    #39709859
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужно переопределить шаблон для нужных элементов, а для остальных вставить обычный копирующий шаблон
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<?xml version="1.0"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  
  <xsl:output encoding="UTF-8" method="xml"/>
  
  <xsl:template match="line">
    <xsl:copy>
      <xsl:apply-templates/>
      <d>
        <xsl:value-of select="a + b"/>
      </d>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="c">
    <xsl:copy>
      <xsl:value-of select="../a * ../b"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl поменять значение элемента не изменяя xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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