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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить схему, xsd 
:(
    Опции темы
Alix
Дата 24.2.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

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



Мне требуется написать файл схемы вот к этому xml'у (в нем отражены все ситуации):
Код

<?xml version="1.0" encoding="windows-1251"?>
<catalog>

  <dir title="Звук">
     <article title = "Делаем сабвуфер"
              href  = "sound/making subwoofer/subwoofer.htm"
              price = "100"
     />
     <article title = "Моддим спикеры"
              href  = "sound/speakers/fview.htm"
              price = "80"
     />
  </dir>

  <dir title="Клава, мышь и аксессуары">
     <article title = "Встраиваем LCD в клавиатуру"
              href  = "keyboard_mouse/lcd/index.htm"
              price = "350"
     />
     <article title = "Замена светодиодов"
              href  = "keyboard_mouse/new leds/modone8.htm"
              price = "20"
     />

     <dir title="Клавиатура с LCD клавишами">
       <article title = "Новости: клавиатура с LCD клавишами"
                href  = "keyboard_mouse/lcdkeys/modding lcd-keyboard/viewnews.htm"
                price = "0"
       />
       <article title = "Optimus keyboard"
                href  = "keyboard_mouse/lcdkeys/optimus/optimus keyboard.htm"
                price = "2400"
       />

     </dir>
  </dir>

  <dir title="Охлаждение и кулеры">
    <article title = "Бесшумный комп на тепловых трубках"
             href  = "cooling_coolers/silent comp on heat-pipes/p-n0d.htm"
             price = "2000"
    />
    <article title = "RheoBus"
             href  = "cooling_coolers/rheobus/modone16.htm"
             price = "140"
    />
    <article title = "Физика водянки"
             href  = "cooling_coolers/aquacooling physics/15727.shtml.html"
             price = "0"
    />
  </dir>

  <dir title="Разное">
    <article title = "Изображения на металле"
             href  = "other/galvo-images/index.htm"
             price = "10"
    />
    
    <dir title="Информация о LCD">
      <article title = "DataVision LCD"
               href  = "other/about lcd/datavision lcd/dv16230.htm"
               price = "0"
      />
      <article title = "Hitachi-HD44780 LCD"
               href  = "other/about lcd/hitachi-hd44780/start.htm"
               price = "0"
      />
      <article title = "Управление через LPT"
               href  = "other/about lcd/lpt/pc_to_44780.htm"
               price = "0"
      />
    </dir>

  </dir>

  <article title = "какой-то заголовок"
           href  = "blablabla/index.htm"
           price = "222"
  />

</catalog>

Если кратко, то в главном "catalog" есть "dir" и "article" с такими required аттрибутами таких типов. "dir" и "article" идут в любом порядке, и в любой вложенности. Кроме, конечно, "article" который не может содержать в себе ничего, даже текста.
Я попробовал составить xsd-файл, только получился какой-то кошмар и не работает smile В частности не могу понять как сделать ссылки... Вот что у меня получилось:
Код

<?xml version="1.0" encoding="Windows-1251"?>

<xsd:schema
    xmlns:xsd           = "http://www.w3.org/2001/XMLSchema"
    elementFormDefault  = "unqualified" 
>

  <xsd:element name="catalog">
    <xsd:complexType>

      <xsd:element
        name      = "dir"
        type      = "complexType"
        minOccurs = "0"
        maxOccurs = "unbounded"
      >
        <xsd:complexType>

          <xsd:element
            ref  = "xsd:dir"            
          />

          <xsd:element
            ref  = "xsd:article"
          />

        </xsd:complexType>
      </xsd:element>

      <xsd:element
        name      = "article"
        type      = "articleType"
        minOccurs = "0"
        maxOccurs = "unbounded"
      />


    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="dirType">
    <xsd:attribute name="title" type="xsd:string" use="required" />
  </xsd:complexType>

  <xsd:complexType name="articleType">
    <xsd:attribute name="title" type="xsd:string" use="required" />
    <xsd:attribute name="href"  type="xsd:string" use="required" />
    <xsd:attribute name="price" type="xsd:positiveInteger" use="optional" />
  </xsd:complexType>


</xsd:schema>

Прошу сильно не бить, в конце концов, впервые составляю схемы, а мана нет...


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
LSD
Дата 27.2.2006, 14:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Я немного изменил способ хранения данных, вместо атрибутов я использовал вложенные элементы, т.к. их можно проверять по схеме. Вот что у меня получилось.
Сам XML:
Код
<?xml version="1.0" encoding="windows-1251"?>
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="VH_new.xsd">
  <dir>
    <title>Звук</title>
    <article>
      <title>Делаем сабвуфер</title>
      <href>sound/making subwoofer/subwoofer.htm</href>
      <price>100</price>
    </article>
    <article>
      <title>Моддим спикеры</title>
      <href>sound/speakers/fview.htm</href>
      <price>80</price>
    </article>
  </dir>
  <dir>
    <title>Клавиатура, мыши и аксессуары</title>
    <article>
      <title>Встраиваем LCD в клавиатуру</title>
      <href>keyboard_mouse/lcd/index.htm</href>
      <price>350</price>
    </article>
    <article>
      <title>Замена светодиодов</title>
      <href>keyboard_mouse/new leds/modone8.htm</href>
      <price>20</price>
    </article>
    <dir>
      <title>Клавиатура с LCD клавишами</title>
      <article>
        <title>Новости: клавиатура с LCD клавишами</title>
        <href>keyboard_mouse/lcdkeys/modding lcd-keyboard/viewnews.htm</href>
        <price>0</price>
      </article>
      <article>
        <title>Optimus keyboard</title>
        <href>keyboard_mouse/lcdkeys/optimus/optimus keyboard.htm</href>
        <price>2400</price>
      </article>
    </dir>
  </dir>
  <dir>
    <title>Охлаждение и кулеры</title>
    <article>
      <title>Бесшумный комп на тепловых трубках</title>
      <href>cooling_coolers/silent comp on heat-pipes/p-n0d.htm</href>
      <price>2000</price>
    </article>
    <article>
      <title>RheoBus</title>
      <href>cooling_coolers/rheobus/modone16.htm</href>
      <price>140</price>
    </article>
    <article>
      <title>Физика водянки</title>
      <href>cooling_coolers/aquacooling physics/15727.shtml.html</href>
      <price>0</price>
    </article>
  </dir>
  <dir>
    <title>Разное</title>
    <article>
      <title>Изображения на металле</title>
      <href>other/galvo-images/index.htm</href>
      <price>10</price>
    </article>
    <dir>
      <title>Информация о LCD</title>
      <article>
        <title>DataVision LCD</title>
        <href>other/about lcd/datavision lcd/dv16230.htm</href>
        <price>0</price>
      </article>
      <article>
        <title>Hitachi-HD44780 LCD</title>
        <href>other/about lcd/hitachi-hd44780/start.htm</href>
        <price>0</price>
      </article>
      <article>
        <title>Управление через LPT</title>
        <href>other/about lcd/lpt/pc_to_44780.htm</href>
        <price>0</price>
      </article>
    </dir>
  </dir>
  <article>
    <title>какой-то заголовок</title>
    <href>blablabla/index.htm</href>
    <price>222</price>
  </article>
</catalog>

Схема:
Код
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="article">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string"/>
        <xs:element name="href" type="xs:string"/>
        <xs:element name="price" type="xs:positiveInteger"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="dir">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="dir"/>
          <xs:element ref="article"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="catalog">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="dir"/>
        <xs:element ref="article"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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