powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите преобразовать не иерархичные данные XML
26 сообщений из 26, показаны все 2 страниц
Помогите преобразовать не иерархичные данные XML
    #36891590
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем. Ребят, я в XML ну практически вообще никак. Писал как-то преобразование через XSL, но там задача была проще.

В общем, есть XML файл, созданный при помощи экспорта из Adobe Acrobat, каждая страница представлена вот таким кодом:
Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
- <Story>
  <Kolontitul>Автомобили с крано-манипуляторными установками</Kolontitul> 
  </Story>
- <Story>
  <Zagolovok>КАМАЗ- 53228  БОРТОВОЙ с КМУ АMCO VEBA</Zagolovok> 
  </Story>
- <Figure>
  <ImageData src="images/1.Краны-манипуляторы_img_68.jpg" /> 
  </Figure>
- <Figure>
  <ImageData src="images/1.Краны-манипуляторы_img_69.jpg" /> 
  </Figure>
- <Figure>
  <ImageData src="images/1.Краны-манипуляторы_img_70.jpg" /> 
  </Figure>
- <Story>
- <TABLE_TEXT>
- <Table>
- <TR>
- <TD>
  <Table_top>Автомобиль бортовой с КМУ Amco Veba</Table_top> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>КМУ</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT>Amco Veba  823 -4S</TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Грузоподъемность на максимальном вылете, кг</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 1460 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Максимальный вылет стрелы, м</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 12 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Грузовой момент, т*м</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 20 , 40 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
  <TD /> 
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Базовое шасси</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT>КАМАЗ- 53228 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Модель автомобиля по ОТТС</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT>2784KE</TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Габаритные размеры автомобиля, мм:</TABLE_TEXT> 
  </TD>
  <TD /> 
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>- длина</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 9400 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>- ширина</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 2540 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>- высота</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 3600 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>База автомобиля, мм</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 4100  /  1320 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Колесная формула автомобиля</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT>6х6</TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Снаряженная масса, кг</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 12000 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Полная масса, кг</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 24500 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Масса перевозимого груза, кг</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 12350 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Внутренние размеры платформы, мм:</TABLE_TEXT> 
  </TD>
  <TD /> 
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>- длина</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 5900 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>- ширина</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 2470 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>- высота</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 580 </TABLE_TEXT> 
  </TD>
  </TR>
- <TR>
- <TD>
  <TABLE_TEXT>Погрузочная высота, мм</TABLE_TEXT> 
  </TD>
- <TD>
  <TABLE_TEXT> 1500 </TABLE_TEXT> 
  </TD>
  </TR>
  </Table>
  </TABLE_TEXT>
  </Story>
- <Story>
  <_No_paragraph_style_>Автомобиль оборудован бортовой 
платформой и крано-манипуляторной установкой Amco Veba и имеет возможность
 не только проводить грузоподъемные работы, но и перевозить 
грузы в условиях бездорожья. На шасси КАМАЗ- 53228  можно устанавливать краны серий
 «Стандарт» и «T» с грузовым моментом от  1  до  25 , 1  т*м.</_No_paragraph_style_> 
  <_No_paragraph_style_>Из серии «Стандарт» возможно
 установить КМУ моделей  103  3S и от  702  1S до  825  2S.</_No_paragraph_style_> 
  <_No_paragraph_style_>Из серии «Т» возможно установить 
КМУ моделей от 601T 1S до 817T 4S.</_No_paragraph_style_> 
  <_No_paragraph_style_>С характеристиками 
КМУ и навесным оборудованием к ним можно ознакомиться на страницах 
каталога  73 - 74  и на сайте www.amcoveba.ru.</_No_paragraph_style_> 
  <_No_paragraph_style_>Подробную информацию
 обо всей продукции можно найти на сайте www.chaika-service.ru.</_No_paragraph_style_> 
  </Story>

При этом начало и конец страницы никак не обозначены. Т.е. просто идут страницы одна за другой.

Какая у меня цель в идеале: получить файл (типа CSV), в котором будут колонки: название (Zagolovok), ссылки на картинки, таблица характеристик и описание. 4 колонки в итоге.

Как это возможно сделать? Как дать понять преобразователю, что страница закончилась и началась новая?

Помогите пожалуйста, кто чем может.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891656
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov,

PDF покажите, в приложенном вами XML гораздо больше информации, чем вы привели в примере.

например это и есть ваша пагинация:
Код: plaintext
1.
2.
<Story>
  <Kolontitul>Автомобили с крано-манипуляторными установками</Kolontitul> 
</Story>
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891658
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, еще, как вы себе представляете разметку в CSV?

Текст, Список картинок (разделитель какой?), таблица (тегами?), описание там тоже таблицы. параграфы, не параграфы, детально не смотрел, но куча лабуды...

разделенные запятыми значения как то не выходят, куда потом транспортить будем, Excel?
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891678
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CSV для загрузки в Virtuemart (он-лайн каталог в Joomla), в качестве ограничителей полей используются символы "~" (тильда), разделители ";" (точка с запятой).

Список картинок - отдельными колонками. Типа additional_images.
Таблица - html тэгами, она там в принципе почти в таком виде и присутствует.
Описание - вполне допустимо использование простого текста.

Для того чтобы нормально разбирать страницу, пытался добавить во все страницы новый тэг.
К примеру, пробовал заменить <story><kolontitul> на </page><page><story><kolontitul>
и потом убрать лишние включения.
Результата пока нет.

PDF мог бы показать, но он весит 52.6 мегабайт в архиве. Если это не пугает, выкладываю
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891756
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov Если это не пугает
не пугает. меня страницы 8-11 из PDF смутили, так понимаю их можно проигнорировать и добавить либо руками, либо еще как, а начиная с 12й уже все более менее единообразно идет.

Ща придумаем.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891791
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кури, че непонятно, спросишь.

формат:
~Заголовок~КартинкаКартинка~ТаблицаТаблица~<P>Текст</P><P>Текст</P>;

если, как ты говоришь, с xsl общался, то формат сам переколбасиш, как тебе будет удобно.

Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:x="adobe:ns:meta/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:stMfs="http://ns.adobe.com/xap/1.0/sType/ManifestItem#">
	<xsl:variable name="set" select="/TaggedPDF-doc/Document/Article/*" />
	<xsl:template match="/">
		<xsl:text disable-output-escaping="yes"><![CDATA[<PLAINTEXT>]]></xsl:text>
		<xsl:apply-templates select="TaggedPDF-doc/Document/Article/Story[Zagolovok]" mode="header" />
	</xsl:template>
	<xsl:template match="Story" mode="header">
		<xsl:variable name="start" select="count(preceding-sibling::*)" />
		<xsl:variable name="finish" select="count(following-sibling::Story[Zagolovok or Kolontitul][1]/preceding-sibling::*)" />

		<xsl:text>~</xsl:text>
		<xsl:value-of select="Zagolovok/text()" />
		<xsl:text>~</xsl:text>
		<xsl:apply-templates select="$set[name()='Figure' and position() > $start and position() <= $finish ]" />
		<xsl:text>~</xsl:text>
		<xsl:apply-templates select="TABLE_TEXT/Table" mode="table" />
		<xsl:apply-templates select="$set[name()='Story' and Table_top/Table and position() > $start and position() <= $finish ]/Table_top/Table" mode="table" />
		<xsl:text>~</xsl:text>
		<xsl:apply-templates select="*[not(Table or Zagolovok)]" mode="parse" />
		<xsl:apply-templates select="$set[name()='Story' and position() > $start and position() <= $finish ]" mode="parse" />
<xsl:text xml:space="preserve">;
</xsl:text>
	</xsl:template>
	<xsl:template match="Figure">
		<xsl:element name="IMG">
			<xsl:attribute name="SRC">
				<xsl:value-of select="ImageData/@src" />
			</xsl:attribute>
		</xsl:element>
	</xsl:template>
	<xsl:template match="Table|TR[not(TD[Table_top])]" mode="table">
		<xsl:copy>
			<xsl:copy-of select="@*" />
			<xsl:apply-templates mode="table" />
		</xsl:copy>
	</xsl:template>
	<xsl:template match="TD|TR[TD[Table_top]]" mode="table">
		<xsl:choose>
			<xsl:when test=".//Table_top">
				<xsl:element name="CAPTION">
					<xsl:apply-templates select=".//Table_top/node()" mode="table" />
				</xsl:element>
			</xsl:when>
			<xsl:otherwise>
				<xsl:copy>
					<xsl:copy-of select="@*" />
					<xsl:apply-templates select="TABLE_TEXT/node()" mode="table" />
				</xsl:copy>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	<xsl:template match="text()" mode="table">
		<xsl:value-of select="." />
	</xsl:template>
	<xsl:template match="Zagolovok|Kolontitul|Table" mode="parse" />
	<xsl:template match="*" mode="parse" priority="-1">
		<xsl:apply-templates mode="parse"/>
	</xsl:template>
	<xsl:template match="text()" mode="parse">
		<xsl:element name="P">
			<xsl:value-of select="." />
		</xsl:element>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891793
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угловые скобки в xPath строках < и > в исходнике были &lt; и &gt; форум слопал.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891899
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за код. Только я не вкурил, где скобки заменились. Судя по ошибкам при открытии XSL - я поменял в эти строках:
Код: plaintext
<xsl:apply-templates select="$set[name()='Figure' and position() > $start and position() <= $finish ]" />

< на lt, > на gt.

Результат на выходе - обработалось две страницы. Т.е. до самих автомобилей дело не дошло.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36891901
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста приложи файл аттачем, чтобы код не съелся, если не сложно.
Спасибо.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36892871
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36892930
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам ребята, теперь я понял, почему не работало, так как я ожидал. Сам дурак.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36893628
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я безмерно вам благодарен за выложенный код, реально всё работает.

Натолкнулся на такую сложность: ввиду того, что импорт дополнительных картинок для товаров в Virtuemart (виртуальный каталог на Joomla) нужно делать через специальный шаблон , получается, что нужно два CSV файла.

Один - список товаров с основными полями
код товара (product_sku), основная картинка товара (product_image), описание товара (product_desc), ну, и так далее.

А вторым CSV-файлом идут дополнения для загруженного списка товаров.
и там тоже присутствуют коды товара и файлы, к нему относящиеся.

Рождается такая задача: так как в исходном XML нет явно выраженного типа нумерации товаров (страниц в моем случае) то придется использовать некий счетчик, который будет присваивать каждой строке идентификатор товара. Счетчик должен иметь возможность задания начального значения, так как XML файлов будет несколько, а нумерация в базе сквозная.
При формировании первого вывода через XSL для каждого товара должна остаться одна картинка, первая. Остальные картинки (их может быть несколько, а может не быть вообще) нужно получить отдельным списком, где каждая картинка будет на новой строке и будет соответствовать коду товара присвоенному счетчиком в первом проходе.

Как-то так.

Может, как-то путано объясняю, но вроде всё разжевал. Если это возможно сделать, и не очень сложно - помогите пожалуйста доработать до ума предложенный XSL.

P.S. Я кстати, ошибся, и разделителями полей является символ ^
Я поправил ваш файл, чтобы разделение по полям (^) и ограничение (~) располагалось так, как нужно в итоге.
Также, от картинки нужно только название файла. Это в XSL тоже исправил.

Единственное, что не понял - как убрать в конце каждой страницы:
"Полный список крано-манипуляторных установок Amco Veba (этот текст может меняться) вы можете увидеть на сайте www.amcoveba.ru (этот текст может меняться) "
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36893682
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я нашел функцию, которая позволяет заменять одну строку - другой, но там нужно только точное соответствие.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36893692
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov,

а про картинки ведь был один из первых вопросов

ай-ди - тащу из РДФ метаданных, по идее он должен быть уникальным, не устроит переопределите docID или закините сверху, как параметр трансформеру.

текст с сылкой на сайт(в конце страницы) - разный, я там показал для 2х сайтов как отловить,если не боитесь, можно порезать все строки с 'www.', это уже на ваше усмотрение или добавляете сайты, определив их просмотром исходных пдф.


когда воткнете все это в цмс - сравните таблицы, есть у меня кое-какие сомнения там. пдф их крайне криво строит, вероятно прийдется за ним колспаны раставлять
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36893901
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mage.lan ,

Да, всё отлично, спасибо. Колспаны действительно нужно будет добавлять - при экспорте они не учлись, и были созданы пустые TD
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36895935
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mage.lan,

Идентификатор в RDF оказался одинаковый для всех 7ми файлов XML полученных из 7ми файлов PDF. Отсюда вопрос - чтобы использовать один шаблон XSL, не переписывая ID - можно ли как-то вытянуть в переменную название XML файла, к которому шаблон привязан?

И по поводу колспана - автоматизировать это возможно? К примеру, если в строке <TR> есть пустое <td></td>, то нужно посчитать количество TD в строке, убрать пустые и оставшийся TD поменять на TH с colspan, равном изначальному количеству TD?
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36896014
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov,

там еще инстанс-айди был, может он отличается.
не знаю, чем ты трансформишь, ежели эксплорером, просто допиши что-нить в рутовую ноду и вычитай как ид. если взрослым трансформером - закинь сверху параметр.

с таблицами побороться можно, но там надо малек подумать, нахрапом не выйдет. а думать я сенни не могу, бошка как улей, завтра на работе может чего соображу.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36896229
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mage.lan,

Да, трансформирую эксплорером, потому что он переносы строк в preserve нормально понимает, в отличии от мозиллы. А специально трансформер ставить я что-то не стал.

Инстанс - да, разный, но его почему-то не удалось зацепить. В общем, поменяю в исходном файле руками.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36897873
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov,

все темплейты у кого указан mode="table" меняешь на
Код: 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.
58.
59.
60.
61.
62.
    <xsl:template name="calc-cols">
        <xsl:param name="row" />
        <xsl:param name="cols" />

        <xsl:variable name="c">
            <xsl:choose>
                <xsl:when test="count( $row/TD ) > $cols">
                    <xsl:value-of select="count( $row/TD )" />
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="$cols" />
                </xsl:otherwise>
            </xsl:choose>
        </xsl:variable>
        <xsl:choose>
            <xsl:when test="$row/following-sibling::TR">
              <xsl:call-template name="calc-cols">
                  <xsl:with-param name="row" select="$row/following-sibling::TR[position()=1]" />
                  <xsl:with-param name="cols" select="$c" />
              </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$c" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

    <xsl:template match="Table" mode="table">
        <xsl:variable name="cols">
            <xsl:call-template name="calc-cols">
                <xsl:with-param name="row" select="TR[position()=1]" />
                <xsl:with-param name="cols" select="0" />
            </xsl:call-template>
        </xsl:variable>
        <xsl:copy>
            <xsl:apply-templates select="TR" mode="table">
                <xsl:with-param name="cols" select="$cols" />
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="TR" mode="table">
        <xsl:param name="cols" />
        <xsl:copy xml:space="preserve">
            <xsl:apply-templates select="TD" mode="table">
                <xsl:with-param name="cols" select="$cols" />
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="TD" mode="table">
        <xsl:param name="cols" />
        <xsl:copy>
              <xsl:if test="position() = last() and position() != $cols">
                  <xsl:attribute name="COLSPAN">
                      <xsl:value-of select="$cols + 1 - position()" />
                  </xsl:attribute>
              </xsl:if>
              <xsl:apply-templates mode="table" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="TABLE_TEXT|Table_top" mode="table">
        <xsl:value-of select="text()" />
    </xsl:template>
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36898554
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andry Trushin,

Каждый по отдельности? Или все с mode=table скопом на этот код?

Если заменяю каждый отдельно - получаю ошибку что cols не может быть определен несколько раз.
Если меняю все скопом - то ни одна таблица в выводе не присутствует.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36898635
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял, в чем дело, у меня несколько файлов XML, и в них видимо таблицы оформлены по-разному.
Соответственно, трансформер не всё обрабатывает.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36898672
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ссылка на файл со всеми XML и XSL, который я сейчас использую: http://ifolder.ru/19756000

К сообщению не приложился, потому что весит 200кб (ограничение - 150)
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36899250
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov,

инстанс ай-ди вычитал.
вызов таблиц поправил.

там есть еще драконы, например, с "ГАЗ-3307/09 БОРТОВОЙ" из cabin.xml (первое, что попалось под руку) таблица генерится криво изначально.

поправить конечно можно, но это уже ресурсоемко, надо смотреть все таблицы, смотреть исходники, думать алгоритм... руками в цмс править думаю займет такое же время.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36900642
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andry Trushin,

Спасибо большое.
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36927742
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу добиться - пробую по аналогии с вашим кодом:
нужно добавить во второй вывод (там где только список дополнительных картинок) еще и название товара (Zagolovok)

Скопировал туда часть кода из первого вывода
Код: plaintext
<xsl:value-of select="normalize-space(Zagolovok/text())" />
- не помогло. Этот код ничего не выводит. Что я не так сделал?
...
Рейтинг: 0 / 0
Помогите преобразовать не иерархичные данные XML
    #36928512
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov,

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


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