У нас возникли проблемы с написанием правильного (действительного) xsd:
- XSD должен подтвердить на http://www.w3.org/2001/03/webdata/xsv
- должна быть возможность добавить схему в коллекцию схем сервера SQL (тест CREATE XML SCHEMA COLLECTION AS '[xsd here]'
- нам нужно, чтобы значения атрибута title были указаны в xsd
Это (кардинально упрощенная) структура XML:
1) Это была наша первая версия (которая, очевидно, недействительна): вы не можете иметь 2 элемента с именем 'input', которые отличаются .
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="test">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="input">
<xsd:complexType>
<xsd:attribute name="title" fixed="Pretty title" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="input">
<xsd:complexType>
<xsd:attribute name="title" fixed="Different title" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
2) вторая попытка:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="test" type="Test"/>
<xsd:complexType name="input1">
<xsd:attribute name="title" fixed="Pretty title" use="required"/>
</xsd:complexType>
<xsd:complexType name="input2">
<xsd:attribute name="title" fixed="Different title" use="required"/>
</xsd:complexType>
<xsd:complexType name="Test">
<xsd:sequence>
<xsd:element name="input" type="input1"/>
<xsd:element name="input" type="input2"/>
</xsd:sequence>
</xsd:complexType>
- w3.org выдает то же сообщение об ошибке, что и раньше: недопустимая переопределение {None}: ввод
- xmlspy сообщает нам, что это действительный xsd
- Сервер SQL выдает ошибку: модель содержимого типа «Test» содержит два элемента с одинаковым именем «input» и ограничениями различных типов, nillability или value.
Было бы замечательно, если бы кто-нибудь дал нам некоторое представление об этом.
Мана.
ps: На самом деле, наши XML-структуры намного сложнее, чем пример. Мы создаем генератор веб-форм.
Вот еще один (все еще простой) пример:
<?xml version="1.0" encoding="UTF-8"?>
<ZForm title="main title" attachment="attachment1" type="NM08">
<Part title="part title">
<SubTitle code="I.1)" title="title 1"/>
<ShortText title="short text title 1"/>
<SubTitle code="I.2)" title="title 2" subtitle="subtitle 1"/>
<SelectList type="select type" title="select title"/>
<ShortText title="short text title 2"/>
<MultiSelectList type="multiType2" title="multi select title"/>
<RadioButtonList type="yesNo" title="lala"/>
<SubTitle code="I.3)" title="some other title" subtitle="what?"/>
<MultiSelectList type="multiType2" title=""/>
</Part>
<Part title="second part title">
<Repeater add="add a new repeater item" remove="remove last repeating part">
<RepeatingPart>
<SubTitle code="II.1)" title="tiiiiiitle"/>
<ShortText/>
</RepeatingPart>
</Repeater>
</Part>
</ZForm>