xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Вопросы по схеме


Автор Сообщение
Maxis
Гость




[4919] Ср Авг 27, 2003 12:26
Вопросы по схеме
1. Как в схеме определить что атрибут элемента может принимать только значения из списка?
т.е. например: <sex value="male"> value может быть male, female, none

2. В схеме определено что элемент может содержать в себе конкретный набор элементов. Как определить что кроме этого конкретного набора могут быть и другие:

<root>
<!-- элементы, которые должны присутствовать обязательно-->
<global> ... </global>
<settings> ... </settings>

<!-- элементы, которые пользователь может добавить при желании-->
<newsection> ... </newsection>
<newsecondsection> ... </newsecondsection>
...
</root>

3. Как определить в схеме что элемент может содержать любое количество элементов, но строго определенного вида. например:
<fields>
<field1 value="sdsd" />
<field2 value="sdsd" />
<field3 value="sdsd" />
<field4 value="sdsd" />
</fields>
т.е элементы в fields должны быть <field# value="string/>

И вообще, где можно подробно почитать про схемы и желательно на русском?
Paranorm
Студент

Зарегистрирован: 24.04.2002
Сообщения: 81

Посетить сайт автора
[4922] Ср Авг 27, 2003 15:23
Re: Вопросы по схеме

Maxis писал(а):

1. Как в схеме определить что атрибут элемента может принимать только значения из списка?
т.е. например: <sex value="male"> value может быть male, female, none



Описываем в нужном месте схемы элемент
<xs:element name="sex" type="TGender"/>

Теперь опишем данный тип:

<xs:complexType name="TGender">
<xs:attribute name="value" type="TGenderValue"/>
</xs:complexType>

И тип перечисления для аттрибута:

<xs:simpleType name="TGenderValue">
<xs:restriction base="xs:string">
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
Paranorm
Студент

Зарегистрирован: 24.04.2002
Сообщения: 81

Посетить сайт автора
[4923] Ср Авг 27, 2003 15:42
Re: Вопросы по схеме

Maxis писал(а):

2. В схеме определено что элемент может содержать в себе конкретный набор элементов. Как определить что кроме этого конкретного набора могут быть и другие:

<root>
<!-- элементы, которые должны присутствовать обязательно-->
<global> ... </global>
<settings> ... </settings>

<!-- элементы, которые пользователь может добавить при желании-->
<newsection> ... </newsection>
<newsecondsection> ... </newsecondsection>
...
</root>



Элементы необязательного набора: newsection, newsecondsection предопределены или они могут быть вообще какими угодно?

Maxis писал(а):

3. Как определить в схеме что элемент может содержать любое количество элементов, но строго определенного вида. например:
...skipped...
т.е элементы в fields должны быть <field# value="string/>



Судя по всему, так сделать нельзя. С первого взягляда кажется, что ваш словарь (xml-документ) неправильно спроектиирован, хотя я могу и ошибаться не зная деталей.
В этом случае стоит перепроектировать таким образом:

<fields>
<field number="1" value="sdsd" />
<field number="2" value="sdsd" />
<field number="3" value="sdsd" />
<field number="4" value="sdsd" />
</fields>
Paranorm
Студент

Зарегистрирован: 24.04.2002
Сообщения: 81

Посетить сайт автора
[4924] Ср Авг 27, 2003 15:52
Re: Вопросы по схеме

Maxis писал(а):

И вообще, где можно подробно почитать про схемы и желательно на русском?



Это САМЫЙ сложный вопрос.
Кое-что можно посмотреть в русских школах W3C: http://xml.nsu.ru/schema/schema_home.xml