Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / создание xslt / 8 сообщений из 8, страница 1 из 1
21.07.2007, 23:52
    #34675309
komicadze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
Народ, а есть ли софт, который автоматом xslt создает из xml?
Если ничего не такого, то может подскажете, как XML в Access импортировать, чтобы он не разлетался на кучу таблиц, а в одну? Пробовал рекордсетом, что-то не получается...:((
Хелп. Может есть софтинка какая, чтобы не мучиться?
...
Рейтинг: 0 / 0
22.07.2007, 15:46
    #34675623
komicadze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
Вот нашел пример преобразования:

автор
Образец данных для преобразования:
<?xml version="1.0" encoding="utf-8" ?>
<ROOT>
<price2>
<Cod>15987</Cod>
<ProdName>120/80 таб. 0,5 г. №100</ProdName>
<Proizv>Комфорт Комплекс</Proizv>
<PriceUSD>10,19</PriceUSD>
<PriceRUR>341,4</PriceRUR>
<Sklad>6145</Sklad>
<Pack>50</Pack>
</price2>
. . . . . . . . .
</ROOT>


Файл преобразования:

<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ROOT">
<Root>
<xsl:apply-templates select="price2"/>
</Root>
</xsl:template>
<xsl:template match="price2">
insert into table_name (cod, name, proizv) values
('<xsl:value-of select="Cod"/>',
'<xsl:value-of select="ProdName"/>',
'<xsl:value-of select="Proizv"/>')
</xsl:template>
</xsl:stylesheet>



А как быть, если вложенных уровней на одном из уровне несколько?
Например:

<ROOT>
<price2>
<Cod>15987</Cod>
<ProdName>120/80 таб. 0,5 г. №100</ProdName>
<Proizv>
<NameOrg>Комфорт Комплекс</NameOrg>
<AdressOrg>ул. Какая-то<AdressOrg>
</Proizv>
<PriceUSD>10,19</PriceUSD>
<PriceRUR>341,4</PriceRUR>
<Sklad>6145</Sklad>
<Pack>50</Pack>
</price2>
. . . . . . . . .
</ROOT>

Как в этом случае изменится преобразование?? ХЕЛП!
...
Рейтинг: 0 / 0
22.07.2007, 15:50
    #34675627
komicadze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
автор
А как быть, если вложенных уровней на одном из уровне несколько?
Например:

<ROOT>
<price2>
<Cod>15987</Cod>
<ProdName>120/80 таб. 0,5 г. №100</ProdName>
<Proizv>
<NameOrg>Комфорт Комплекс</NameOrg>
<AdressOrg>ул. Какая-то<AdressOrg>
</Proizv>
<PriceUSD>10,19</PriceUSD>
<PriceRUR>341,4</PriceRUR>
<Sklad>6145</Sklad>
<Pack>50</Pack>
</price2>
. . . . . . . . .
</ROOT>

Как в этом случае изменится преобразование?? ХЕЛП!


А еще может быть вот так:

<ROOT>
<price2>
<Cod>15987</Cod>
<ProdName>120/80 таб. 0,5 г. №100</ProdName>
<Proizv Kod="1" Status="OK">
<NameOrg>Комфорт Комплекс</NameOrg>
<AdressOrg>ул. Какая-то<AdressOrg>
</Proizv>
<PriceUSD>10,19</PriceUSD>
<PriceRUR>341,4</PriceRUR>
<Sklad>6145</Sklad>
<Pack>50</Pack>
</price2>
. . . . . . . . .
</ROOT>

Как поведет себя преобразование? Помогите, плиз...
...
Рейтинг: 0 / 0
23.07.2007, 21:53
    #34678522
komicadze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
Люди, может я не в тот раздел обратился?
...
Рейтинг: 0 / 0
24.07.2007, 09:01
    #34678828
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
Да в раздел то тот обратился, просто если молчим, значит незнаем что сказать. по крайней мере я с такого не видел и не знаю
...
Рейтинг: 0 / 0
24.07.2007, 23:49
    #34681794
komicadze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
О как...Я думал что это вообще азы...:(
...
Рейтинг: 0 / 0
25.07.2007, 10:58
    #34682297
TiG
TiG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
komicadzeО как...Я думал что это вообще азы...:(
Думаете здесь кто-нть догадывается что из себя представляет ваша модель данных в аксессе ?
komicadzeА как быть, если вложенных уровней на одном из уровне несколько?
Ну логично предположить, что для них тоже необходимо нагенерить инсертов в какие-то ваши таблички. Значит в template-е для тегов верхнего уровня необходимо сначала обрабатывать вложенные данные. Что-нть типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="ROOT">
<xsl:apply-templates select="price2"/>
</xsl:template>

<xsl:template match="price2">
<xsl:apply-templates select="Proizv"/>
insert into table_name (cod, name, proizv) values 
('<xsl:value-of select="Cod"/>',
'<xsl:value-of select="ProdName"/>',
'<xsl:value-of select="Proizv"/>')
</xsl:template>

<xsl:template match="Proizv">
insert into ....
</xsl:template>

</xsl:stylesheet>
Единственное, что необходимо будет генерировать ключи для строк с данными вложенных тегов, поскольку в вашем примере в xml-е их нет. Если структура простая, данные не повторяются, можно использовать что-нть простое - например position() в качестве значения ключа. Если что-то сложнее - смотреть по ситуации. Если данные повторяются - можно тем не менее формировать отдельные инсерты для каждой строки, а дубликаты устранить уже в бд - привычными селектами-апдейтами.
...
Рейтинг: 0 / 0
25.07.2007, 21:09
    #34684236
komicadze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание xslt
TiG
Думаете здесь кто-нть догадывается что из себя представляет ваша модель данных в аксессе ?

Собственно модели и нет :) А какая она должна быть? Есть просто необходимость загонять данные из xml с определенной структурой в одну таблицу access, а не в несколько.
TiG
Ну логично предположить, что для них тоже необходимо нагенерить инсертов в какие-то ваши таблички. Значит в template-е для тегов верхнего уровня необходимо сначала обрабатывать вложенные данные.
Понятно, т.е. первоначально обрабатываются теги самого нижнего уровня и от них идем к верхнем?
Что-нть типа
TiG
Единственное, что необходимо будет генерировать ключи для строк с данными вложенных тегов, поскольку в вашем примере в xml-е их нет. Если структура простая, данные не повторяются, можно использовать что-нть простое - например position() в качестве значения ключа. Если что-то сложнее - смотреть по ситуации. Если данные повторяются - можно тем не менее формировать отдельные инсерты для каждой строки, а дубликаты устранить уже в бд - привычными селектами-апдейтами.
Надо, данные с различными уровнями вложенности привести к одной строке в таблице и так последовательно для каждого отдельного XML-файла. Для этого все равно ключи нужны? Можно ведь наверное просто сделать, чтобы данные более высокого уровня просто повторялись для данных более низкого. Например, первый тег содержит название файла, в котором может быть 15 блоков. Нужно, чтобы в каждой строке таблицы было название этого файла, а остальные данные уже относились каждые к своему блоку.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / создание xslt / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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