![]() |
|
Модераторы: diadiavova |
![]()
|
|
| nrpe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
Добрый день.
Никак не могу решить задачу, после многодневных поисков пишу к вам. У меня есть простенькая база данных в excel. Мне нужно выгрузить её на несколько сайтов в формате xml (нужно выгрузить объявления на порталы "из рук в руки", "mail.ru" и д.р.). Но у сторон, кто принимает xml - различные требования к его структуре. MS Office может создавать xml только на основе несложных примитивных xml-схем (об этом даже в ms справке написано). Чаще всего office упирается в "список в списке". Т.е. выражение типа
Я воспользовался xml редактором Altova XMLSpy. У Altova есть дополнительный модуль, который позволяет связать БД и xml-схему (и по идее получить на выходе xml-файл). Схема, сгенерированная XMLSpy на основе примерочного файла-xml портала "ИРР" ![]() Основная часть моей базы данных должна размещаться именно в теге <items>. XMLSpy в принципе видит все нужные мне теги, атрибуты, поля ![]() Но когда дополнительный модуль MapForce генерирует xml-схему (а без этого он не может устанавливать связи с БД) название полей <item> пропадает ![]() Видимо, я делаю что-то не так. Подскажите, пожалуйста, что можно сделать в моём случае? Огромное спасибо за любую полезную информацию. (полное описание xml-файла для портала "ИРР" - 1.txt, 7.4 kb и сам примерочный xml) Это сообщение отредактировал(а) nrpe - 21.9.2010, 01:30 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
nrpe, сохрани файл в любом хмл-формате и напиши для него хсл-преобразование. В результате получишь документ той структуры, которая тебе нужна.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| nrpe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
diadiavova, спасибо большое. Не могли бы Вы меня направить чуть конкретнее: можно ли использовать Altova XMLSpy или MapForce для преобразования xsl? Или посоветуйте подходящую программу.
Спасибо. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Я с этими программами не работал, поэтому не знаю какие инструменты там есть. На сколько мне известно, альтова - один из лучших инструментов для работы с хмл, так что преобразование выполнить на на ней можно наверняка, а вот какие там есть инструменты для создания преобразований я не в курсе. Сам я обычно их пишу руками в хмл-редакторе. ХМЛ-формат, создаваемый экселем, достаточно прост для понимания, так что написать для него преобразование совсем нетрудно. Если непонятно как это сделать - выложи небольшой пример исходного документа и что ты хочешь из него получить, тогда можно будет более конкретно говорить как это сделать. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| nrpe |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
Спасибо.
Одно объявление из ms office
Необходимая структура
Мне нужно перенести значения: <id>...</id> в <ad source-id="..."> <deal_type>...</deal_type> в <item name="offer">...</item> <rooms_num> в <item name="rooms">...</item> <area living="..." kitchen="..." total="..."/> в <item name="meters-living">...</item> <item name="kitchen">...</item> <item name="meters-total">...</item> <note>...</note> в <item name="title">...</item> <currency>...</currency> и <price>xxxx</price> в <price currency="...">xxxx</price> <foto1>2_1.jpg</foto1> <foto2>2_2.jpg</foto2> <foto3>2_3.jpg</foto3> <foto4>2_4.jpg</foto4> в <fotos> <foto> <url>2_1.jpg</url> </foto> <foto> <url>2_2.jpg</url> </foto> <foto> <url>2_3.jpg</url> </foto> <foto> <url>2_4.jpg</url> </foto> </fotos> *<ads> </ads> - это границы всего файла, <ad> </ad> и <offer> </offer> - границы одного объявления. Как Вы пишите преобразование в хмл-редакторе? При помощи php? А в каком редакторе? (вики считает xmlspy тоже редактором) (извините за мои поверхностные познания о xml, но работа вынудила ознакомиться в кратчайший срок) Это сообщение отредактировал(а) nrpe - 21.9.2010, 13:57 |
||||
|
|||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
nrpe, В твоем примере некоторые данные непонятно откуда берутся, так что я написал, исходя из того, что есть.
На выходе из твоего исходного документа у меня получилось следующее
Это уже зависит от задачи, если надо делать это на сервере, то можно и на пхп, а так программ, с помощью которых можно выполнить преобразование, хватает. Да без разницы, хоть в блокноте. Я пользуюсь встроенным хмл-редактором Visual Studio. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| nrpe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
Здорово! Вот это потрясающе, не ожидал таких гибких возможностей преобразования! Спасибо огромное за Ваш вклад.
А про данные, которые непонятно откуда берутся... По-видимому, они просто есть.. По крайней мере мои данные забиваются вручную. Вы мне буквально уже всё написали... Думаю что написать преобразование из <area living="..." kitchen="..." total="..."/> в <item name="meters-living">...</item> <item name="kitchen">...</item> <item name="meters-total">...</item> мне рано или поздно удастся самому : ) Правда можно этот тег (с тремя переменными одновременно) разделить на три отдельных тега в самом office. Ещё раз спасибо. Порекомендуйте, если знаете, что можно почитать новичку о xml (в студенческие года изучали html, pascal, delphi... думаю, освоить начальный xml будет не очень сложно). |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Вообще-то там все есть, я просто ошибся малость и вместо имени area написал area_living. Вот правильный вариант
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| nrpe |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
Никак не вникну как работает инструкция
<xsl:template match="//offer/*"/> (окончание "*/" которой делает её уникальной в Вашем коде) Его отсутствие даёт интересный результат между <itmes> </items>
когда в норме выглядит так
Отличия, которые заметил:
Необычная функция : ) Не получается найти её описание/работу в гугле. XMLSpy без проблем выполняет xslt. Ещё раз Вас благодарю : ) Это сообщение отредактировал(а) nrpe - 22.9.2010, 15:50 |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Для всех элементов-непосредственных потомков элемента offer возвращается пустая строка. Поскольку этот шаблон находится вначале документа, он имеет более низкий приоритет, чем шаблоны, расположенные далее и срабатывает только для тех узлов, для которых нет более высокоприоритетных шаблонов. Когда убираешь этот шаблон, эти узлы обрабатываются по-умолчанию, то есть в конечный документ копируется их текстовое содержимое. Нужного эффекта можно было достичь и по-другому, например, явно указав в apply-template какие узлы нужно обрабатывать. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| nrpe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
А могу ли я сделать копию нескольких элементов? Хотел бы скопировать название элементов и их значение из исходного документа в новый.
Т.е. сделать копирование на выход диапазона от <id> </id> до <currency> </currency> а затем преобразовывать фотографии (процесс с фотками Вы уже описали). Спасибо. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Скопировать можно с помощью элемента copy-of, а указать на первые 9 элементов списка можно так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| nrpe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
Он копирует значения элементов. А можно ли сделать полную копию?
Так чтобы в исходном документе было <price>24 000</price> <rooms_num>1</rooms_num> и на выходе тоже самое <price>24 000</price> <rooms_num>1</rooms_num> а не 24 000 1 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Да нет вообще-то. Просто в то место где должны быть копии вставь
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| nrpe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.9.2010 Репутация: нет Всего: нет |
А Вы не могли бы написать пример? В процессе экспериментирования он сначала выдавал мне хаос из "значений"... затем выдавал примерно тоже самое только из не читаемых символов (иероглифов)... а потом xmlspy начал зависать.
|
|||
|
||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |