Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как узнать номер строки в xsl / 22 сообщений из 22, страница 1 из 1
08.11.2017, 16:53
    #39549738
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Привет, вывожу строки в шаблон, по умолчанию при сохранении в хml2003 суммирование ячеек явную формулу проставило

<Cell ss:StyleID="s74" ss:Formula="=SUM(R[-2]C:R[-1]C)"></Cell>

Как изменить на R[-n] где n последняя строка?

Т.е. как сделать чтобы последняя строка подбивала сумму всей колонки, как узнать количество уже выведенных строк.
...
Рейтинг: 0 / 0
09.11.2017, 15:08
    #39550312
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Код: xml
1.
2.
3.
4.
5.
<xsl:template match="Cell">\
  <xsl:if test="position() = count(..\Cell)">
    ...........
  </xsl:if>
</xsl:template
...
Рейтинг: 0 / 0
09.11.2017, 15:09
    #39550315
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Или еще проще
Код: xml
1.
2.
3.
4.
5.
<xsl:template match="Cell">\
  <xsl:if test="position() = last()">
    ...........
  </xsl:if>
</xsl:template>
...
Рейтинг: 0 / 0
09.11.2017, 17:50
    #39550439
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Спасибо!
...
Рейтинг: 0 / 0
14.02.2018, 17:50
    #39601954
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Подниму тему, чето я в тот раз другим путем пошел, а сейчас таки надо определить номер строки и по этим советам не получается.
Может освежит кто.

Нужна переменная с номером последней заполненной строки. Как её получить?
...
Рейтинг: 0 / 0
14.02.2018, 18:20
    #39601967
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Вернее даже так.
Есть цикл, в котором я в зависимости от условия могу выводить строку, могу не выводить.

Если добавляют в код

<xsl:if test="position() = last()">
<Row>
<Cell ss:StyleID="Default"><Data ss:Type="String"><xsl:value-of select="last()"/></Data></Cell>
</Row>
</xsl:if>

то last = всем перебранным в цикле элементам.

Мне же просто нужен индекс строки, с которой бы продолжилось наполнение файла открой я новую строку. Дно файла)
...
Рейтинг: 0 / 0
14.02.2018, 18:21
    #39601968
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Или хотя бы дайте пожалуйста пример как счетчик-переменную вести этом формате.
...
Рейтинг: 0 / 0
14.02.2018, 18:23
    #39601969
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
leprechaunЕсть циклГде?
leprechaunЕсли добавляют в кодКуда Вы это добавляете?
...
Рейтинг: 0 / 0
14.02.2018, 18:33
    #39601975
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
У меня формируется лист с отчетом.

Сначала шапка, потом цикл наполняющий отчет данными (но не всеми подряд, выборочно от условия). А position внутри я так понял просто считает все проходы внутри этого цикла.

В конце соответственно идут итоги и на этот момент мне нужно знать сколько я уже строк реально вывел в документ, где его окончание-то.
...
Рейтинг: 0 / 0
14.02.2018, 18:35
    #39601977
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Добавлял position() и last() в цикл чтобы посмотреть как вообще работают.
...
Рейтинг: 0 / 0
15.02.2018, 14:08
    #39602351
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
leprechaunВ конце соответственно идут итогиТ.е. кода не будет
...
Рейтинг: 0 / 0
15.02.2018, 14:43
    #39602405
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Будет

Код: 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.
29.
30.
31.
...
<!--какая-то фиксированная шапка-->
<Row>
	<Cell ss:Index="3" ss:MergeAcross="2" ss:StyleID="Default"><Data ss:Type="String">Шапка: </Data></Cell>
</Row> 

<xsl:for-each select="XX/LIST_G_SUBKONTO/G_SUBKONTO">	

	<!--беру только соответствующие условию строки-->
	<xsl:if test="number(CF_SUMEND_DRPERSUBKONTO) != 0 and number(CF_SUMEND_DRPERSUBKONTO) >= number(/XX/CF_DR_SUM)"> 
	
		<Row>
			<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_SUMEND_DRPERSUBKONTO"/></Data></Cell>
			<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_DR_SUM"/></Data></Cell>	  
		</Row>				
	</xsl:if> 

	<!--last показывает общее количество итераций-->		
		<xsl:if test="position() = last()">
			<Row ss:AutoFitHeight="0" ss:Height="15">
				<Cell ss:StyleID="Default"><Data ss:Type="String">Количество строк: </Data></Cell>
				<Cell ss:StyleID="Default"><Data ss:Type="String"><xsl:value-of select="last()"/></Data></Cell>
			</Row>
		</xsl:if>
		
</xsl:for-each>

<!--Итоги-->
<Row>
	<!--Мне нужно знать сколько уже реально заполнено строк-->
</Row> 
...
Рейтинг: 0 / 0
15.02.2018, 17:30
    #39602535
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Код: xml
1.
2.
<!--Мне нужно знать сколько уже реально заполнено строк-->
<xsl:value-of select="count(XX/LIST_G_SUBKONTO/G_SUBKONTO[number(CF_SUMEND_DRPERSUBKONTO)>= number(XX/CF_DR_SUM)])"/>
...
Рейтинг: 0 / 0
15.02.2018, 18:31
    #39602592
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Antonariy
Код: xml
1.
2.
<!--Мне нужно знать сколько уже реально заполнено строк-->
<xsl:value-of select="count(XX/LIST_G_SUBKONTO/G_SUBKONTO[number(CF_SUMEND_DRPERSUBKONTO)>= number(XX/CF_DR_SUM)])"/>



Спасибо, проверил, полезно, по моему примеру строки считает.
Но я чуть упростил код, внутри еще условие которое может добавлять одну или несколько вложенных строк.
А нет возможности устроить какой-то счетчик по сработавшим командам <Row /> или просто узнать где мы позиционно в файле.
...
Рейтинг: 0 / 0
16.02.2018, 15:30
    #39603080
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
leprechaunили просто узнать где мы позиционно в файле.position()
...
Рейтинг: 0 / 0
16.02.2018, 18:50
    #39603288
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
_Vasilisk_leprechaunили просто узнать где мы позиционно в файле.position()

Наверное я туплю, но всё же
position() - возвращает позицию или индекс узла относительно всех выбранных узлов в списке узлов

разве вернет мне она номер последней выведенной строки, я так понял просто считает уровни или количество итераций
а я хочу знать сколько строк отправил в документ командой Row. Которых может быть несколько в цикле.
...
Рейтинг: 0 / 0
16.02.2018, 22:15
    #39603346
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Так?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<xsl:for-each select="XX/LIST_G_SUBKONTO/G_SUBKONTO[
  number(CF_SUMEND_DRPERSUBKONTO) != 0 and number(CF_SUMEND_DRPERSUBKONTO) >= number(/XX/CF_DR_SUM)
]">
	<Row>
		<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_SUMEND_DRPERSUBKONTO"/></Data></Cell>
		<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_DR_SUM"/></Data></Cell>	  
	</Row>				

	<!--last показывает общее количество итераций-->		
	<xsl:if test="position() = last()">
		<Row ss:AutoFitHeight="0" ss:Height="15">
			<Cell ss:StyleID="Default"><Data ss:Type="String">Количество строк: </Data></Cell>
			<Cell ss:StyleID="Default"><Data ss:Type="String"><xsl:value-of select="last()"/></Data></Cell>
		</Row>
	</xsl:if>
</xsl:for-each>
...
Рейтинг: 0 / 0
17.02.2018, 00:32
    #39603380
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
_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.
<xsl:for-each select="XX/LIST_G_SUBKONTO/G_SUBKONTO[
  number(CF_SUMEND_DRPERSUBKONTO) != 0 and number(CF_SUMEND_DRPERSUBKONTO) >= number(/XX/CF_DR_SUM)
]">
	<Row>
		<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_SUMEND_DRPERSUBKONTO"/></Data></Cell>
		<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_DR_SUM"/></Data></Cell>	  
	</Row>

	<!--Как сосчитать строки если их больше одной в цикле?-->
       <xsl:if a = "0">
	   <Row>
	   	<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_SUMEND_DRPERSUBKONTO_2"/></Data></Cell>
	   	<Cell ss:StyleID="72"><Data ss:Type="Number"><xsl:value-of select="CF_DR_SUM_2"/></Data></Cell>	  
   	   </Row>
       </xsl:if>

	<!--last показывает общее количество итераций-->		
	<xsl:if test="position() = last()">
		<Row ss:AutoFitHeight="0" ss:Height="15">
			<Cell ss:StyleID="Default"><Data ss:Type="String">Количество строк: </Data></Cell>
			<Cell ss:StyleID="Default"><Data ss:Type="String"><xsl:value-of select="last()"/></Data></Cell>
		</Row>
	</xsl:if>
</xsl:for-each>
...
Рейтинг: 0 / 0
17.02.2018, 13:19
    #39603444
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
leprechaun,

Тогда используйте способ Antonariy

Код: xml
1.
2.
3.
4.
<xsl:value-of select="
  count(XX/LIST_G_SUBKONTO/G_SUBKONTO[number(CF_SUMEND_DRPERSUBKONTO)>= number(XX/CF_DR_SUM)]) +
  count(XX/LIST_G_SUBKONTO/G_SUBKONTO[number(CF_SUMEND_DRPERSUBKONTO)>= number(XX/CF_DR_SUM) and a = 0])
"/>
...
Рейтинг: 0 / 0
19.02.2018, 15:25
    #39604287
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Вроде как-то втиснуть получается этот код. Спасибо.
Хотелось бы более простого решения, увы.
...
Рейтинг: 0 / 0
19.02.2018, 15:45
    #39604315
leprechaun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
Еще вопрос остался, а как правильно в этой конструкции суммирование делать

у меня NaN возвращает код

Код: xml
1.
<Cell ss:StyleID="Default"><Data ss:Type="String"><xsl:value-of select="sum(XX/LIST_G_SUBKONTO/G_SUBKONTO[number(CF_SUMEND_DRPERSUBKONTO) >= number(/XX/CF_DR_SUM)])"/></Data></Cell>
...
Рейтинг: 0 / 0
19.02.2018, 17:22
    #39604381
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать номер строки в xsl
leprechaunкак правильно в этой конструкции суммирование делатьЧто Вы пытаетесь просуммировать?
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как узнать номер строки в xsl / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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