Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Форматирование таблицы в шаблоне: for-each, не могу написать код / 13 сообщений из 13, страница 1 из 1
28.05.2010, 11:06
    #36654873
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Всем привет!
Есть 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.
<DL>
   <D>
      <Name>...</Name>
      <LT>
         <T>
            <N>..</N>
            <W>..</W>
         </T>
         <T>
            <N>..</N>
            <W>..</W>
         </T>
         ...
         ...
         <T>
            <N>..</N>
            <W>..</W>
         </T>
      </LT>
   </D>
   ...
   ...
   ...
   <D>
      <Name>...</Name>
      <LT>
         <T>
            <N>..</N>
            <W>..</W>
         </T>
         ...
         ...
         <T>
            <N>..</N>
            <W>..</W>
         </T>
      </LT>
   </D>

</DL>

Необходимо получить такую таблицу (см. аттач)


написал следующий код, но он работает неверно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<xsl:for-each select="//DL/D">
   <tr>
      <td style = 'font-size: 10pt; text-align = center'>
         <xsl:attribute name = "rowspan">
            <xsl:value-of select = "count(./LT/T)"/>
         </xsl:attribute>
         <xsl:value-of select="./N"/>
      </td>
   </tr>

   <xsl:for-each select="./LT/T">
   <tr>
      <td style = 'font-size: 10pt; text-align = left'><xsl:value-of select="./N"/></td>
      <td style = 'font-size: 10pt; text-align = center'><xsl:value-of select="./W"/></td>

   </tr>
   </xsl:for-each>   

   </xsl:for-each>
...
Рейтинг: 0 / 0
28.05.2010, 11:46
    #36655009
junb1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Если я правильно понял, что Name это первый столбец. А N, W это второй и третий столбцы

Код: 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.
	<table border="1" cellpadding="0" cellspacing="0">
		<xsl:for-each select="/DL/D">
			<tr>
				<td>
					<xsl:attribute name = "rowspan">
						<xsl:value-of select = "count(LT/T)"/>
					</xsl:attribute>
					<xsl:value-of select='Name'/>
					<br/>
				</td>

				<td>
					<xsl:value-of select='LT/T[position()=1]/N'/>
				</td>
				<td>
					<xsl:value-of select='LT/T[position()=1]/W'/>
				</td>
				<xsl:for-each select="LT/T[position()>1]">
					<tr>
						<td>
							<xsl:value-of select='N'/>
						</td>
						<td>
							<xsl:value-of select='W'/>
						</td>
					</tr>
				</xsl:for-each>
			</tr>

		</xsl:for-each>
	</table>
...
Рейтинг: 0 / 0
28.05.2010, 15:35
    #36655740
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Что-то не то. Форматирование съезжает :-(
...
Рейтинг: 0 / 0
28.05.2010, 15:45
    #36655777
junb1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
куда съезжает?
...
Рейтинг: 0 / 0
28.05.2010, 16:28
    #36655906
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Документ
...
Рейтинг: 0 / 0
28.05.2010, 16:28
    #36655907
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Шаблон
...
Рейтинг: 0 / 0
30.05.2010, 10:35
    #36657427
junb1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Уже и отвечать на ваш вопрос не хочется. Сначала даете одну структуру xml. Потом другую. Конечно оно работать не будет. Вы хоть сами знаете какие атрибуты куда надо выводить? В общем думайте. Сюда можете не отвечать :)
...
Рейтинг: 0 / 0
30.05.2010, 10:43
    #36657433
junb1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Ой.. :) простите. погорячился )). Не заметил вашу xslt. Так а что там съезжает, я так и не понял :) вроде все нормально показывает. Если вы о том, что границы таблицы не отображены, так это пустые поля. Проверяйте если ничего нет, то выводите допустим символ   такой себе пробел
...
Рейтинг: 0 / 0
30.05.2010, 10:49
    #36657440
junb1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
еще строчка выбора <xsl:for-each select="//DL/D"> выбирает все элементы D. Я так подозреваю, что там надо только подчиненные. Замените на <xsl:for-each select="DL/D"> (т.е. уберите два слеша)
...
Рейтинг: 0 / 0
31.05.2010, 06:28
    #36658239
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Приветствую!
Когда задавал вопрос, накидал примерную структуру документа, а в конкретном примере пришлось детализировать. Извините, ввел в заблуждение :-)
Документ форматируется неверно (r1.gif), надо как в r2.gif
Не совсем понял, что Вы имели в виду про <xsl:for-each select="//DL/D">, у меня такого кода нет :-(
...
Рейтинг: 0 / 0
31.05.2010, 06:28
    #36658241
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Правильный скрин
...
Рейтинг: 0 / 0
31.05.2010, 10:14
    #36658422
junb1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Код: 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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
<?xml version="1.0" encoding="Windows-1251" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html" media-type="text/html; charset=windows-1251" />
	<xsl:template match="/">
		<html>
			<head/>
			<body>
				<font face = "Arial">
					<table border = "0" width = "630">
						<xsl:for-each select="//MT">
							<table border = "1" width = "100%" cellpadding = "1" cellspacing = "0">
								<caption style = "font-size: 10pt; text-align = top">
									<b>
										<xsl:value-of select="./N"/>
									</b>
								</caption>
								<tr>
									<td style = "font-size: 10pt; width = 17%; text-align = left">D_Name</td>
									<td style = "font-size: 10pt; width = 45%; text-align = left">T_Name</td>
									<td style = "font-size: 10pt; width = 10%; text-align = center">W</td>
								</tr>
								<xsl:for-each select="//MT/DL/D">
									<xsl:if test="count(LT/*)!=0">
										<tr>
											<td style = 'font-size: 10pt; text-align = center'>
												<xsl:attribute name = "rowspan">
													<xsl:value-of select = "count(./LT/T)"/>
												</xsl:attribute>
												<xsl:value-of select="./N"/>
											</td>
											<td style = 'font-size: 10pt; text-align = left'>
												<xsl:value-of select="./LT/T[position() = 1]/N"/>
											</td>
											<td style = 'font-size: 10pt; text-align = center'>
												<xsl:value-of select="./LT/T[position() = 1]/W"/>
											</td>
										</tr>
										<xsl:for-each select="./LT/T[position() > 1]">
											<tr>
												<td style = 'font-size: 10pt; text-align = left'>
													<xsl:value-of select="./N"/>
												</td>
												<td style = 'font-size: 10pt; text-align = center'>
													<xsl:value-of select="./W"/>
												</td>
											</tr>
										</xsl:for-each>
									</xsl:if>
								</xsl:for-each>
							</table>
						</xsl:for-each>
					</table>
				</font>
			</body>
		</html>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
31.05.2010, 10:31
    #36658465
Новичок_я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форматирование таблицы в шаблоне: for-each, не могу написать код
Спасибо!
Попробую :-)
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Форматирование таблицы в шаблоне: for-each, не могу написать код / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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