2009-11-13 10 views
11

Ich bin neu in XSD, und ich bin ziemlich verwirrt, wann Attribut zu verwenden, und wann Element zu verwenden?XSD: Unterschied zwischen Element und Attribut

Warum können wir nicht minOccurs und maxOccurs im Attribut angeben?

Auch, warum können wir nicht verwenden = "erforderlich" im Element?

+0

Mögliches Duplikat von [XML-Attribut vs. XML-Element] (http://stackoverflow.com/questions/33746/xml-attribute-vs-xml-element) – kjhughes

Antwort

25

Ein Element ist ein XML-Element - ein Starttag, einige Inhalte, ein End-Tag - sie sind die Bausteine ​​Ihres XML-Dokuments sind:

<test>someValue</test> 

Hier wäre "Test" ein Element.

Attribute ist eine zusätzliche Informationen zu einem Tag - es ist ein "Add-on" ist oder eine zusätzliche Informationen zu einem Element, kann aber nie allein existieren:

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

"id" ist ein Attribut.

Sie können nicht mehrere Attribute mit demselben Namen auf einem einzelnen Tag haben -> minOccurs/maxOccurs ergibt keinen Sinn. Sie können für ein Attribut erforderlich (oder nicht) definieren - alles andere macht keinen Sinn.

Die Elemente werden durch ihr Auftreten in komplexen Typen definiert - z. wenn Sie einen komplexen Typ mit einem <xs:sequence> innen haben - Sie definieren, dass alle Elemente vorhanden sein müssen und müssen die in dieser bestimmten Reihenfolge:

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

Innerhalb eines Elements dieses Typs, die Unterelemente „Element1“ und "Element2" wird benötigt und muss in dieser Reihenfolge erscheinen - es besteht keine Notwendigkeit für "erforderlich" oder nicht (wie bei Attributen). Ob ein Element benötigt wird oder nicht, wird durch die Verwendung von minOccurs und maxOccurs definiert; beide sind standardmäßig = 1, z. Das Element muss auftreten und darf nur einmal vorkommen. Indem Sie diese Einstellungen optimieren, können Sie ein Element als optional definieren (minOccurs = 0) oder es mehrmals anzeigen lassen (maxOccurs> 1).

Ich würde Ihnen wärmstens empfehlen, die W3Schools Tutorial on XML Schema auschecken und erfahren Sie mehr über XML-Schema.

Marc

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

Sie können nicht mehr als ein Attribut mit dem gleichen Namen in XML, daher können Sie nicht minOccurs und maxOccurs für Attribute verwenden.

Sie brauchen nicht verwenden = "erforderlich" für Elemente, weil Sie stattdessen minOccurs = "1" haben können.

Es ist Ihre Wahl, wann Attribute verwendet werden und wann Elemente verwendet werden. Hier sind einige Richtlinien: http://www.ibm.com/developerworks/xml/library/x-eleatt.html

3

Ein Element ist ein XML-Knoten - und es kann andere Knoten oder Attribute enthalten. Es kann ein einfacher Typ oder ein komplexer Typ sein. Es ist eine XML-Entität.

Ein Attribut ist ein Deskriptor. Es kann nichts enthalten und kann nur ein einfacher Typ sein.

Werfen Sie einen Blick auf this. Natürlich können Sie nur so etwas wie „XML-Element vs Attribut“ google

+0

Im Gegensatz zu den anderen Antworten, die versuchen zu erklären, * wie * ein Element/Attribut zu definieren, sind Sie auf den Punkt. – dstibbe

4

Beispiel: XSD Format

<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 ist standardmäßig optional. Um anzugeben, dass das Attribut erforderlich ist, verwenden Sie das use-Attribut:

z. <xs:attribute name="id" type="xs:long" use="required"/>

Mehr über attributes und elements.

Ein complexType Element ist ein XML-Element, das andere Elemente und/oder Attribute enthält.

Das Element all gibt an, dass die untergeordneten Elemente in beliebiger Reihenfolge angezeigt werden können und dass jedes untergeordnete Element null oder einmal auftreten kann.

maxOccurs Optional. Gibt an, wie oft das Element maximal auftreten kann. Der Wert muss 1 sein.

minOccurs Optional. Gibt an, wie oft das Element mindestens auftreten kann. Der Wert kann 0 oder 1 sein. Der Standardwert ist 1

Verwandte Themen