2012-04-04 3 views
0

Будет ли это правильный способ объявить о том, что XML-элемент Cluster содержит (1 или более экземпляров) одного XML-элемент типа Node:XSD синтаксис для гнездования элемента в другой

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Cluster" type="Node" minOccurs=2> 
    </xs:element> 

    <xs:element name="Node"/> 
    </xs:element> 
</xs:schema> 

учебник, который я Изучение и все онлайн-ресурсы, с которыми я столкнулся, исключительно обсуждают более сложные соглашения с участием <xs:complex>, которые, как я подозреваю, являются излишними в этом случае.

+0

Этого достаточно! Добавьте также maxoccurs = unbounded. Вы можете найти некоторые рекомендации по XSD и спискам здесь: http://www.xfront.com/ElementHierarchy.html –

ответ

1

На самом деле, ваш XSD пронизан множеством проблем. Попытайтесь использовать достойный редактор XSD/XML, он должен помочь вам больше, чем вы думаете.

Проблема:

  • атрибуты мощностных (мин/макс Встречается) не применима к глобальным объявлениям элементов.
  • Если вы ссылаетесь на тип, вы должны иметь определение этого типа, простого или сложного, где-нибудь.

Я хотел бы начать с образцом XML, так как вы знаете, что уже:

<Cluster> 
    <Node>node1</Node> 
    <Node>node2</Node> 
</Cluster> 

Тогда вы могли бы использовать приличный инструмент для создания XSD, предмет, который более сложен, чем простой XML вы просто визуализируется:

<?xml version="1.0" encoding="utf-8"?> 
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)--> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Cluster"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element maxOccurs="unbounded" name="Node" type="xsd:string" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

Здесь вы можете увидеть maxOccurs, а затем изменить его на нужное значение. По мере того, как вы более знакомы с синтаксисом XSD, вы можете начать редактировать рабочий XSD во что-то, что имеет больше смысла; в конце концов, вероятность XSD может не всегда быть приятной толпой ...

+0

Спасибо за совет. С сегодняшнего дня я буду использовать XSD-редактор. – Olumide

+0

В этом примере, поскольку по умолчанию параметр 'nillable' является ложным, фрагмент' 'недействителен. – Olumide

+0

@Olumide, вы хотите разрешить пустой контент, просто установите minOccurs = 0 для элемента Node. –

0

Я не буду пытаться добавить к обсуждению этой конкретной схемы. Я бы просто сказал, что вы не должны пытаться писать какую-либо схему, даже с помощью инструментов, пока вы не изучили язык намного подробнее. Это очень сложная спецификация. Не пытайтесь прочитать спецификацию W3C; но прочитайте одну из многих хороших книг по этому вопросу, например, тот, что был у Эрика ван дер Влэста, очень доступен. Это не язык, который вы можете узнать по пробной версии и ошибке.

+0

Я читаю книгу («Профессиональный XML» Билла Эвьея в., Опубликованную Wiley) при написании моей схемы. – Olumide

+0

Быстрый вопрос. Принимая во внимание, что атрибут maxOccurs '' имеет значение по умолчанию 1, не должна быть недопустимой последовательность, состоящая из нескольких элементов (если атрибут maxOccurs не установлен на более высокое значение или неограничен). – Olumide

Смежные вопросы