Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Импортирование данных из XML / 6 сообщений из 6, страница 1 из 1
06.08.2007, 12:24
    #34707412
DelphiLexx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортирование данных из XML
Есть XML файл созданный моей программой, данными XML файла являются данные БД1
Вот часть кода моего xml'a

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="Windows-1251" ?> 
<Main>
<RAW_DICT>
    <RAW_DICT_ROW RAW_ID="4" RAW_GROUP_ID="5" RAW_NAME="Название сырья №1" DESCRIPTION="">
      <RAW_QM_VALUE>
        <RAW_QM_VALUE_ROW QM_ID="10" QM_VALUE="27"/>
        <RAW_QM_VALUE_ROW QM_ID="5" QM_VALUE="0"/>
        <RAW_QM_VALUE_ROW QM_ID="4" QM_VALUE="1.1"/>
        <RAW_QM_VALUE_ROW QM_ID="9" QM_VALUE="12"/>
      </RAW_QM_VALUE>
    </RAW_DICT_ROW>
</RAW_DICT>
<CONTENTS>
 <CONTENTS_ROW RCP_CONTENTS_ID="-3142" RAW_ID="4" PERCENT="22">
  <RCP_QM_VALUE>
   <RCP_QM_VALUE_ROW QM_ID="47" QM_VALUE="183" /> 
   <RCP_QM_VALUE_ROW QM_ID="6" QM_VALUE="32.5" /> 
  </RCP_QM_VALUE>
 </CONTENTS_ROW>
</CONTENTS>
</Main>

Дело в том что при вставке в БД2, (БД2 имеет идентичную стуктуру БД1), значение RAW_ID берется не из тэга <RAW_DICT_ROW>, а из генератора таблицы RAW_DICT БД2, т.е. может взяться не 4 (для данного примера), а, например, 25. В связи с этим для корректного импорта необходимо в XML - документе заменить RAW_ID = 4, на RAW_ID = 25. Можно ли эти трюки делать средствами самого XML?
...
Рейтинг: 0 / 0
07.08.2007, 09:52
    #34709508
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортирование данных из XML
Ну не совсем средствами самого xml, но с помощью встроенного парсера в браузер (IE6) вполне можно
В самом верху надо прописать строчку (вот убей непомню как она пишется, вспомню напишу) с формированием xml на основе xsl файла.
В xsl написать шаблон
Код: plaintext
1.
2.
<xsl:template match="//RAW_DICT_ROW[@RAW_ID="4"]">
<!--и сдесь переприсванивание значения атрибута на нужное тебе значение -->
</xsl:template>

Примерно так.
...
Рейтинг: 0 / 0
07.08.2007, 10:41
    #34709697
Pasionario
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортирование данных из XML
Эта строчка
<?xml-stylesheet type="text/xsl" href="years.xsl"?>
...
Рейтинг: 0 / 0
07.08.2007, 10:56
    #34709771
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортирование данных из XML
Точно, она родимая :)
...
Рейтинг: 0 / 0
07.08.2007, 12:05
    #34710121
DelphiLexx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортирование данных из XML
SuSaТочно, она родимая :)
Ну а как в итоге должен выглядеть код?
...
Рейтинг: 0 / 0
07.08.2007, 18:46
    #34712101
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортирование данных из XML
xml:
Код: plaintext
1.
2.
3.
4.
<?xml-stylesheet type="text/xsl" href="3.xsl"?>
<Main>
<!--Твое содержание-->
</Main>
xsl:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
 <xsl:template match="/">
                <xsl:copy>
                    <xsl:apply-templates select="node()|@*"/>
                </xsl:copy>
 </xsl:template>
  <xsl:template match="node()|@*">
        <xsl:choose>
            <xsl:when test="name()!='RAW_DICT_ROW'">
                <xsl:copy>
                    <xsl:apply-templates select="node()|@*"/>
                </xsl:copy>
            </xsl:when>
            <xsl:otherwise>
        <xsl:if test="RAW_DICT_ROW[@RAW_ID='4']">
<!-- Тут меняешь значение на какое надо-->
</xsl:if>
            </xsl:otherwise>
        </xsl:choose>
        </xsl:template>
</xsl:stylesheet>
примерно так
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Импортирование данных из XML / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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