Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как преобразовать динамический XML? 
:(
    Опции темы
twinsen
  Дата 15.3.2011, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Есть например вот такой XML
Код

<OrderInfoResponse Id="1798309" Name="ABCD">
  <Success/>
  <AccommodationList>
    <Accommodation Id="2474072" Name="Accommodation 01">
      <Persons>
        <Person LastName="00_АСТАНИН" FirstName="00_АНДРЕЙ"/>
      </Persons>
    </Accommodation>
    <Accommodation Id="2474073" Name="Accommodation 02">
      <Persons>
        <Person LastName="11_АСТАНИН" FirstName="11_АНДРЕЙ"/>
      </Persons>
      <Persons>
        <Person LastName="22_АСТАНИН" FirstName="22_АСТАНИН"/>
      </Persons>
    </Accommodation>
  </AccommodationList>
</OrderInfoResponse>

В одном OrderInfoResponse может быть энное количество AccommodationList с уникальным номером,
а в AccommodationList может быть энное количество Persons
Мне надо преобразовать XML  в такой формат XML (Средствами XSL)
Код

<?xml version="1.0" encoding="utf-8"?>
<dataroot>-
  <OrderInfoResponse>
    <Id>1798309</Id>
    <Name>ABCD</Name>
  </OrderInfoResponse>
  <AccommodationList>
    <OrderInfoResponseId>1798309</OrderInfoResponseId>
    <Id>2474072</Id>
    <Name>Accommodation 01</Name>   
  </AccommodationList>
  <AccommodationList>
    <OrderInfoResponseId>1798309</OrderInfoResponseId>
    <Id>2474073</Id>
    <Name>Accommodation 02</Name>
  </AccommodationList>
  <PersonList>
    <AccommodationId>2474072</AccommodationId>
    <LastName>00_АСТАНИН</LastName>
    <FirstName>00_АНДРЕЙ</FirstName>
  </PersonList>
  <PersonList>
    <AccommodationId>2474073</AccommodationId>
    <LastName>11_АСТАНИН</LastName>
    <FirstName>11_АНДРЕЙ</FirstName>
  </PersonList>
  <PersonList>
    <AccommodationId>2474073</AccommodationId>
    <LastName>22_АСТАНИН</LastName>
    <FirstName>22_АНДРЕЙ</FirstName>
  </PersonList>
</dataroot>


Подскажите плиз, возможно ли такое преобразование?  smile 
PM MAIL   Вверх
diadiavova
Дата 15.3.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(twinsen @  15.3.2011,  17:46 Найти цитируемый пост)
 возможно ли такое преобразование? 

Возможно. А какие с этим проблемы то? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
twinsen
Дата 15.3.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Основная проблема в том что это для меня ново!

Проблема выбрать часть Person только для определенного AccommodationId

PM MAIL   Вверх
diadiavova
Дата 15.3.2011, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(twinsen @  15.3.2011,  18:03 Найти цитируемый пост)
Проблема выбрать часть Person только для определенного AccommodationId

Person[Ancestor::Accommodation[@Id='2474072']]



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
twinsen
  Дата 16.3.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



так уже пробовал...
подскажите плиз где лажа (ошибка)... 
Код

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <dataroot>
      <xsl:for-each select="//OrderInfoResponse">
        <OrderInfoResponse>
          <Id>
            <xsl:value-of select="@Id"/>
            <xsl:variable name="POrderInfoResponseId" select="@Id"/>
          </Id>
          <Name>
            <xsl:value-of select="@Name"/>
          </Name>
        </OrderInfoResponse>
        <xsl:for-each select="//OrderInfoResponse/AccommodationList/Accommodation">
          <AccommodationList>
            <OrderInfoResponseId>
              <xsl:value-of select="$POrderInfoResponseId"/>
            </OrderInfoResponseId>
            <Id>
              <xsl:value-of select="@Id"/>
              <xsl:variable name="PAccommodationId" select="@Id"/>
            </Id>
            <Name>
              <xsl:value-of select="@Name"/>
            </Name>
          </AccommodationList>
          <!--Person[Ancestor::Accommodation[@Id='2474072']]-->
          <xsl:for-each select="//OrderInfoResponse/AccommodationList/Accommodation/Persons/Person[Ancestor:Accommodation[@Id=$PAccommodationId]]">
            <Person>
              <AccommodationId>
                <xsl:value-of select="$PAccommodationId"/>
              </AccommodationId>
              <LastName>
                <xsl:value-of select="@LastName"/>
              </LastName>
              <FirstName>
                <xsl:value-of select="@FirstName"/>
              </FirstName>
            </Person>
          </xsl:for-each>
        </xsl:for-each>
      </xsl:for-each>
    </dataroot>
  </xsl:template>
</xsl:stylesheet>
 
PM MAIL   Вверх
twinsen
  Дата 16.3.2011, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



удалось решить так  smile 
diadiavova Спасибо!
Код

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <dataroot>
      <xsl:for-each select="//OrderInfoResponse">
        <OrderInfoResponse>
          <Id>
            <xsl:value-of select="@Id"/>
            <xsl:variable name="POrderInfoResponseId" select="@Id"/>
          </Id>
          <Name>
            <xsl:value-of select="@Name"/>
          </Name>
        </OrderInfoResponse>
        <xsl:for-each select="/OrderInfoResponse/AccommodationList/Accommodation">
          <AccommodationList>
            <OrderInfoResponseId>
              <xsl:value-of select="$POrderInfoResponseId"/>
            </OrderInfoResponseId>
            <Id>
              <xsl:value-of select="@Id"/>
              <xsl:variable name="PAccommodationId" select="@Id"/>
            </Id>
            <Name>
              <xsl:value-of select="@Name"/>
            </Name>
          </AccommodationList>
          <xsl:for-each select="Persons/Person">
            <Person>
              <AccommodationId>
                <xsl:value-of select="$PAccommodationId"/>
              </AccommodationId>
              <LastName>
                <xsl:value-of select="@LastName"/>
              </LastName>
              <FirstName>
                <xsl:value-of select="@FirstName"/>
              </FirstName>
            </Person>
          </xsl:for-each>
        </xsl:for-each>
      </xsl:for-each>
    </dataroot>
  </xsl:template>
</xsl:stylesheet>

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.