XML Schema element 元素
定义和用法
element 元素定义一个元素。
元素信息
出现次数 | 在架构中定义的元素的数目。 |
父元素 | schema、choice、all、sequence |
内容 | simpleType、complexType、key、keyref、unique |
语法
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger nillable=true|false abstract=true|false block=(#all|list of (extension|restriction)) final=(#all|list of (extension|restriction)) herhangi bir özellik > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? sembolü element içinde belirtilir, bu element sıfır veya bir kez çıkabilir, * sembolü belirtilen element sıfır veya birden fazla kez çıkabilir.)
Özellik
id
Seciştir. Bu element'in benzersiz ID'sini belirtir.
name
Seciştir. Elementin adını belirtir. Ebeveyn element schema element ise, bu özellik zorunludur.
ref
Seciştir. Başka bir elemente olan atıf. ref özelliği bir ad alan ön eki içerebilir. Ebeveyn element schema element ise, bu özellik kullanılmaz.
type
Seciştir. İçerik türünün adını belirtir veya simpleType veya complexType elementinin adını belirtir.
substitutionGroup
Seciştir. Bu element'in yerine kullanılabilir element'in adını belirler. Bu element, aynı türde veya belirtilen element türünden türetilmiş türde olmalıdır.
Ebeveyn element schema element değilse, bu özellik kullanılamaz.
default
Seciştir. Element için varsayılan bir değer belirtir (sadece element içeriği basit tür veya textOnly ise kullanılır).
fixed
Seciştir. Element için sabit bir değer belirtir (sadece element içeriği basit tür veya textOnly ise kullanılır).
form
Seciştir. Bu element'in formu. Varsayılan değeri, bu özelliğe sahip schema elementinin elementFormDefault özelliğinin değeri içerir. Bu değer, aşağıdaki dizgelerden biri olmalıdır: "qualified" veya "unqualified".
Eğer ebeveyn eleman schema elemanı ise, bu özellik kullanılamaz.
- Bu değer "unqualified" ise, element için bir ad alan ön eki ile belirtilmez.
- Bu değer "qualified" ise, element için bir ad alan ön eki ile belirtilmelidir.
maxOccurs
Seciştir. Element element'in ebeveyn element içinde çıkabileceği maksimum sayıyı belirler. Bu değer, sıfır veya daha büyük olan bir tam sayı olabilir. Maksimum sayıya herhangi bir sınırlama koymak istemezseniz, "unbounded" dizgesini kullanın. Varsayılan değeri 1'dir.
Eğer ebeveyn eleman schema elemanı ise, bu özellik kullanılamaz.
minOccurs
Seçmeli. Elementin ebeveyn elemanında görünebilecek en küçük sayıyı belirler. Bu değer, sıfırdan büyük veya eşit olan bir tamsayıdır. Varsayılan değeri 1'dir.
Eğer ebeveyn eleman schema elemanı ise, bu özellik kullanılamaz.
nillable
Seçmeli. Elemana açıkça sıfır değeri atlanabilir mi? Bu madde, elemanın içeriğine uygulanır ve bu elemanın özelliği değildir. Varsayılan değeri false'dır.
Eğer nillable true ise, bu elemanın örneği nil özelliğini true olarak ayarlayabilir. Nil özelliği, örneğin XML şeması namespace'inin bir parçası olarak tanımlanmıştır.
Örneğin, bu alt segment, tek bir eleman tanımlar ve nillable özelliğini true olarak ayarlar.
<xs:element name="myDate" type="xs:date" nillable="true"/>
Bu alt segment, bu elemanı kullanır ve açıkça sıfır değeri (nil özelliği true olarak ayarlanır).
<myDate xsi:nil="true"></myDate>
abstract
Seçmeli. Elemanın, örnek belgede kullanılabilir olup olmayacağını belirtir. Bu değeri true olarak ayarlanırsa, eleman örnek belgede görünemez. Aksine, substitutionGroup özelliği, bu elemanın belirli adlandırma (QName) içeren diğer elemanları, bu elemanın yerine görünmesini sağlar. Çok sayıda eleman, substitutionGroup özelliğinde bu elemana atıfta bulunabilir. Varsayılan değeri false'dır.
block
Seçmeli. Türetilen tür. Block özelliği, belirtilen türetilen türdeki elemanların bu elemanın yerine kullanılmalarını önler. Bu değer #all veya bir liste içerebilir, bu liste extension, restriction veya substitution'ın alt kısımlarıdır:
- extension - Türetilen elemanların yerine kullanılmalarını önler.
- restriction - Türetilen elemanların yerine kullanılmalarını önler.
- substitution - Türetilen elemanların yerine kullanılmalarını önler.
- #all - Tüm türetilen elemanların bu elemanın yerine kullanılmalarını önler.
final
Seçmeli. Element elemanının final özelliğinin varsayılan değerini ayarlar. Eğer ebeveyn eleman schema elemanı değilse, bu özellik kullanılamaz. Bu değer #all veya bir liste içerebilir, bu liste extension veya restriction'ın alt kısımlarıdır:
- extension - Bu elementin türetilmiş elementlerinin bu elementin yerine kullanılmasını önler
- restriction - Bu elementin türetilmiş elementlerinin bu elementin yerine kullanılmasını önler
- #all - Bu elementin türetilmiş tüm elementlerinin bu elementin yerine kullanılmasını önler
herhangi bir özellik
Opsiyonel. Non-schema adlı alan adına sahip herhangi bir diğer özelliği belirtir.
Örnek
Örnek 1
Aşağıdaki örnek, "fname", "lname", "age" ve "dateborn" dört basit elementi içeren ve türleri string, nonNegativeInteger ve date olan bir schema'dır:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="fname" type="xs:string"/> <xs:element name="lname" type="xs:string"/> <xs:element name="age" type="xs:nonNegativeInteger"/> <xs:element name="dateborn" type="xs:date"/> </xs:schema>
Örnek 2
Aşağıdaki örnek, "note" adlı karmaşık türdeki bir element içeren bir schema'dır. "note" elementi, "to", "from", "heading" ve "body" dört basit elementi içerir:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Örnek 3
Bu örnek, örnek 2 ile aynıdır, ancak bu örnekte, element adlarını referanslamak için ref özelliğini kullanmayı seçiyoruz:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element ref="to"/> <xs:element ref="from"/> <xs:element ref="heading"/> <xs:element ref="body"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:schema>