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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование XML в дерево 
V
    Опции темы
jekacorvus
Дата 28.12.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!!!
Помогите пожалуйста!!!

есть вот такой код

    <Группа Идентификатор="ID00000002" Наименование="Гладкоствольное оружие"/>
    <Группа Идентификатор="ID020070" Наименование="ИМПОРТНОЕ" Родитель="ID00000002"/>
    <Группа Идентификатор="ID020088" Наименование="ALTAY" Родитель="ID020070"/>

т.е. у Группа - есть Идентификатор и Родитель, нужно сделать вложенность


    <Группа Идентификатор="ID00000002" Наименование="Гладкоствольное оружие">
       <Группа Идентификатор="ID020070" Наименование="ИМПОРТНОЕ" Родитель="ID00000002">
          <Группа Идентификатор="ID020088" Наименование="ALTAY" Родитель="ID020070">
          </Группа>
       </Группа>
    </Группа>



Это сообщение отредактировал(а) jekacorvus - 28.12.2008, 15:50
PM MAIL   Вверх
sir_nuf_nuf
Дата 28.12.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



jekacorvus, это не код. это просто три строки. припишите к ним снизу
</Группа>
</Группа>
</Группа>
и получите то что просили.

Если же это все таки код - то присыдайте XML полностью. А так же условия - на каком языке это пытаемся реализовать


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
jekacorvus
Дата 28.12.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(sir_nuf_nuf @ 28.12.2008,  16:46)
jekacorvus, это не код. это просто три строки. припишите к ним снизу
</Группа>
</Группа>
</Группа>
и получите то что просили.

Если же это все таки код - то присыдайте XML полностью. А так же условия - на каком языке это пытаемся реализовать

извините

вот XML,который нужно обработать с помощью XSLT
здесь получается у группы и у товара указан Родитель, но они не включены друг в друга


<КоммерческаяИнформация>
  <Каталог>
    <Группа Идентификатор="ID00000002" Наименование="Гладкоствольное оружие"/>
    <Группа Идентификатор="ID020070" Наименование="ИМПОРТНОЕ" Родитель="ID00000002"/>
    <Группа Идентификатор="ID020088" Наименование="ALTAY" Родитель="ID020070"/>
    <Товар Идентификатор="ID02_473" Наименование="ALTAY de Lux к.12х76 отборный орех 5 д/н" Родитель="ID020088" Единица="ед">
      <ЗначениеСвойства Значение="ALTAY de Lux к.12х76 отборный орех 5 д/н"/>
    </Товар>
    <Товар Идентификатор="ID02_472" Наименование="ALTAY Special к.12х76 отборный орех 5 д/н" Родитель="ID020088" Единица="ед">
      <ЗначениеСвойства Значение="ALTAY Special к.12х76 отборный орех 5 д/н"/>
    </Товар>
  </Каталог>
</КоммерческаяИнформация>


должен получить на выходе XML с нормальной вложенностью


<КоммерческаяИнформация>
  <Каталог>
    <Группа Идентификатор="ID00000002" Наименование="Гладкоствольное оружие">
      <Группа Идентификатор="ID020070" Наименование="ИМПОРТНОЕ" Родитель="ID00000002">
        <Группа Идентификатор="ID020088" Наименование="ALTAY" Родитель="ID020070">
          <Товар Идентификатор="ID02_473" Наименование="ALTAY de Lux к.12х76 отборный орех 5 д/н" Родитель="ID020088" Единица="ед">
            <ЗначениеСвойства Значение="ALTAY de Lux к.12х76 отборный орех 5 д/н"/>
          </Товар>
          <Товар Идентификатор="ID02_472" Наименование="ALTAY Special к.12х76 отборный орех 5 д/н" Родитель="ID020088" Единица="ед">
            <ЗначениеСвойства Значение="ALTAY Special к.12х76 отборный орех 5 д/н"/>
          </Товар>
        </Группа>
      </Группа>
    </Группа>
  </Каталог>
</КоммерческаяИнформация>

Это сообщение отредактировал(а) jekacorvus - 28.12.2008, 19:27
PM MAIL   Вверх
sir_nuf_nuf
Дата 28.12.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(jekacorvus @  28.12.2008,  17:07 Найти цитируемый пост)
извините
 все ок  smile 
хм.. все не тривиально. Вложенность Групп произвольная ?

Это сообщение отредактировал(а) sir_nuf_nuf - 28.12.2008, 18:40


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
jekacorvus
Дата 28.12.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(sir_nuf_nuf @ 28.12.2008,  17:42)
Вложенность Групп произвольная ?

здесь получается у группы и у товара указан id родителя - Родитель
и нужно вложить дочерние в родительские
вложенность может быть любой глубины


вот что я написал


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output encoding="utf-8" method="xml" indent="yes"/>

<xsl:template match="/">
  <xsl:apply-templates mode="line"/>
</xsl:template>




<xsl:template match="*" mode="line">

<xsl:variable name="nameCat" select="//Каталог/@Наименование"/>

<Каталог Наименование="{$nameCat}">
        <xsl:apply-templates select="//Группа" mode="item" />
</Каталог>

</xsl:template>



<xsl:template match="Группа" mode="item">
    
  <Группа>
    <Наименование>
      <xsl:value-of select="@Наименование"/>
    </Наименование>
    <Идентификатор>
      <xsl:value-of select="@Идентификатор"/>
    </Идентификатор>
    <ИдентификаторВКаталоге>
      <xsl:value-of select="@ИдентификаторВКаталоге"/>
    </ИдентификаторВКаталоге>
    <Родитель>
      <xsl:value-of select="@Родитель"/>
    </Родитель>

    <xsl:variable name="identId" select="@Идентификатор"/>
    
    <xsl:apply-templates select="//Группа[@Родитель = $identId]" mode="item" />
        
   </Группа>
  
</xsl:template>


</xsl:stylesheet>



но здесь получается проблемка в том, что берется первый элемент, для него ищутся потомки, вставляются как надо. А потом тот же потомок получается корневым, т.е. попроще, очень много повторов. Я думал завести какой массив и загонять обработанные id элементов в массив, чтобы избавиься от повторов, а потом просто проверять на существование данного элемента в массиве и если есть, то не обрабатывать. Но не знаю можно ли такое в xslt. 
Или какой-нибудь другой вариант.

Это сообщение отредактировал(а) jekacorvus - 28.12.2008, 22:21
PM MAIL   Вверх
sir_nuf_nuf
Дата 29.12.2008, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



jekacorvus, у меня XSLT тупил с русскими именами - не стал разбираться - написал все английскими
XML:
Код

<?xml version="1.0" encoding="koi8-r"?>
<CommercialInfo>
    <Catalog>
        <Group Identifier="ID00000002" Name="Гладкоствольное оружие"/>
        <Group Identifier="ID020070" Name="ИМПОРТНОЕ" Parent="ID00000002"/>
        <Group Identifier="ID020088" Name="ALTAY" Parent="ID020070"/>
        <Article Identifier="ID02_473" Name="ALTAY de Lux к.12х76 отборный орех 5 д/н" Parent="ID020088" Unit="ед">
            <PropertyValue Value="ALTAY de Lux к.12х76 отборный орех 5 д/н"/>
        </Article>
        <Article Identifier="ID02_472" Name="ALTAY Special к.12х76 отборный орех 5 д/н" Parent="ID020088" Unit="ед">
            <PropertyValue Value="ALTAY Special к.12х76 отборный орех 5 д/н"/>
        </Article>
        <Group Identifier="ID00000003" Name="Утка резиновая"/>
        <Group Identifier="ID020071" Name="Отечественная" Parent="ID00000003"/>
        <Group Identifier="ID020089" Name="DUCK" Parent="ID020071"/>
        <Article Identifier="ID02_474" Name="SUPER DUCK de Lux yellow отборный латекс 5 д/н" Parent="ID020089" Unit="ед">
            <PropertyValue Value="SUPER DUCK de Lux yellow отборный латекс 5 д/н"/>
        </Article>
        <Article Identifier="ID02_475" Name="DONALD DUCK Special отборный латекс 5 д/н" Parent="ID020089" Unit="ед">
            <PropertyValue Value="DONALD DUCK Special отборный латекс 5 д/н"/>
        </Article>
    </Catalog>
</CommercialInfo>

XSLT:
Код

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="koi8-r" method="xml" indent="yes"/>
    <xsl:template match="/">
        <xsl:apply-templates mode="m1"/>
    </xsl:template>

    <!-- m1 mode - copy all other nodes, exept for Articles and Groups -->
    <xsl:template match="node()" mode="m1">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates select="*" mode="m1"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="//Article" mode="m1">
    </xsl:template>

    <xsl:template match="//Group" mode="m1">
    </xsl:template>

    <!-- matches only first group tag in sequence -->
    <xsl:template match="//Group[local-name(./preceding-sibling::*[1]) != 'Group']" mode="m1">
        <!-- enter recursion mode -->
        <xsl:apply-templates select="." mode="m2"/>
    </xsl:template>
    
    <!-- m2 mode - copy only groups and articles -->
    <!-- groups are copied recursively -->
    <xsl:template match="//Group" mode="m2">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <xsl:choose>
                <xsl:when test="local-name(./following-sibling::*[1])='Group'">
                    <xsl:apply-templates select="./following-sibling::*[1]" mode="m2"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates select="./following-sibling::*[1]" mode="m2"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:copy>
    </xsl:template>

    <!-- Articles are copied one by one until next group tag found -->
    <xsl:template match="//Article" mode="m2">
        <xsl:copy-of select="."/>
        <xsl:if test="local-name(./following-sibling::*[1])='Article'">
            <xsl:apply-templates select="./following-sibling::*[1]" mode="m2"/>
        </xsl:if>
    </xsl:template>

</xsl:stylesheet>


результат:
Код

<?xml version="1.0" encoding="koi8-r"?>
<CommercialInfo>
  <Catalog>
    <Group Identifier="ID00000002" Name="Гладкоствольное оружие">
      <Group Identifier="ID020070" Name="ИМПОРТНОЕ" Parent="ID00000002">
        <Group Identifier="ID020088" Name="ALTAY" Parent="ID020070">
          <Article Identifier="ID02_473" Name="ALTAY de Lux к.12х76 отборный орех 5 д/н" Parent="ID020088" Unit="ед">
            <PropertyValue Value="ALTAY de Lux к.12х76 отборный орех 5 д/н"/>
          </Article>
          <Article Identifier="ID02_472" Name="ALTAY Special к.12х76 отборный орех 5 д/н" Parent="ID020088" Unit="ед">
            <PropertyValue Value="ALTAY Special к.12х76 отборный орех 5 д/н"/>
          </Article>
        </Group>
      </Group>
    </Group>
    <Group Identifier="ID00000003" Name="Утка резиновая">
      <Group Identifier="ID020071" Name="Отечественная" Parent="ID00000003">
        <Group Identifier="ID020089" Name="DUCK" Parent="ID020071">
          <Article Identifier="ID02_474" Name="SUPER DUCK de Lux yellow отборный латекс 5 д/н" Parent="ID020089" Unit="ед">
            <PropertyValue Value="SUPER DUCK de Lux yellow отборный латекс 5 д/н"/>
          </Article>
          <Article Identifier="ID02_475" Name="DONALD DUCK Special отборный латекс 5 д/н" Parent="ID020089" Unit="ед">
            <PropertyValue Value="DONALD DUCK Special отборный латекс 5 д/н"/>
          </Article>
        </Group>
      </Group>
    </Group>
  </Catalog>
</CommercialInfo>


Вообщем, я немного усложнил, что бы корректно работало, когда несколько групп, потом товары, потом опять несколько групп..
Группа
Группа
Товар
Товар
Группа
Товар

Если таого не будет использовать - то все даже проще...


P.S. кстати, спасибо за хорошую задачку!  smile 


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
jekacorvus
Дата 29.12.2008, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вообще большое пожалуйста!!!

Я и сам задолбался, пока настроил русский.
А вообще, огромное человеческое спасибо!!!

Чтобы был рядом, угостил бы большой шоколадкой!!!

И ты угадал со структурой, оно так и есть
Группа
Группа
Товар
Товар
Группа
Товар

СПАСИБО тебе sir_nuf_nuf  smile !!!

Это сообщение отредактировал(а) jekacorvus - 29.12.2008, 02:59
PM MAIL   Вверх
sir_nuf_nuf
Дата 29.12.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не за что =)

P.S. 
если проблема решена - тему нужно закрыть. Поищите кнопку.
особую благодарность можно выражать "+" к репутации  smile 



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
jekacorvus
Дата 31.12.2008, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я бы с радостью повысить репутацию, но мне написали

Обнаружена ошибка:


У Вас недостаточно постов, чтобы изменять репутацию пользователей. Необходимо 100 постов.

Это сообщение отредактировал(а) jekacorvus - 31.12.2008, 01:04
PM MAIL   Вверх
jekacorvus
Дата 9.1.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как оказалось, я сначало не заметил как получилось. А оказалось xml имеет немного другой вид:

Код

<?xml version="1.0" encoding="koi8-r"?>
<CommercialInfo>
    <Catalog>
        <Group Identifier="ID00000002" Name="Гладкоствольное оружие"/>
        <Group Identifier="ID020070" Name="ИМПОРТНОЕ" Parent="ID00000002"/>
        <Group Identifier="ID020088" Name="ALTAY" Parent="ID020070"/>
        <Article Identifier="ID02_473" Name="ALTAY de Lux к.12х76 отборный орех 5 д/н" Parent="ID020088" Unit="ед">
            <PropertyValue Value="ALTAY de Lux к.12х76 отборный орех 5 д/н"/>
        </Article>
        <Article Identifier="ID02_472" Name="ALTAY Special к.12х76 отборный орех 5 д/н" Parent="ID020088" Unit="ед">
            <PropertyValue Value="ALTAY Special к.12х76 отборный орех 5 д/н"/>
        </Article>
        <Group Identifier="ID00000003" Name="Утка резиновая" Parent="ID00000002"/>
        <Group Identifier="ID020071" Name="Отечественная" Parent="ID00000003"/>
        <Group Identifier="ID020089" Name="DUCK" Parent="ID020071"/>
        <Article Identifier="ID02_474" Name="SUPER DUCK de Lux yellow отборный латекс 5 д/н" Parent="ID020089" Unit="ед">
            <PropertyValue Value="SUPER DUCK de Lux yellow отборный латекс 5 д/н"/>
        </Article>
        <Article Identifier="ID02_475" Name="DONALD DUCK Special отборный латекс 5 д/н" Parent="ID020089" Unit="ед">
            <PropertyValue Value="DONALD DUCK Special отборный латекс 5 д/н"/>
        </Article>
        <Group Identifier="ID00000005" Name="Утка резиновая"/>
        <Group Identifier="ID020078" Name="Отечественная" Parent="ID00000005"/>
        <Group Identifier="ID020083" Name="DUCK" Parent="ID020078"/>
        <Article Identifier="ID02_474" Name="SUPER DUCK de Lux yellow отборный латекс 5 д/н" Parent="ID020083" Unit="ед">
            <PropertyValue Value="SUPER DUCK de Lux yellow отборный латекс 5 д/н"/>
        </Article>
        <Article Identifier="ID02_475" Name="DONALD DUCK Special отборный латекс 5 д/н" Parent="ID020083" Unit="ед">
            <PropertyValue Value="DONALD DUCK Special отборный латекс 5 д/н"/>
        </Article>
    </Catalog>
</CommercialInfo>



Все дело в том что структура следующая
Группа1
 Группа2 Родитель=Группа1
  Группа3 Родитель=Группа2
   Товар Родитель=Группа3
   Товар Родитель=Группа3
   Товар Родитель=Группа3
 Группа4 Родитель=Группа2
  Группа5 Родитель=Группа4
   Товар Родитель=Группа5
   Товар Родитель=Группа5
   Товар Родитель=Группа5
Группа6
 Группа7 Родитель=Группа6
  Группа8 Родитель=Группа7
   Товар Родитель=Группа8
   Товар Родитель=Группа8
   Товар Родитель=Группа8
и т.д.


Потому тот код xsl не совсем правильно работает


PM MAIL   Вверх
jekacorvus
Дата 13.1.2009, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, я уже сделал. Вот код, правда с добавками немного


Код


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output encoding="utf-8" method="xml" indent="yes"/>

<!-- ************************************************************************************************************************** -->

<xsl:template match="/">
  <xsl:apply-templates mode="line"/>
</xsl:template>

<!-- ************************************************************************************************************************** -->

<xsl:template match="*" mode="line">

    <КоммерческаяИнформация xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="file:/E:/1C/CommerceML2.0.xsd" ВерсияСхемы="ВерсияСхемы0" ДатаФормирования="2006-05-04T18:13:51.0Z">
        <Классификатор>
            <Группы>
                <xsl:apply-templates select="//Группа" mode="item" />
            </Группы>
        </Классификатор>

        
        <xsl:apply-templates select="//Каталог" mode="prod" />


    </КоммерческаяИнформация>

</xsl:template>

<!-- ************************************************************************************************************************** -->

<xsl:template match="//Каталог" mode="prod">

    <xsl:copy>
        <xsl:copy-of select="@*"/>
        <Товары>
            <xsl:apply-templates select="//Товар" mode="prod" />
        </Товары>
    </xsl:copy>

</xsl:template>

<!-- ************************************************************************************************************************** -->

<!-- ************************************************************************************************************************** -->

<xsl:template match="//Товар" mode="prod">
    
    <xsl:copy>
        <xsl:copy-of select="@*"/>

          <Ид><xsl:value-of select="@ИдентификаторВКаталоге"/></Ид>
          <Наименование><xsl:value-of select="@Наименование"/></Наименование>
          <Группы>
                <Ид><xsl:value-of select="substring(@Родитель, 3)"/></Ид>
          </Группы>

    </xsl:copy>
  
</xsl:template>

<!-- ************************************************************************************************************************** -->

<!-- ************************************************************************************************************************** -->

<xsl:template match="//Группа[@Родитель]" mode="item">
</xsl:template>

<!-- ************************************************************************************************************************** -->

<xsl:template match="Группа" mode="item">
    
    <xsl:copy>
        <xsl:copy-of select="@*"/>

            <xsl:variable name="identId" select="@Идентификатор"/>
    
          <Ид><xsl:value-of select="@ИдентификаторВКаталоге"/></Ид>
          <Наименование><xsl:value-of select="@Наименование"/></Наименование>
          <Группы>
                <xsl:apply-templates select="//Группа[@Родитель = $identId]" mode="item1" />
          </Группы>

    </xsl:copy>
  
</xsl:template>

<!-- ************************************************************************************************************************** -->

<xsl:template match="Группа" mode="item1">
    
    <xsl:copy>
        <xsl:copy-of select="@*"/>

        <xsl:variable name="identId1" select="@Идентификатор"/>

        <xsl:choose>
            <xsl:when test="//Группа[@Родитель = $identId1]">
              <Ид><xsl:value-of select="@ИдентификаторВКаталоге"/></Ид>
              <Наименование><xsl:value-of select="@Наименование"/></Наименование>
              <Группы>
                <xsl:apply-templates select="//Группа[@Родитель = $identId1]" mode="item1" />
              </Группы>
            </xsl:when>
            <xsl:otherwise>
              <Ид><xsl:value-of select="@ИдентификаторВКаталоге"/></Ид>
              <Наименование><xsl:value-of select="@Наименование"/></Наименование>
                <xsl:apply-templates select="//Группа[@Родитель = $identId1]" mode="item1" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:copy>
  
</xsl:template>

<!-- ************************************************************************************************************************** -->

</xsl:stylesheet>




Спасибо!!!

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

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

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

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

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


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

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


 




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


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

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