2009-11-13 3 views
11

Я новичок в XSD, и я совершенно смущен, когда использовать атрибут и когда использовать элемент?XSD: разница между Element и Attribute

Почему мы не указываем атрибуты minOccurs и maxOccurs в атрибуте?

Кроме того, почему мы не можем указать use = "required" в элементе?

+0

Возможный дубликат [XML-атрибут против элемента XML] (http://stackoverflow.com/questions/33746/xml-attribute-vs-xml-element) – kjhughes

ответ

25

Элемент представляет собой XML-элемент - открывающий тег, некоторое содержание, закрывающий тег - они являются строительными блоками документа XML:

<test>someValue</test> 

Здесь «тест» будет элементом.

Атрибуты дополнительная информация по тегу - это «дополнение на» или дополнительная информация по элементу, но никогда не может существовать в одиночку:

<test id="5">somevalue</test> 

«Идентификатор» является атрибутом.

Вы не можете иметь несколько атрибутов с одним и тем же именем в одном теге -> minOccurs/maxOccurs не имеет смысла. Вы можете определить требуемый (или нет) атрибут - ничего другого не имеет смысла.

Элементы определяются их появлением внутри сложных типов - например. если у вас есть сложный тип с <xs:sequence> внутри - вы определяете, что все элементы должны присутствовать и должны изменяться в таком порядке:

<xs:complexType name="SomeType"> 
    <xs:sequence>  
     <xs:element name="Element1" type="xs:string" /> 
     <xs:element name="Element2" type="xs:string" /> 
    </xs:sequence> 
</xs:complexType> 

Внутри элемента этого типа, подэлементы «element1» и «Элемент2» необходим и должен появляться в этом порядке - нет необходимости «требовать» или нет (например, с атрибутами). Независимо от того, требуется ли элемент, определяется использование minOccurs и maxOccurs; оба по умолчанию равны 1, например. элемент должен произойти и может произойти только один раз. С помощью настройки этих параметров вы можете определить элемент, который будет необязательным (minOccurs = 0), или позволить ему отображаться несколько раз (maxOccurs> 1).

Я настоятельно рекомендую вам ознакомиться с W3Schools Tutorial on XML Schema и узнать больше о схеме XML.

Марк

3
<element myAttribute="value"> 
    <subElement /> 
    <subElement anotherAttribute="this is an attribute's value">Element value</subElement> 
</element> 

Вы не можете иметь более одного атрибута с тем же именем в XML, поэтому вы не можете использовать MinOccurs и MaxOccurs атрибутов.

Вам не нужно использовать = «требуется» для элементов, потому что вместо этого вы можете использовать minOccurs = «1».

Это ваш выбор, когда использовать атрибуты и когда использовать элементы. Вот некоторые рекомендации: http://www.ibm.com/developerworks/xml/library/x-eleatt.html

3

Элемент представляет собой узел XML - и он может содержать другие узлы или атрибуты. Это может быть простой тип или сложный тип. Это объект XML.

Атрибут - это дескриптор. Он не может содержать ничего и может быть только простым типом.

Посмотрите на this. Конечно, вы можете просто Google что-то вроде «XML элемента против атрибута»

+0

В отличие от других ответов, которые, похоже, пытаются объяснить * как * определить элемент/атрибут, вы в этом суть. – dstibbe

4

Пример: XSD Формат

<xs:complexType name="contactInformation"> 
    <xs:all> 
     <xs:element name="firstName" type="xs:string" minOccurs="0"/> 
     <xs:element name="workCountryId" type="xs:long" minOccurs="0"/> 
    </xs:all> 
    <xs:attribute name="id" type="xs:long"/> 
</xs:complexType> 

XML Format

<contactInformation id=100> 
    <firstname>VELU</firstname> 
    <workCountryId>120</workCountryId> 
</contactInformation> 


attribute не является обязательным по умолчанию. Чтобы указать, что этот атрибут необходим, используйте атрибут use:

например. <xs:attribute name="id" type="xs:long" use="required"/>

Подробнее о attributes и elements.

A complexType элемент является элементом XML, который содержит другие элементы и/или атрибуты.

Элемент all указывает, что дочерние элементы могут отображаться в любом порядке и что каждый дочерний элемент может иметь нулевое или однократное время.

maxOccurs Дополнительно. Указывает максимальное количество раз, которое может иметь элемент. Значение должно быть 1.

minOccurs Дополнительно. Указывает минимальное количество раз, которое может иметь элемент. Значение может быть 0 или 1. Значение по умолчанию - 1

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