powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / организация счетчика
15 сообщений из 15, страница 1 из 1
организация счетчика
    #34347164
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML такой структуры
Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<Файл>
<Пачка>
<Поручение>
...
<ДругиеТеги>
...
<ВВП>
  <ВП>
       <ВП1></ВП1>
       <ВП2></ВП2>
       <ВП3></ВП3>
  </ВП>
  <ВП>
       <ВП1></ВП1>
       <ВП2></ВП2>
       <ВП3></ВП3>
  </ВП>
</ВВП>
</Поручение>
<Поручение>
...
<ДругиеТеги>
...
<ВВП>
  <ВП>
       <ВП1></ВП1>
       <ВП2></ВП2>
       <ВП3></ВП3>
  </ВП>
  <ВП>
       <ВП1></ВП1>
       <ВП2></ВП2>
       <ВП3></ВП3>
  </ВП>
  <ВП>
       <ВП1></ВП1>
       <ВП2></ВП2>
       <ВП3></ВП3>
  </ВП>
</ВВП>
</Поручение>
</Пачка>
</Файл>
обрабатывается таким xslt
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<xsl:output method="text" encoding = "windows-1251" />
<xsl:template match="/">
<xsl:for-each select="Файл/Пачка/Поручение/ВВП/ВП">
<xsl:value-of select="ВП1" /><xsl:text>,</xsl:text>
<xsl:value-of select="ВП2"/><xsl:text>,</xsl:text>
<xsl:value-of select="ВП3"/><xsl:text>,</xsl:text>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
Мне нужно организовать счётчик по тегу <Поручение>, для того чтобы записывать это число в начале каждой строки выходного файла.
Это нужно для того чтобы знать к какому Поручению относится то или иное ВП.
Как можно сделать такой счетчик? У меня в общем и цикла нет по тегу Поручение.
По поводу организации циклов со счетчиком при помощи рекурсии читал, но применить к своему случаю не получилось.
...
Рейтинг: 0 / 0
организация счетчика
    #34347281
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема ещё в том, что цикл по тегам Поручение, которые нужно "посчитать" как раз не нужен.
Если сделать такой цикл, это приведёт к тому, что выводимые строки будут дублироваться на каждой итерации.
...
Рейтинг: 0 / 0
организация счетчика
    #34347509
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На этом форуме мне на этот вопрос ответить не смогли а вот на этом,
http://xmlhack.ru/forum/xml/topic4083.html
http://www.xmlhack.ru/forum/xml/topic4162.html
вполне, может подойдет
...
Рейтинг: 0 / 0
организация счетчика
    #34347644
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понял проблему, но первое что приходит в голову:

<xsl:variable name="счетчик">
<xsl:number level="any" count="Поручение"/>
</xsl:variable>

Он запишет тебе сюда массив типа:
1,2,3,4,5... n, где n - число поручений

а потом вставлять &счетчик к тем ВП которые соответствуют, и в то место, которое необходимо
...
Рейтинг: 0 / 0
организация счетчика
    #34347873
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrei77 , а откуда я узнаю какая ВП соответствует какому элемента массива?
У меня n-ое количество Поручений, в каждом из которых своё количество ВП.
Если у меня нет цикла по Поручениям, то как я определю куда вставить тот или иной элемент этого массива?
И ещё - а как вывести?
Вот так <xsl:value-of select="&i"/>, если <xsl:variable name="i">, XRay выдаёт ошибку:
A semi colon character was expected.

SuSa , читаю.
...
Рейтинг: 0 / 0
организация счетчика
    #34347909
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<xsl:output method="text" encoding = "windows-1251" />
<xsl:template match="/">
<xsl:for-each select="Файл/Пачка/Поручение">
<xsl:variable name="num" select="position()"/>
<xsl:for-each select="ВВП/ВП">
<xsl:value-of select="$num"/>
<xsl:value-of select="ВП1" /><xsl:text>,</xsl:text>
<xsl:value-of select="ВП2"/><xsl:text>,</xsl:text>
<xsl:value-of select="ВП3"/>,
</xsl:for-each>
</xsl:for-each>
</xsl:template>
...
Рейтинг: 0 / 0
организация счетчика
    #34347919
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во...
:)
позиция это да, грамотнее моей нумерации))
...
Рейтинг: 0 / 0
организация счетчика
    #34347924
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только не & а $ - опечатка
...
Рейтинг: 0 / 0
организация счетчика
    #34347978
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo , да, вот это мне и нужно было.
Насчет цикла по поручениям, я значит просто как-то неправильно его делал.

Спасибо!
...
Рейтинг: 0 / 0
организация счетчика
    #34348208
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugeneНасчет цикла по поручениям, я значит просто как-то неправильно его делал.возможно, тебе следует лучше разобраться с понятием контекста преобразования. Это должно быть написано в спецификации в разделе, где объясняется алгоритм преобразования.
...
Рейтинг: 0 / 0
организация счетчика
    #34354961
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, а если у меня в теге Поручение содержится ещё такое
Код: plaintext
1.
2.
3.
<Документ>
   <серия></номер>
   <номер></номер>
</Документ>
и я хочу получить серию и номер документа для данного поручения в каждой выводимой строке, так же как номер поручения?

Если сделать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<xsl:output method="text" encoding = "windows-1251" />
<xsl:template match="/">
<xsl:for-each select="Файл/Пачка/Поручение">
<xsl:variable name="num" select="position()"/>
<xsl:variable name="seria" select="//Документ/серия"/>
<xsl:variable name="numdoc" select="//Документ/номер"/>
<xsl:for-each select="ВВП/ВП">
<xsl:value-of select="$num"/>
<xsl:value-of select="$seria"/><xsl:text>,</xsl:text>
<xsl:value-of select="$numdoc"/><xsl:text>,</xsl:text>
<xsl:value-of select="ВП1" /><xsl:text>,</xsl:text>
<xsl:value-of select="ВП2"/><xsl:text>,</xsl:text>
<xsl:value-of select="ВП3"/>,
</xsl:for-each>
</xsl:for-each>
</xsl:template>
то в каждой строке выводятся серия и номер из первого поручения.
В чем разница между получением номера текущей позиции(итерации) и получение текущего значения тега?
...
Рейтинг: 0 / 0
организация счетчика
    #34356128
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugeneТак, а если у меня в теге Поручение содержится ещё такое
Код: plaintext
1.
2.
3.
<Документ>
   <серия></номер>
   <номер></номер>
</Документ>

вот из этого ты точно ничего не получишь :)
А на счет:
XEugeneВ чем разница между получением номера текущей позиции(итерации) и получение текущего значения тега?
Разница есть, рсказывать ломает, вывод : читай спецификацию, раздел "12.4 Различные дополнительные функции", функция current
...
Рейтинг: 0 / 0
организация счетчика
    #34356486
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разные вопросы на разных форумах задаешь XEugene или WalterScott правильно будет?
Неудивляйся SuSa и SuSanin тоже одно лицо
...
Рейтинг: 0 / 0
организация счетчика
    #34357127
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugeneто в каждой строке выводятся серия и номер из первого поручения.убери два слеша и почитай таки про контекст и селекторы, без понимания ты ничего не сможешь сделать.
...
Рейтинг: 0 / 0
организация счетчика
    #34357445
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSaXEugene или WalterScott правильно будет?
Неудивляйся SuSa и SuSanin тоже одно лицоНу вот, теперь ты знаешь, кто есть ху :-)
Но обычно я кросспостинг не практикую.

maXmoубери два слеша и почитай таки про контекст и селекторы, без понимания ты ничего не сможешь сделать.Это верно, буду читать.

А в общем проблема была в ещё и в том что я пропустил ещё один тег, который был вложен в документ
и в который было вложено всё остальное(серия, номер и т.д.). Невнимательность, мать её...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / организация счетчика
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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