powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / position() для всех полей в разных узлах
2 сообщений из 2, страница 1 из 1
position() для всех полей в разных узлах
    #36341295
Xsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xsl
Гость
Всем доброго времени суток!

Есть следующая xml'ка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0"?>
<ROOT>
   <PAC>
      <LIN>Хлеб</LIN>
      <LIN>Молоко</LIN>
   </PAC>
   <PAC>
      <LIN>Сахар</LIN>
   </PAC>
   <PAC>
      <LIN>Вода</LIN>
   </PAC>
</ROOT>

На выходе мне надо получить вот такой xml файл, где поле NUMBER является порядковым номером поля LIN:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<DOCNAME>
  <PAC>
    <NUMBER> 1 </NUMBER>
    <PRODUCT>Хлеб</PRODUCT>
    <NUMBER> 2 </NUMBER>
    <PRODUCT>Молоко</PRODUCT>
  </PAC>
  <PAC>
    <NUMBER> 3 </NUMBER>
    <PRODUCT>Сахар</PRODUCT>
  </PAC>
  <PAC>
    <NUMBER> 4 </NUMBER>
    <PRODUCT>Вода</PRODUCT>
  </PAC>
</DOCNAME>

Я использую вот такой вот XSL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<xsl:template match="/">
	<DOCNAME>
		<xsl:apply-templates select="ROOT/PAC"/>
	</DOCNAME>
</xsl:template>

<xsl:template match="PAC">
	<PAC><xsl:apply-templates select="LIN"/></PAC>
</xsl:template>

<xsl:template match="LIN">
	<NUMBER><xsl:value-of select="position()"/></NUMBER>
	<PRODUCT><xsl:value-of select="."/></PRODUCT>
</xsl:template>

Ничего не выходит. Поля нумеруются следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<DOCNAME>
  <PAC>
    <NUMBER> 1 </NUMBER>
    <PRODUCT>Хлеб</PRODUCT>
    <NUMBER> 2 </NUMBER>
    <PRODUCT>Молоко</PRODUCT>
  </PAC>
  <PAC>
    <NUMBER> 1 </NUMBER>
    <PRODUCT>Сахар</PRODUCT>
  </PAC>
  <PAC>
    <NUMBER> 1 </NUMBER>
    <PRODUCT>Вода</PRODUCT>
  </PAC>
</DOCNAME>

Подскажите пожалуйста что я не так делаю и как это надо сделать правильно?

Спасибо!
...
Рейтинг: 0 / 0
position() для всех полей в разных узлах
    #36341360
Xsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xsl
Гость
ну что сказать... лошара :)

ответ:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<xsl:template match="/">
	<DOCNAME>
		<xsl:apply-templates select="ROOT/PAC"/>
	</DOCNAME>
</xsl:template>

<xsl:template match="PAC">
	<PAC><xsl:apply-templates select="LIN"/></PAC>
</xsl:template>

<xsl:template match="LIN">
	<NUMBER><xsl:number level="any" count="LIN"/></NUMBER>
	<PRODUCT><xsl:value-of select="."/></PRODUCT>
</xsl:template>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / position() для всех полей в разных узлах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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