Lütfen bu belgenin hata raporlarına da bakın, aralarında uyulması gereken düzeltmeler bulunabilir.
Bu belgenin bir de eski hata raporları var.
Belgenin başka dillere çevirileri de olabilir.
Belgenin ayrıca bilgilendirici mahiyette bu biçimleri de var: XML ve değişikliklerin renklerle vurgulandığı XHTML sürümü
Copyright © 2006 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
Bu çeviri de diğer belirtim çevirileri gibi bilgilendirici mahiyettedir, hiçbir bağlamda belirleyici değildir. Bu belge anadili Türkçe olan Genel Ağ kullanıcılarının bu belirtim hakkında fikir edinebilmelerini sağlamak amacıyla Türkçeye çevrilmiştir. Bu belirtimin belirleyici tek sürümü W3C tarafından yayımlanan İngilizce sürümüdür.
Telif Hakkı © 2006 W3C® (MIT, INRIA, Keio), Tüm hakları saklıdır. W3C sorumluluk reddi, ticari marka, belge kullanımı ve yazılım lisanslama kuralları uygulanır.
Bu belgede tamamen açıklanan Genişletilebilir İmlenim Dili [XML - eXtensible Markup Language] SGML'nin bir alt kümesidir. Amacı, soysal SGML'nin sunulması, alınması ve şu an HTML ile mümkün olan yöntemle Web'de işlenmesidir. XML, SGML ve HTML'nin birarada çalışabilirliğini ve bunun gerçeklenimini kolaylaştırmak için tasarlanmıştır.
Bu bölüm belgenin yayımı sırasındaki durumunu açıklar. Bu belgeyi geçersiz kılacak başka belgeler olabilir. Şu anki W3C yayınlarının ve bu teknik raporların en son sürümleri http://www.w3.org/TR/ adresindeki W3C teknik raporları dizininde bulunabilir.
Bu belge, geniş çapta kullanılmakta olan uluslararası metin işleme standardının [SGML - Standard Generalized Markup Language, iyileştirilmiş ve düzeltilmiş olarak ISO 8879:1986(E)] mevcut alt kümesi tarafından oluşturulmuş sözdiziminin belirtimidir. Bu belge, W3C XML Etkinliğinin bir parçası olarak XML Çekirdek Çalışma Grubu tarafından üretilmiştir.
Bu belge 29 Eylül 2006 tarihinde istenmeyen sonuçlara yol açması olası boşluklar ve süprüntüler silinmek suretiyle yerinde düzeltilmiştir.
Bu belirtimin fiilen geçerli (İng: normative) tek sürümü İngilizce sürümü olmakla birlikte bilgilendirici (İng: non-normative) mahiyette olarak bu belgenin başka dillere tercümeleri de mevcuttur.
Bu belge bir W3C Önergesidir. Bu dördüncü düzeltme XML'nin yeni bir sürümü değildir. Okuyuculara kolaylık olsun diye, (http://www.w3.org/XML/xml-V10-3e-errata adresinde) biriken hata raporlarının gerektirdiği değişikliklerin XML 1.0'ın 4 Şubat 2004 tarihli üçüncü düzeltmesine uygulanmış halidir. Ayrıca, üçüncü düzeltmede biçimsel olarak kullanılan [IETF RFC 2119]'da tanımlı kural koyucu anahtar sözcükler, [IETF RFC 2119]'un ana fikrine daha iyi uyum sağlayacak şekilde değiştirilmiştir. Bu düzeltme sürümü önceki 4 Şubat 2004 tarihli W3C Önergesini geçersiz kılar.
Bu belgede (İngilizce sürümünde) bulduğunuz hataları lütfen mailto:mailto:xml-editor@w3.org listesine bildiriniz; listenin halka açık arşivleri de mevcuttur. Okuyuculara kolaylık olması için belgenin yapılan değişikliklerin renklerle vurgulandığı bir XHTML sürümü de mevcuttur; bu sürüm hata raporları listesinde yayınlanmış hatalardan dolayı yapılan her değişikliği listedeki ilgili hata raporuna bir bağ vererek vurgular. Listedeki çoğu hata, değişiklikle ilgili bir açıklama içerir. Bu dördüncü sürüm için http://www.w3.org/XML/xml-V10-4e-errata adresinde bir hata raporları listesi mevcuttur.
http://www.w3.org/XML/2006/06/xml10-4e-implementation.html adresinde bir gerçeklenim raporu bulunmaktadır. Bu belirtime ne derece uyum sağlanabildiğini sınamaya yardımcı sınama araçları da sağlanmıştır.
Bu belge W3C üyeleri ve diğer ilgili taraflarca gözden geçirilmiş ve W3C Yönetimi tarafından bir W3C Önergesi olarak onaylanmıştır. Kararlı bir belge olup başka belgelerden uyulması gerekli bir kaynak olarak atıfta bulunarak veya bir başvuru malzemesi olarak kullanılabilir. W3C'nin Önergedeki rolü, belirtime dikkatleri çekmek ve geniş bir alanda kullanımını yaygınlaştırmaktır. Bu, Web'in işlevselliğini ve birlikte çalışabilirliğini arttırmaktadır.
W3C, kendi çıktılarının barındırdığı patentler varsa bunları bir liste halinde ve patent açıklama talimatlarıyla birlikte duyurur. Temel Hak İddiasında bulunabilecek (başka) bir patent hakkında elinde somut bilgisi bulunanlar, W3C Patent Politikası 6. Bölümde belirtildiği şekilde ellerindeki bilgileri açıklamalıdırlar.
1 Giriş
1.1 Öncüler ve Hedefler
1.2 Terminoloji
2 Belgeler
2.1 İyi Biçimli XML Belgeler
2.2 Karakterler
2.3 Ortak Sözdizimsel Oluşumlar
2.4 Karakter Verisi ve İmlenim
2.5 Açıklamalar
2.6 İşlem Yönergeleri
2.7 CDATA Bölümleri
2.8 Önbölük ve Belge Türü Bildirimi
2.9 Tekbaşına Belge Bildirimi
2.10 Boşlukların İşlenmesi
2.11 Satırsonlarının İşlenmesi
2.12 Dilin Belirtilmesi
3 Mantıksal Yapılar
3.1 Başlangıç, Bitiş ve Boş-Eleman Etiketleri
3.2 Eleman Türü Bildirimleri
3.2.1 Eleman İçeriği
3.2.2 Karışık İçerik
3.3 Öznitelik Listesi Bildirimleri
3.3.1 Öznitelik Türleri
3.3.2 Öznitelik Öntanımlıları
3.3.3 Öznitelik Değerinin Normalleştirilmesi
3.4 Şart Bölümleri
4 Fiziksel Yapılar
4.1 Karakter ve Öğe Gönderimleri
4.2 Öğe Bildirimleri
4.2.1 Dahili Öğeler
4.2.2 Harici Öğeler
4.3 Çözümlü Öğeler
4.3.1 Metin Bildirimi
4.3.2 İyi Biçimli Çözümlü Öğeler
4.3.3 Öğelerdeki Karakter Kodlaması
4.4 Öğelerin ve Gönderimlerin XML İşlemcide Ele Alınışları
4.4.1 Tanınmaz
4.4.2 İçerilir
4.4.3 Geçerliyse İçerilir
4.4.4 Yasak
4.4.5 Dizgesel Sabitte İçerilir
4.4.6 Uyarı
4.4.7 Atlanır
4.4.8 Parametre Öğesi olarak İçerilir
4.4.9 Hata
4.5 Öğe İkame Metninin Oluşturulması
4.6 Önceden Tanımlanmış Öğeler
4.7 Gösterim Bildirimleri
4.8 Belge Öğesi
5 Uygunluk
5.1 Geçerliliği Sınayan ve Sınamayan İşlemciler
5.2 XML İşlemcilerin Kullanımı
6 Gösterim
A Kaynakça
A.1 Uyulması Gerekli Olanlar
A.2 Diğerleri
B Karakter Sınıfları
C XML ve SGML (Bilgilendirici)
D Öğe ve Karakter gönderimlerinin Yorumlanması (Bilgilendirici)
E Belirlenimci İçerik Modelleri (Bilgilendirici)
F Karakter Kodlamalarının Kendiliğinden Saptanması (Bilgilendirici)
F.1 Harici Kodlama Bilgisi Olmadan Saptama
F.2 Harici Kodlama Bilgisinin Varlığında Öncelikler
G W3C XML Çalışma Grubu (Bilgilendirici)
H W3C XML Çekirdek Çalışma Grubu (Bilgilendirici)
I Üretim Bilgileri (Bilgilendirici)
Genişletilebilir İmlenim Dili [XML - eXtensible Markup Language], XML belgeleri denen veri nesneleri sınıfını ve kısmen de bunlar üzerinde işlem yapacak bilgisayar programlarının davranışını açıklar. XML, SGML'nin [ISO 8879] sınırlı biçimi veya uygulamaya dönük yüzüdür. Oluşumları bakımından, XML belgeler SGML belgelerle uyumludur.
XML belgeler, öğe denilen ve çözümlenmiş ya da çözümlenmemiş, veri içeren saklama birimlerinden oluşur. Çözümlenmiş veri kısmen karakter verisi biçiminde, kısmen de imlenim biçiminde biraraya getirilmiş karakterlerden oluşur. İmlenim, belgenin depolama katmanının ve mantıksal yapısının tanımını kodlar. XML ise depolama katmanı ve mantıksal yapı üzerinde kural koyucu bir mekanizma sağlar.
XML belgeleri okuyup içeriğine ve yapısına erişim sağlamak için XML işlemci denilen bir yazılım modülü kullanılır. Bir XML işlemcinin bu işi uygulama adı verilen başka bir modülün yararına yapacağı varsayılır. Bu belirtim bir XML işlemciden beklenen davranışı, XML veriyi nasıl okuması ve uygulamaya bilgiyi nasıl sağlaması gerektiğiyle ilgili kuralları açıklar.
XML, W3C himayesi altında 1996 yılında kurulan (öncülü SGML Editorial Review Board olarak bilinen) bir XML Çalışma Grubu tarafından geliştirilmiştir. XML Çalışma Grubu, Sun Microsystems'tan Jon Bosak başkanlığında W3C tarafından ayrıca örgütlenen bir XML Özel İlgi Grubunun etkin katılımıyla kuruldu. XML Çalışma Grubunun üyeleri bir ek bölümde listelenmiştir. Çalışma Grubunun W3C ile iletişimi Dan Connolly tarafından sağlanmıştır.
XML için tasarım hedefleri:
XML, Genel Ağ'da düz mantıkla (doğrudan doğruya) kullanılabilmelidir.
XML, geniş çapta çok çeşitli uygulamayı destekleyecektir.
XML, SGML ile uyumlu olacaktır.
XML belgeleri işleyen programları yazmak kolay olacaktır.
XML'deki isteğe bağlı özellikler olabildiğince az, hatta sıfır olmalıdır.
XML belgeler insanlar için okunaklı olacaktır.
XML tasarımı çabucak yapılabilecektir.
XML tasarımı özlü ve biçimsel olacaktır.
XML belgeler kolayca oluşturulabilecektir.
XML imlenimin kısalığı asgari önemdedir.
Bu belirtim, ilgili standartlarla birlikte, XML 1.0'ı anlamak ve üzerinde işlem yapacak bilgisayar programlarını oluşturmak için gerekli tüm bilgiyi sağlar (ilgili standartlar: karakterler için Unicode [Unicode] ve ISO/IEC 10646 [ISO/IEC 10646], dil betimleme yaftaları için RFC 3066 [IETF RFC 3066], dil isimlerinin kodları için ISO 639 [ISO 639] ve ülke isimlerinin kodları için ISO 3166 [ISO 3166]).
XML belirtiminin bu sürümü, metnin tamamı ve yasal uyarıları aynen korunduğu takdirde özgürce dağıtılabilir.
XML belgeleri açıklamakta kullanılan terminoloji bu belirtim boyunca tanımlanmıştır. Bu çeviride, vurgulandıklarında, ZORUNLU, ÖNERİ ve SEÇİMLİK anahtar sözcükleri [IETF RFC 2119]'un Türkçe çevirisinde açıklandığı gibi yorumlanır. Ayrıca, aşağıdaki listede tanımlanan terimler, XML belgeleri açıklamakta kullanılan terminolojiyi oluşturmak ve bir XML işlemcinin eylemlerini açıklamakta kullanılır:
Bir veri nesnesi bu belirtimde tanımlandığı gibi iyi biçimli ise o bir XML belgedir. Eğer belli başlı ek kuralları karşılıyorsa XML belge ayrıca geçerlidir.
Her XML belge, mantıksal ve fiziksel yapıların her ikisine de sahiptir. Fiziksel olarak, belge öğe denilen birimlerden oluşur. Bir öğe belge içinde içerilmesini sağlamak için başka öğelere gönderimde bulunabilir. Bir belge bir "kök" veya belge öğesinde başlar. Mantıksal olarak, belge, hepsi belgede açıkça imlenim tarafından belirtilmiş bildirimler, elemanlar, açıklamalar, karakter gönderimleri ve işlem yönergelerinden oluşur, Mantıksal ve fiziksel yapılar, 4.3.2 İyi Biçimli Çözümlü Öğeler bölümünde açıklandığı gibi uygun şekilde iç içe geçmiş olmalıdır ZORUNLU
Bir metin nesnesinin iyi biçimli bir XML belge olması için:
Bir bütün olarak, belge sözdizimiyle eşleşmelidir.
Bu belgede verilen bütün iyi biçimlilik kurallarına uygun olmalıdır.
Belgede doğrudan veya dolaylı gönderim yapılan çözümlü öğelerin her biri iyi biçimli olmalıdır.
| [1] | belge | ::= |
|
Bir XML belgenin belge sözdizimiyle eşleşmesi için:
Bir veya daha fazla eleman içermelidir.
Başka bir elemanın içeriğinde hiçbir parçası bulunmayan, kök veya belge elemanı adı verilen sadece tek bir elemanı vardır. Diğer tüm elemanlar bakımından, eğer başlangıç etiketi başka bir elemanın içindeyse, bitiş etiketi de aynı elemanın içindedir. Başka bir deyişle, elemanlar başlangıç ve bitiş etiketleri ile sınırlanmış olarak bir diğerini içerebilir.
Bunun bir sonucu olarak, belgedeki, kök eleman olmayan her C elemanı için, onu içeren bir P elemanı vardır. P'ye C'nin ebeveyni olarak atıf yapılırken C'ye P'nin çocuğu olarak atıf yapılır.
Bir çözümlenmiş öğe, karakter veriler yanında imlenimi de göstermekte kullanılan karakterlerden oluşan bir dizi olarak bir metin içeriğe sahiptir. Bir karakter ISO/IEC 10646:2000 [ISO/IEC 10646] tarafından belirtildiği gibi metnin bir atomsal birimidir. Geçerli karakterler sekme, satırsonu, satırbaşı ile Unicode ve ISO/IEC 10646'nın geçerli karakterleridir. Standartların bu belge hazırlandığı sırada geçerli olan sürümlerinden A.1 Uyulması Gerekli Olanlar bölümünde bahsedilmiştir. Bu standartların düzeltmelerinde ve eklerinde yeni karakterler eklenebilir. Sonuçta, XML işlemcilerin Kark için belirtilen aralıktaki her karakteri kabul etmeleri ZORUNLUdur.
| [2] | Kark | ::= | #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] | /* İkame bloklar, FFFE ve FFFF hariç Unicode karakterler. */ |
Karakter kodlarını bit kalıpları halinde kodlayan mekanizmalar öğeden öğeye değişiklik gösterebilir. Tüm XML işlemcilerinin Unicode 3.1'in [Unicode3] UTF-8 ve UTF-16 kodlamalarını kabul etmesi ZORUNLUdur; bu ikisini işaret eden kullanımdaki mekanizmalar ile diğer kodlamaları oyuna dahil eden mekanizmalar 4.3.3 Öğelerdeki Karakter Kodlaması bölümünde açıklanmıştır.
[#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDDF], [#x1FFFE-#x1FFFF], [#x2FFFE-#x2FFFF], [#x3FFFE-#x3FFFF], [#x4FFFE-#x4FFFF], [#x5FFFE-#x5FFFF], [#x6FFFE-#x6FFFF], [#x7FFFE-#x7FFFF], [#x8FFFE-#x8FFFF], [#x9FFFE-#x9FFFF], [#xAFFFE-#xAFFFF], [#xBFFFE-#xBFFFF], [#xCFFFE-#xCFFFF], [#xDFFFE-#xDFFFF], [#xEFFFE-#xEFFFF], [#xFFFFE-#xFFFFF], [#x10FFFE-#x10FFFF].
Bu bölümde dilbilgisi içinde geniş çapta kullanılan simgeler tanımlanmaktadır.
B (boşluk karakterleri) bir veya daha fazla boşluk (#x20), sekme (#x9), satırsonu (#xA) veya satırbaşı (#xD) karakterinden oluşur.
| [3] | B | ::= | (#x20 | #x9 | #xD | #xA)+ |
#xD karakteri tamamen ilk belirtim ile geriye uyumluluk adına vardır. 2.11 Satırsonlarının İşlenmesi bölümünde açıklandığı gibi bir XML belgedeki #xD karakterleri herhangi bir başka işlem yapılmadan önce tek tek silinir veya yerlerine #xA karakterleri yerleştirilir. B sözdizimiyle eşleşen #xD karakterini almanın tek yolu bir öğe değerinde bu karakter için bir karakter gönderimi belirtmektir.Karakterler kolaylık olsun diye harfler, rakamlar ve diğer karakterler şeklinde sınıflanmıştır. Bir harf, bir alfabetik karakter olabileceği gibi, kök hece karakteri veya bir kavramı simgeleyen karakter olabilir. Her sınıfa özgü karakterlerlerin tam dökümü B Karakter Sınıfları bölümünde verilmiştir.
Bir Ad, bir harf veya bir kaç noktalama iminden biri ile başlar ve isim karakterleri adı verilen, harfler, rakamlar, tire, altçizgi, ikinokta veya nokta imleri ile devam eder. "xml" dizgesi ile veya (('X'|'x') ('M'|'m') ('L'|'l')) ile eşleşen herhangi bir dizge ile başlayan adlar, bu belirtimin bu ve gelecek sürümlerinde standartlaşım adına ayrılıp kayıt altına alınmıştır.
Bir ad dizgeciği isim karakterlerinin bir karışımıdır.
| [4] | AdKark | ::= |
|
| [5] | Ad | ::= | ( |
| [6] | Adlar | ::= |
|
| [7] | AdDizge | ::= | ( |
| [8] | AdDizgeler | ::= |
|
Adlar
ve AdDizgeler sözdizimi tanımları normalleştirme sonrası dizgecikli öznitelik değerlerinin geçerliliğini tanımlamakta kullanılır (bkz, 3.3.1 Öznitelik Türleri).Dizgesel sabitler, tırnak içine alınmış, içinde ayraç olarak tırnak imlerinin kullanılmadığı bir dizgedir. Dizgesel sabitler, dahili öğelerin (ÖğeDeğeri), öznitelik değerlerinin (ÖznitDeğeri) ve harici belirteçlerin (SistemSabiti) içeriğini belirtmekte kullanılırlar. Bir SistemSabitinin imlenim taranmaksızın çözümlenebileceğine dikkat ediniz.
| [9] | ÖğeDeğeri | ::= | '"' ([^%&"] | |
| "'" ([^%&'] | | |||
| [10] | ÖznitDeğeri | ::= | '"' ([^<&"] | |
| "'" ([^<&'] | | |||
| [11] | SistemSabiti | ::= | ('"' [^"]* '"') | ("'" [^']* "'") |
| [12] | GenidSabiti | ::= | '"' |
| [13] | GenidKark | ::= | #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] |
ÖğeDeğeri sözdizimi tanımı, bir genel öğenin tanımının bir sabitte tek bir < bulunmasına (örn, <!ENTITY sabitim "<">) izin verdiğinden ve böyle bir öğeye yapılacak bir gönderim bir iyi biçimlilik hatasına yol açacağından böyle bir uygulamadan kesinlikle kaçınılması önerilir.Bir Metin imlenim ile karakter verisinin karışımından oluşur.
İmlenim ise,
başlangıç etiketleri,
bitiş etiketleri,
boş eleman etiketleri,
öğe gönderimleri,
karakter gönderimleri,
açıklamalar,
CDATA bölümü ayraçları,
belge türü bildirimleri,
işlem yönergeleri,
XML bildirimleri,
metin bildirimleri ve belge öğesinin tepe seviyesindeki (yani, belge elemanının ve herhangi bir başka imlenimin dış tarafındaki) boşluk karakterleriyle şekillenir.
İmlenim dışındaki tüm metin belgenin karakter verisini oluşturur.
Ve imi (&) ve açılı sol ayraç (<),
bir açıklama,
bir işlem yönergesi veya
CDATA bölümü içinde veya birer imlenim ayracı olarak kullanılmaları dışında, birer dizge sabiti biçiminde görünmemelidirler ZORUNLU. Böyle bir durumda, ya sayısal karakter gönderimleri ya da sırasıyla "&" ve "<" dizgeleri olarak görünmelidirler ZORUNLU. Açılı sağ ayraç (>), ">" dizgesi kullanılarak gösterilebilirse de, uyumluluk için içerik içinde "]]>" dizgesi bir CDATA bölümünün sonunu işaret etmiyorsa, dizge içinde bir karakter gönderimi veya ">" kullanılarak gösterilmelidir ZORUNLU.
Karakter verisi elemanların içeriğinde, imlenim başlatma karakterini ve CDATA bölümü kapama ayracı olan "]]>" dizgesini içermeyen bir karakter dizgesidir. Karakter verisi CDATA bölümünde, CDATA bölümü kapama ayracı olan "]]>" dizgesini içermeyen bir karakter dizgesidir.
Öznitelik değerlerinin tek ve çift tırnakları içermesini sağlamak için, tek tırnak karakteri ('), "'" ile ve çift tırnak tarakteri ("), """ ile gösterilebilir.
| [14] | KarkVeri | ::= | [^<&]* - ([^<&]* ']]>' [^<&]*) |
Açıklamalar bir belge imlenim dışında her yerde bulunabilir; ek olarak, belge türü bildiriminin içinde dilbilgisi kurallarının izin verdiği yerlerde bulunabilir. Açıklamalar belgenin karakter verisinin bir parçası değillerdir; bir XML işlemci, bir uygulamanın açıklamaların metnini almasını mümkün kılmak için açıklamaları karakter verisinin bir parçası olarak değerlendirebilir SEÇİMLİK, fakat bu gerekli değildir. Uyumluluk için, "--" (çift tire) dizgesi açıklamaların içinde bulunmamalıdır ZORUNLU. Parametre öğelerine gönderimler, açıklamaların içinde tanınır olmamalıdır ZORUNLU.
| [15] | Açıklama | ::= | '<!--' (( |
Bir açıklama örneği:
<!-- <head> & <body> için bildirim -->
Açıklama sözdiziminin, bir açıklamanın ---> ile bitmesine izin vermediğine dikkat ediniz. Bu bakımdan aşağıdaki örnek iyi biçimli değildir.
<!-- B+, B veya B--->
İşlem yönergeleri (İng: Processing Instruction) belgelerde uygulamaya yönelik yönergelerin bulunmasını sağlar.
İşlem yönergeleri| [16] | PI | ::= | '<?' |
| [17] | PIHedefi | ::= |
|
İşlem yönergeleri belgenin karakter verisinin bir parçası değillerdir, ama uygulamaya aktarılmaları gerekir ZORUNLU. İşlem yönergesi, yönergenin yönlendirildiği uygulamayı betimlemekte kullanılan bir hedefle (PIHedefi) başlar. "XML", "xml", ve benzerleri, bu belirtimin bu veya gelecek sürümlerinin standartlaşımı için ayrılıp kayıt altına alınmıştır. İşlem yönergelerinin biçimsel bildirimi için XML Gösterim mekanizması kullanılabilir. Parametre öğelerinin gönderimleri işlem yönergeleri içinde tanınır olmamalıdır ZORUNLU.
CDATA bölümleri karakter verisinin her yerinde yer alabilir; imlenim olarak tanınmaması gereken karakterleri içeren metin bloklarını sarmalamakta kullanılır. CDATA bölümleri "<![CDATA[" dizgesi ile başlar ve "]]>"dizgesi ile biter:
| [18] | CDATABölümü | ::= |
|
| [19] | CDATABaşl | ::= | '<![CDATA[' |
| [20] | CDATAVerisi | ::= | ( |
| [21] | CDATABitiş | ::= | ']]>' |
Bir CDATA bölümünün içinde sadece CDATABitiş dizgesi imlenim olarak tanınır, dolayısıyla açılı sol ayraç ve ve-imi bölüm içinde birebir yer alabilir; "<" ve "&" biçiminde olmaları gerekmez (gerekmemeli). CDATA bölümleri birbirlerinin içinde bulunamazlar.
"<greeting>" ve "</greeting>" etiketlerinin imlenim olarak değil, karakter verisi olarak ele alındığı bir CDATA bölümü örneği:
<![CDATA[<greeting>Merhaba, Dünyalı!</greeting>]]>
XML belgelerin kullanılan XML sürümünün belirtildiği bir XML bildirimi ile başlamaları ÖNERİlir. Örneğin, aşağıdaki eksiksiz bir XML belgesidir, iyi biçimlidir ama geçerli değildir:
<?xml version="1.0"?> <greeting>Merhaba, Dünyalı!</greeting>
keza bu da:
<greeting>Merhaba, Dünyalı!</greeting>
Bir XML belgedeki imlenimin işlevi belgenin saklatım ve mantıksal yapısını tanımlamak ve öznitelik isim-değer çiftlerini belgenin mantıksal yapısıyla ilişkilendirmektir. XML, mantıksal yapının kurallarını tanımlamak ve önceden tanımlanmış saklatım birimlerinin kullanımını desteklemek için belge türü bildirimi denen bir mekanizma sağlar. Bir XML belge, bir ilişkili belge türü bildirimine sahipse ve kendi içinde ifade edilen kurallara uygunsa, geçerlidir.
Belge türü bildiriminin belgedeki ilk elemandan önce yer alması ZORUNLUdur.
Önbölük| [22] | önbölük | ::= |
|
| [23] | XMLBild | ::= | '<?xml' |
| [24] | SürümBilgisi | ::= |
|
| [25] | Eşittir | ::= |
|
| [26] | SürümNum | ::= | '1.0' |
| [27] | Muhtelif | ::= |
|
XML belge türü bildirimi bir belge sınıfı için dilbilgisi sağlayan imlenim bildirimlerini içerir veya bunları işaret eder. Bu dilbilgisi, belge türü bildirimi veya DTD (Document Type Definition kısaltması) olarak bilinir. DTD, imlenim bildirimlerini içeren bir harici altkümeyi (özel bir harici öğe çeşidi) işaret edebileceği gibi imlenim bildirimlerini bir dahili altküme olarak içerebilir veya her ikisini birden yapabilir.
Bir imlenim bildirimi ya bir öznitelik listesi bildirimi ya bir öğe bildirimi ya da bir gösterim bildirimidir. Bu bildirimler, aşağıda iyi biçimlilik ve geçerlilik kurallarında açıklandığı gibi tamamen veya kısmen parametre öğelerinde yer alabilirler. Daha fazla bilgi için 4 Fiziksel Yapılar bölümüne bakınız.
Belge Türü Bildirimi| [28] | belgetürübild | ::= | '<!DOCTYPE' | [GK: Kök Eleman Türü] |
| [İBK: Harici Altküme] | ||||
| [28a] | BildAyr | ::= |
| [İBK: Bildirimler arasında Parametre Öğeleri] |
| [28b] | içAltKüme | ::= | ( | |
| [29] | imlenimBild | ::= |
| [GK: Düzgün Bildirim/Parametre Öğesi İç İçeliği] |
| [İBK: Dahili Altkümedeki Parametre Öğeleri] |
Yalnız dikkat edin, bir iyi biçimli belge belgetürübild içinde ya bir harici altkümeyi işaret etmeli ya bir dahili bir altkümeyi içermeli veya ikisini de yapmalıdır. Hiçbirinin olmaması iyi biçimlilik için olası değildir.
İmlenim bildirimleri tamamen veya kısmen parametre öğelerinin ikame metni içinde yer alabilir. Bu belirtimdeki tek tek tanım terimlerinin (elemanBild, ÖznitListBild, vs.) bundan sonraki sözdizimi tanımları, tüm parametre öğeleri içerildikten sonraki bildirimleri tanımlayacaktır.
Parametre öğesi gönderimlerinden dizgesel sabitlerin, işlem yönergelerinin, açıklamaların ve yoksayılan şart bölümlerinin (bkz, 3.4 Şart Bölümleri) içinde olanlar hariç, kalan hepsi DTD (dahili ve harici altkümeler ile harici parametre öğeleri) içinde her yerde tanınırlar (anlamlarını korurlar). Ayrıca, öğe değeri dizgesel sabitlerinde de tanınırlar. Parametre öğelerinin dahili altkümelerde kullanımı aşağıda açıklandığı gibi kısıtlanmıştır.
belgetürübild içindeki Ad, kök eleman türündeki elemanla eşleşmelidir ZORUNLU.
Parametre öğesi ikame metni ile imlenim bildirimleri olması gerektiği biçimde iç içe olmalıdır ZORUNLU. Yani, bir imlenim bildiriminin ilk veya son karakteri gönderim yapılan parametre öğesi ikame metninin içinde yer alıyorsa, her ikisi de aynı ikame metninde içeriliyor olmalıdırlar ZORUNLU.
Dahili DTD altkümesinde, parametre öğesi gönderimleri, imlenim bildirimleri içinde yer almalıdır ZORUNLU; imlenim bildirimlerinin yer alabilecekleri her yerde yer alabilirler. (Bu, harici parametre öğeleri içinde veya harici altkümelerde yer alan gönderimlere uygulanmaz.)
Bir harici altküme (varsa), dışAltKüme sözdizimiyle eşleşmelidir ZORUNLU.
Bir BildAyr içindeki bir parametre öğesi gönderiminin ikame metni dışAltKümeBild sözdizimiyle eşleşmelidir ZORUNLU.
Dahili altküme gibi, bir BildAyr içinden gönderimde bulunulan bir harici altküme ve her harici parametre öğesi, boşluklar veya parametre öğesi gönderimleri arasına serpiştirilmiş imlenimBild tanım terimi tarafından izin verilen türlerdeki bir dizi eksiksiz imlenim bildiriminden oluşmalıdır. Harici altkümenin veya bu harici parametre öğelerinin içeriği kısmen şart bölümü oluşumu kullanılarak şartlı olarak yoksayılabilir; buna dahili altkümede izin verilmez ama dahili altkümeden atıf yapılan harici parametre öğelerinde izin verilir.
| [30] | dışAltKüme | ::= |
|
| [31] | dışAltKümeBild | ::= | ( |
Harici altküme ve harici parametre öğeleri, dahili altkümedekilerden, parametre öğesi gönderimlerine imlenim bildirimlerinin arasında değil, içinde izin veriliyor olmasıyla da ayrıca farklıdırlar.
Belge türü bildirimine sahip bir XML belge örneği:
<?xml version="1.0"?> <!DOCTYPE greeting SYSTEM "hello.dtd"> <greeting>Merhaba, Dünyalı!</greeting>
Sistem belirteci "hello.dtd", belge için bir DTD adresi (veya bir tanım-yeri başvurusu) vermektedir.
Bildirimler bu örnekteki gibi yerel olarak da yapılabilir:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE greeting [ <!ELEMENT greeting (#PCDATA)> ]> <greeting>Merhaba, Dünyalı!</greeting>
Harici ve dahili altkümelerin her ikisi de kullanılmışsa, dahili altküme, harici altkümeden önceymiş gibi ele alınmalıdır ZORUNLU. Bu, dahili altkümedeki öğe ve öznitelik listesi bildirimlerinin harici altkümedekilerden öncelikli olması demektir.
XML işlemci tarafından uygulamaya aktarıldığından imlenim bildirimleri belge içeriğini etkileyebilir; örneğin, özniteliklerin öntanımlıları ve öğe bildirimleri. XML bildiriminin bir bileşeni olarak karşımıza çıkabilen tekbaşına belge bildirimi, belge öğesine veya parametre öğelerine harici bildirim olarak görünen bildirimlerin olup olmadığını bilgisini taşır. Bir harici imlenim bildirimi harici altkümede veya bir parametre öğesinin (dahili veya harici) içinde bulunan bir imlenim bildirimidir (geçerlilik sınaması yapmayan XML işlemciler parametre öğelerini de okumadıklarından bunlarda listeye dahildir).
Tekbaşına Belge Bildirimi| [32] | TBBild | ::= |
| [GK: Tekbaşına Belge Bildirimi] |
Bir tekbaşına belge bildiriminde "yes" değeri, XML işlemciden uygulamaya aktarılan bilgiyi etkileyen hiçbir harici imlenim bildirimi olmadığı anlamına gelir. "yes" değeri ise böyle harici bildirimlerin olduğunu veya olabileceğini belirtir. Tek başına belge bildiriminin sadece harici bildirimlerin varlığının belirtisi olduğuna; bir belgede, harici öğelere gönderimlerin varlığının, bu öğeler dahili olarak bildirildiğinde belgenin tekbaşınalık halini etkilemeyeceğine dikkat ediniz.
Eğer hiçbir harici imlenim bildirimi yoksa, tekbaşına belge bildiriminin hiçbir anlamı yoktur. Eğer harici imlenim bildirimleri varsa fakat tekbaşına belge bildirimi yapılmamışsa değerin "no" olduğu varsayılır.
standalone="no" bildirimli bir XML belgesi, bazı ağ üzerinden teslimat uygulamaları tarafından talep edilmesi nedeniyle, algoritmik olarak bir tekbaşına belgeye dönüştürülebilir.
Harici imlenim bildirimleri şunları içeriyorsa:
öntanımlı değerlere sahip öznitelikler; eğer bu özniteliklere sahip elemanlar belgede bu öznitelikler belirtilmeksizin kullanılmışsa,
öğeler (amp,
lt,
gt,
apos,
quot dışındakiler); eğer belgede bu öğelere gönderimler varsa,
dizgecikli türde öznitelikler; öznitelik belgede, normalleştirilmesi halinde bildiriminin yokluğunda üretilenden farklı bir değer üretecek bir değerle kullanılmışsa,
eleman içeriği bildirilmiş eleman türleri; bu türlerin gerçeklenenlerinden içlerinde doğrudan boşluk karakterleri kullanılmış olanlar varsa,
tekbaşına belge bildiriminin "no" değerine sahip olması ZORUNLUdur.
Tekbaşına belge bildirimli bir XML bildirimi örneği:
<?xml version="1.0" standalone='yes'?>
İmlenimden bağımsız olarak okunabilirliği arttırmak için XML belgeler düzenlenirken "boşluk karakterleri" (boşluklar, sekmeler, boş satırlar) bol bol kullanılır. XML belgenin dönüşeceği belgede böyle boşlukların istenmediği ve/veya özellikle korunmasının istendiği içerikler (şiir, kaynak kod gibi) olacaktır.
Bir XML işlemcinin imlenime ait olmayan tüm karakterleri uygulamaya aktarması ZORUNLUdur. Ayrıca, bir geçerlilik denetimi yapan XML işlemcinin bu karakterlerin eleman içeriğinde bulunan boşluk karakterlerinden olup olmadıkları konusunda da uygulamayı bilgilendirmesi ZORUNLUdur.
İçeriğindeki boşlukların korunması gereken elemanlar bunu uygulamaya, xml:space adlı özel bir öznitelikle bildirebilirler. Geçerli belgelerde, bu özniteliklerin, diğerleri gibi kullanıldıkları takdirde bildirilmeleri ZORUNLUdur. Bildirilirken, değeri bir sayısı sabit tür olarak, "default" ve "preserve" değerlerinden biri veya ikisiyle birden bildirilmelidir. Örnek:
<!ATTLIST manzume xml:space (default|preserve) 'preserve'> <!ATTLIST kaynakkod xml:space (preserve) #FIXED 'preserve'>
"default" değeri, bu eleman için uygulamaca kabul edilen boşluk karakterleri işleme kipinin uygun olacağını; "preserve" değeri ise, uygulamanın boşluk karakterlerinin oluşturduğu boşlukları korumasının istendiğini belirtir. Bildirilen isteğin, elemanın içeriğindeki tüm elemanlara (onlarda ayrıca birer xml:space özniteliği bulunmadıkça) uygulanacağı varsayılır. Bu belirtim xml:space özniteliğine "default" ve "preserve" dışında anlamlı bir değer atamaz. Başka değerlerin belirtilmesi bir hatadır; XML işlemci hatayı raporlayabileceği gibi SEÇİMLİK, öznitelik belirtimini yoksayarak veya hatalı değeri uygulamaya raporlayarak hatadan kurtulabilir SEÇİMLİK. Uygulamalar hatalı değerleri reddedebilir veya yoksayabilir.
Bir belgenin kök elemanının, bu öznitelik için bir değer sağlanmadıkça veya öznitelik bir öntanımlı değerle bildirilmiş olmadıkça, uygulamanın boşluk işleme ile ilgili olarak uygulamaya hiçbir istek bildirmek zorunda olmadığı varsayılır.
XML çözümlü öğeleri genellikle, düzenleme kolaylığı bakımından satırlar halinde düzenlenmiş dosyalardan oluşur. Bu satırlar genellikle satırsonu (#xA) ve satırbaşı (#xD) karakterlerinin biri veya ikisi kullanılarak birbirlerinden ayrılırlar.
Uygulamaların görevlerini basitleştirmek için XML işlemci girdideki harici çözümlenmiş öğelerde (belge öğesini de içererek) bulunan tüm satırsonları, girdi çözümlenmeden önce, iki karakterlik #xD #xA dizilimi ve ardından bir #xA gelmeyen #xD karakteri tek bir #xA karakterine dönüştürülerek normalleştirilmiş gibi davranmalıdır ZORUNLU.
Belge işlemede genellikle, içeriğin yazıldığı doğal ve biçimsel dili bilmek yararlıdır. Bir XML belgedeki elemanların öznitelik değerlerinde ve içeriğinde kullanılan dili belirtmek için belgeye xml:lang isimli özel bir öznitelik yerleştirilebilir. Geçerli bir belgede bu özniteliğin, diğerleri gibi, kullanılmışsa bildirilmiş olması ZORUNLUdur. Özniteliğin değeri olarak [IETF RFC 3066] (Dil Tanıtım Yaftaları) veya bir ardılı tarafından tanımlanmış dil belirteçlerinden biri veya boş dizge belirtilebilir.
(33'ten 38'e kadar olan tanım terimleri silindi.)
Örnek:
<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p> <p xml:lang="en-GB">What colour is it?</p> <p xml:lang="en-US">What color is it?</p> <sp who="Faust" desc='leise' xml:lang="de"> <l>Habe nun, ach! Philosophie,</l> <l>Juristerei, und Medizin</l> <l>und leider auch Theologie</l> <l>durchaus studiert mit heißem Bemüh'n.</l> </sp>
xml:lang tarafından belirtilen dil, belirtildiği elemana (özniteliklerinin değerleri dahil) ve içindeki tüm elemanlara (xml:lang belirtilmiş iç elemanlar hariç) uygulanır. Özellikle, B elemanını kapsayan bir A elemanındaki bir xml:lang belirtimi, B elemanındaki xml:lang özniteliğinde başka bir dil belirtmeksizin, boş değer belirterek, B elemanı için değiştirilebilir. B elemanının içeriği, sanki üstküme elemanlarında veya kendisinde hiç xml:lang belirtilmemiş gibi hiçbir dil içeriğiyle ilişkilendirilmez. Uygulamalar, hangi elemanların öznitelik değerlerinin ve hangi içerik parçalarının, belirtildiği takdirde, xml:lang ile belirtilen dile bağlı olarak ele alınacağını kendileri saptar.
xml:lang özniteliği ile belirtilen bir değerin bu değeri değiştireceği varsayılmalıdır.xml:lang için basit bir bildirim şöyle olabilir:
xml:lang CDATA #IMPLIED
Ancak, eğer uygunsa, özel öntanımlı değerler ayrıca verilebilir. İngiliz öğrenciler için Fransız şiirlerinin bir kolleksiyonu ile İngilizce olan tefsirler ve notlar xml:lang özniteliği şöyle bildirilebilir:
<!ATTLIST manzume xml:lang CDATA 'fr'> <!ATTLIST tefsir xml:lang CDATA 'en'> <!ATTLIST not xml:lang CDATA 'en'>
Her XML belge, her biri başlangıç etiketi ve bitiş etiketi ile sınırlanmış veya boş eleman etiketinden oluşan bir veya daha fazla eleman içerir. Her eleman ismiyle betimlenen bir türe (bazan buna soysal betimleyici (SB) dendiği de olur) ve çeşitli öznitelik belirtimlerine sahiptir. Her öznitelik bir isim ve bir değer ile belirtilir.
Eleman| [39] | eleman | ::= |
| |
| | [İBK: Eleman Türü Eşleşmeli] | |||
| [GK: Geçerli Eleman] |
Bu belirtimin bu ve gelecek sürümlerinin standartlaşımı için ayrılmış olan (('X'|'x')('M'|'m')('L'|'l')) ifadesiyle eşleşen dizgelerle başlayan isimler hariç, eleman türlerinin ve özniteliklerinin isimlerine, kullanımına ve uygulama anlamsallığına bu belirtimde kısıtlama konmamıştır.
Bir elemanın bitiş etiketindeki Ad ile başlangıç etiketindeki eleman türünün eşleşmesi ZORUNLUdur.
Bir elemanın geçerli olması için, Ad'ın eleman türü ile eşleştiği yerde elemanBild ile eşleşen bir bildirim olmalı ve aşağıdakilenden biri gerçekleşmelidir:
Bildirim EMPTY ile eşleşir ve eleman hiçbir içeriğe sahip değildir (hatta öğe gönderimleri, açıklamalar, işlem yönergeleri ve boşluk karakterleri bile yoktur).
Bildirim çocuklar sözdizimiyle eşleşir ve çocuk elemanlar dizisi, içerik modelindeki düzenli ifadeye uygun olarak üretilen dilde olup başlangıç etiketi ile ilk çocuk eleman arasında, çocuk elemanlar arasında veya son çocuk elemanla bitiş etiketi arasında isteğe bağlı olarak boşluk karakterleri, açıklamalar veya işlem yönergeleri (yani Muhtelif tanım teriminde yer alan imlenimler) içerebilir. İçinde sadece boşluk karakterleri veya boşluk karakterlerine ikame edilen karakter gönderimleri olan CDATA (imlenim olarak okunmayan açıklama) bölümleri, B sözdizimiyle eşleşmeyeceğinden burada yer alamaz, ancak içerdiği karakter gönderimleri boşluk karakterlerine ikame edilen sabit değerli dahili öğeler, B ile eşleşeceklerinden burada yer alabilir.
Bildirim Karışık ile eşleşir; içerik ise (öğe gönderimlerinin yerlerine ikame metinleri yerleştirildikten sonra), karakter verisi (CDATA bölümleri dahil), açıklamalar, işlem yönergeleri ve türleri içerik modelindeki isimlerle eşleşen çocuk elemanlardan oluşur.
Bildirim ANY ile eşleşir; içerik ise (öğe gönderimlerinin yerlerine ikame metinleri yerleştirildikten sonra), karakter verisi, CDATA bölümleri, açıklamalar, işlem yönergeleri ve türleri bildirilmiş olan çocuk elemanlardan oluşur.
Boş olmayan her XML elemanının başlangıcı bir başlangıç etiketi ile imlenir.
Başlangıç Etiketi| [40] | BaşlEtiketi | ::= | '<' | [İBK: Eşsiz Öznitelik Belirtimi] |
| [41] | Öznitelik | ::= |
| [GK: Öznitelik Değerinin Türü] |
| [İBK: Harici Öğe Gönderimleri Olmamalı] | ||||
| [İBK: Öznitelik Değerleri < İçermemeli] |
Başlangıç ve bitiş etiketindeki Ad, elemanın türünü verir. Ad-ÖznitDeğeri çiftine elemanın öznitelik belirtimi, her çiftteki Ada öznitelik adı ve ÖznitDeğeri (' veya " ayraçları arasındaki metin) içeriğine de öznitelik değeri denir. Bir başlangıç etiketindeki veya bir boş etiketteki öznitelik belirtimlerinin sırasının önemsizliğine dikkat ediniz.
Bir öznitelik ismi aynı başlangıç veya boş eleman etiketinde birden fazla yer almamalıdır ZORUNLU.
Öznitelik bildirilmiş olmalıdır ZORUNLU; değeri onun için bildirilmiş türde olmalıdır ZORUNLU. (Öznitelik türleri için 3.3 Öznitelik Listesi Bildirimleri bölümüne bakınız.)
Öznitelik değerleri doğrudan veya dolaylı olarak harici öğelere öğe gönderimleri içermemelidir ZORUNLU.
< İçermemeliBir öznitelik değeri içinde doğrudan veya dolaylı olarak atıfta bulunulmuş bir öğenin ikame metni bir < içermemelidir ZORUNLU.
Bir başlangıç etiketi örneği:
<termdef id="dt-dog" term="köpek">
Bir başlangıç etiketi ile başlayan her elemanın sonu, başlangıç etiketinde belirtilen eleman türünü yansıtan ismi içeren bir bitiş etiketi tarafından imlenir:
Bitiş Etiketi| [42] | BitişEtiketi | ::= | '</' |
Bir bitiş etiketi örneği:
</termdef>
Başlangıç ve bitiş ekiketleri arasındaki metine elemanın içeriği denir:
Eleman İçeriği| [43] | içerik | ::= |
|
Hiç içeriği olmayan eleman boştur. Bir boş eleman ya bir başlangıç etiketinin hemen ardına bir bitiş etiketi yerleştirerek ya da bir boş eleman etiketi ile gösterilir. Bir boş eleman etiketi özel bir biçime sahiptir:
| [44] | BoşElemEtiketi | ::= | '<' | [İBK: Eşsiz Öznitelik Belirtimi] |
Boş eleman etiketi EMPTY anahtar sözcüğüyle bildirilmiş olsun ya da olmasın hiçbir içeriğe sahip olmayan her eleman için kullanılabilir. Birlikte çalışabilirlik için, boş eleman etiketi sadece ve sadece EMPTY bildirimli elemanlar için kullanılmalıdır ÖNERİ.
Boş eleman örnekleri:
<IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" /> <br></br> <br />
XML belgenin eleman yapısı, geçerlilikle ilgili amaçlara yönelik olarak, eleman türü ve öznitelik listesi bildirimleri kullanılarak kısıtlanabilir. Bir eleman türü bildirimi elemanın içeriğini kısıtlar.
Eleman türü bildirimleri çoğunlukla elemanın çocukları olan eleman türlerini kısıtlar. Seçim kullanıcının olmak üzere, bir XML işlemci, bir bildirimin hakkında hiçbir bildirimin yapılmadığı bir elemanı içermesi ama bunun bir hata olmaması durumunda bir uyarı verebilir SEÇİMLİK.
Bir eleman türü bildiriminin biçimi:
Eleman Türü Bildirimi| [45] | elemanBild | ::= | '<!ELEMENT' | [GK: Eşsiz Eleman Türü Bildirimi] |
| [46] | içerikBelirtimi | ::= | 'EMPTY' | 'ANY' | |
Burada Ad bildirdiği elemanın türüdür.
Bir eleman türü birden fazla bildirilmemelidir ZORUNLU.
Eleman türü bildirimi örnekleri:
<!ELEMENT br EMPTY> <!ELEMENT p (#PCDATA|emph)* > <!ELEMENT %name.para; %content.para; > <!ELEMENT container ANY>
Elemanların sadece aralarında boşluk karakterlerinin (B sözdizimiyle eşleşen karakterler) bulunmasının isteğe bağlı olduğu çocuk elemanlardan oluşmasının ZORUNLU olduğu durumda, böyle bir eleman türü bir eleman içeriğine sahip demektir. Bu durumda kural basit bir dilbilgisine sahip bir içerik modeli içerir. Bu model izin verilen çocuk eleman türlerini ve bunların içerikte yer alabilecekleri sırayı içerir. Dilbilgisi, isimler, içerik parçacıkları seçim listeleri veya içerik parçacıkları sıralama listelerinden oluşan içerik parçacıklarından (içerikparçacığı) oluşur:
| [47] | çocuklar | ::= | ( | |
| [48] | içerikparçacığı | ::= | ( | |
| [49] | seçim | ::= | '(' | [GK: Düzgün Gruplama/Parametre Öğesi İç İçeliği] |
| [50] | sıra | ::= | '(' | [GK: Düzgün Gruplama/Parametre Öğesi İç İçeliği] |
Burada her Ad, bir çocuk eleman olarak karşımıza çıkabilecek bir elemanın türüdür. Bir seçim listesindeki bir içerik parçacığı, eleman içeriğinde, seçim listesinin dilbilgisi içinde görüldüğü yerde bulunabilir; bir sıralama listesinde bulunan içerik parçacıklarının her biri eleman içeriğinde listede belirtilen sırada yer almalıdır ZORUNLU. Bir isim veya listeyi izleyen isteğe bağlı karakterler, listedeki elemanların ve içerik parçacıklarının, bir kere veya daha fazla mı (+), hiç veya bir kere mi (?) yoksa hiç veya defalarca mı (*) yer alabileceklerini belirtirler. Böyle bir işlecin yokluğu, eleman veya içerik parçacığının listede sadece ve sadece bir kere yer alabileceği ZORUNLU anlamına gelir. Bu sözdizimi ve manası bu belirtimdeki sözdizimi tanımlarında kullanılanla aynıdır.
Bir eleman içeriğinin bir içerik modeliyle eşleşmesi için, sıralama, seçim ve yineleme işleçlerine tabi olarak ve içeriğindeki her elemanı içerik modelindeki bir eleman türüne eşleyerek, içerik modeli boyunca sadece ve sadece tek bir yol izlenebilir olmalıdır. Uyumluluk için, içerik modelinin, bir elemanın, model içindeki bir eleman türünün birden fazla oluşumu ile eşleşmesine izin vermesi hatadır. Daha fazla bilgi için E Belirlenimci İçerik Modelleri bölümüne bakınız.
Parametre öğesinin ikame metni parantezli gruplar halinde düzgün biçimde iç içe geçmiş olmalıdır ZORUNLU. Başka bir deyişle, bir seçim, sıra veya Karışık oluşumundaki açan veya kapatan parantezlerden herhangi biri bir parametre öğesinin ikame metni içindeyse, ikisinin de aynı ikame metninde içeriliyor olması gerekir ZORUNLU.
Birlikte çalışabilirlik için, eğer bir parametre öğesi gönderimi, bir seçim, sıra veya Karışık oluşumunda bulunuyorsa, parametre öğesinin ikame metni en azından bir boş olmayan karakter içermeli ÖNERİ ve ikame metninin ne ilk ne de son boş olmayan karakteri bir bağlaç (| veya ,) olmalıdır ÖNERİ.
Eleman içerik modelleri örnekleri:
<!ELEMENT spec (front, body, back?)> <!ELEMENT div1 (head, (p | list | note)*, div2*)> <!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>
Bir eleman türü, karakter verisi (tercihan aralarına çocuk elemanlar serpiştirilmiş olarak) içerebilen türde olduğu takdirde karışık içerik sahibi demektir. Bu durumda, çocuk elemanların türleri, sıralanışları ve oluşum sayısı dışında herşeyi kısıtlanabilir:
Karışık İçerik Bildirimi| [51] | Karışık | ::= | '(' | |
| '(' | [GK: Düzgün Gruplama/Parametre Öğesi İç İçeliği] | |||
| [GK: Türler Yinelenmemeli] |
Buradaki Adlar çocuk elemanların türleridir. #PCDATA anahtar sözcüğü ezelden beridir "parsed character data" (çözümlenmiş karakter verisi) sözcüklerinden türetilmektetir.
Aynı ad tek bir karışık içerikte birden fazla gözükmemelidir ZORUNLU.
Karışık içerik bildirimleri örnekleri:
<!ELEMENT p (#PCDATA|a|ul|b|i|em)*> <!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* > <!ELEMENT b (#PCDATA)>
Öznitelikler isim-değer çiftlerini elemanlarla ilişkilendirmek için kullanılmalıdır. Öznitelik belirtimleri başlangıç etiketleri ve boş eleman etiketleri dışında gözükmemelidir ZORUNLU; bu nedenle, bunları eşleştirmek için 3.1 Başlangıç, Bitiş ve Boş-Eleman Etiketleri bölümündeki sözdizimi tanımları kullanılır. Öznitelik listesi bildirimlerinin kullanım yerleri:
Belli bir eleman türüne ait öznitelik kümesini tanımlamak için.
Bu öznitelikler için tür kuralları oluşturmak için.
Özniteliklere öntanımlı değerler sağlamak için.
Öznitelik listesi bildirimleri ile ad, veri türü ve belli bir eleman türü ile ilişkili öznitelikler için (varsa) öntanımlı değer belirtilir:
Öznitelik Listesi Bildirimi| [52] | ÖznitListBild | ::= | '<!ATTLIST' |
| [53] | ÖznitTanımı | ::= |
|
ÖznitListBild sözdizimi tanımındaki Ad bir eleman türüdür. Seçim kullanıcının olmak üzere, bir XML işlemci, eğer bir öznitelik, bildirilmemiş bir eleman türü için bildirilmişse uyarı verebilir SEÇİMLİK, fakat bu bir hata değildir. ÖznitListBild sözdizimi tanımındaki Ad özniteliğin ismidir.
Bir eleman türü için birden fazla ÖznitListBild varsa bunların içerikleri birleştirilir. Bir eleman türünün aynı özniteliği için birden fazla bildirim varsa, ilk bildirim dışındakiler yok sayılır. Birlikte çalışabilirlik için, DTD yazarları belli bir eleman türü için en fazla bir öznitelik listesi bildirimi, bir öznitelik listesi bildirimindeki belli bir öznitelik ismi için en fazla bir öznitelik tanımı ve her öznitelik listesi bildiriminde en az bir öznitelik tanımı yapmayı tercih edebilir. Birlikte çalışabilirlik için, seçim kullanıcının olmak üzere, bir XML işlemci, bir eleman türü için birden fazla öznitelik listesi bildirimi veya bir öznitelik için birden fazla öznitelik tanımı varsa, bir uyarı verebilir SEÇİMLİK, fakat bu bir hata değildir.
XML öznitelik türleri üç tanedir: dizge türü, dizgecik kümesi türü ve sayısı sabit tür. Dizge türü değer olarak bir dizgesel sabit alırken dizgecik kümesi türü biraz daha fazla kurala tabidir. Aşağıdaki dilbilgisi içinde belirtilen geçerlilik kısıtları, öznitelik değeri 3.3.3 Öznitelik Değerinin Normalleştirilmesi bölümünde açıklandığı gibi normalleştirildikten sonra uygulanır.
Öznitelik Türleri| [54] | ÖznitTürü | ::= |
| |
| [55] | DizgeTürü | ::= | 'CDATA' | |
| [56] | DizgecikTürü | ::= | 'IDREF' | [GK: IDREF] |
| 'IDREFS' | [GK: IDREF] | |||
| 'ENTITY' | [GK: Öğe İsmi] | |||
| 'ENTITIES' | [GK: Öğe İsmi] | |||
| 'NMTOKEN' | [GK: Ad Dizgeciği] | |||
| 'NMTOKENS' | [GK: Ad Dizgeciği] | |||
| 'ID' | [GK: ID Eşsizliği] | |||
| [GK: Eleman Türü Başına Bir ID] | ||||
| [GK: ID Özniteliği Öntanımlısı] |
ID türünden değerlerin Ad sözdizimi tanımı ile eşleşmesi ZORUNLUdur. Bir Ad, bu türden bir değer olarak bir XML belgede bir kereden fazla gözükmemelidir ZORUNLU. Yani, ID değerlerinin belirtildikleri elemanları eşsiz olarak betimlemesi ZORUNLUdur.
Bir eleman türü için birden fazla ID özniteliği belirtilemez ZORUNLU.
Bir ID özniteliğinin #IMPLIED veya #REQUIRED öntanımlısı ile bildirilmesi ZORUNLUdur.
IDREF türünden değerlerin Ad sözdizimi tanımıyla eşleşmesi ZORUNLU olup IDREFS türünden değerlerin de Adlar sözdizimi tanımıyla eşleşmesi ZORUNLUdur; her Adın XML belgedeki elemanlardan yalnız birinin ID özniteliğinin değeri ile eşleşmesi ZORUNLUdur; yani, IDREF değerlerinin bazı ID özniteliklerinin değerleri ile eşleşmesi gerekir ZORUNLU.
ENTITY türünden değerlerin Ad sözdizimiyle, ENTITIES türünden değerlerin Adlar sözdizimiyle eşleşmesi ZORUNLUdur; her Ad'ın DTD içinde bildirilmiş bir çözümlenmemiş öğe ismiyle eşleşmesi ZORUNLUdur.
NMTOKEN türünden değerlerin AdDizge sözdizimiyle, NMTOKENS türünden değerlerin AdDizgeler sözdizimiyle eşleşmesi ZORUNLUdur.
Sayısı sabit türden özniteliklerin bildirimleri izin verilen değerlerin bir listesini içerir. Bu özniteliklerin bu değerlerden birini alması ZORUNLUdur. İki çeşit sayısı sabit türde öznitelik vardır:
Sayısı Sabit Öznitelik Türleri| [57] | SayısıSabitTür | ::= |
| |
| [58] | GösterimTürü | ::= | 'NOTATION' | [GK: Gösterim Öznitelikleri] |
| [GK: Eleman Türü Başına Bir Gösterim] | ||||
| [GK: Boş Elemanda Gösterim Olmaz] | ||||
| [GK: Dizgecikler Yinelenemez] | ||||
| [59] | Sayım | ::= | '(' | [GK: Sayım] |
| [GK: Dizgecikler Yinelenemez] |
Bir NOTATION özniteliği, özniteliğin eklendiği elemanı yorumlamakta kullanılacak, SYSTEM ve/veya PUBLIC betimleyicileri ile belirtilmiş DTD'de bildirilmiş bir gösterimi betimler.
Bu türden değerlerin bildirimde içerilen gösterim adlarından biri ile eşleşmesi ZORUNLUdur; bildirimdeki tüm gösterim adlarının bildirilmiş olması ZORUNLUdur.
Bir eleman türü içinde birden fazla NOTATION özniteliği belirtilemez ZORUNLU.
Uyumluluk için, NOTATION türünden bir öznitelik EMPTY ile bildirilmiş bir elemanda bildirilemez ZORUNLU.
Gösterim adlarının müstakilen tek bir GösterimTürü öznitelik bildiriminde gözükmesi ZORUNLU olup AdDizgeciklerinin de müstakilen tek bir Sayım öznitelik bildiriminde gözükmesi ZORUNLUdur.
Bu türden değerlerin bildirimdeki AdDizgeciklerinden biri ile eşleşmesi ZORUNLUdur.
Birlikte çalışabilirlik için, aynı AdDizgeciğinin bir eleman türünün sayısı sabit öznitelik türlerinde birden fazla gözükmemesi ÖNERİlir.
Bir Öznitelik bildirimi, özniteliğin varlığının gerekli olup olmadığına dair bilgi sağlar ZORUNLU; gerekli değilse XML işlemcinin bir bildirilmiş özniteliğin bir belgede bulunmayışı halinde nasıl tepki vereceği bilgisini sağlar.
Öznitelik Öntanımlıları| [60] | ÖntanımlıBild | ::= | '#REQUIRED' | '#IMPLIED' | |
| (('#FIXED' | [GK: Öznitelik Gerekliliği] | |||
| [GK: Öntanımlı Öznitelik Değerinin Sözdizimsel Doğruluğu] | ||||
| [İBK: Öznitelik Değerleri < İçermemeli] | ||||
| [GK: Sabit Öznitelik Değeri] | ||||
| [İBK: Harici Öğe Gönderimleri Olmamalı] |
Bir öznitelik bildiriminde #REQUIRED anahtar sözcüğü özniteliğin varlığının ZORUNLU olduğu, #IMPLIED ise hiçbir öntanımlı değerin sağlanmadığı anlamına gelir. Bildirim ne #REQUIRED ne de #IMPLIED sözcüğünü içeriyorsa, ÖznitDeğerinin içeriği öntanımlı değer olarak kabul edilir; bildirimde #FIXED anahtar sözcüğünün varlığı, özniteliğin ZORUNLU olarak daima bu öntanımlı değere sahip olacağı anlamına gelir. XML işlemci, bir elemanın bir öznitelik belirtimi olmaksızın bir öntanımlı değer bildirimiyle okunmasının gerekliliğini saptadığında, XML işlemcinin özniteliği uygulamaya bildirilmiş öntanımlı değeriyle raporlaması ZORUNLUdur.
Eğer öntanımlı bildirim #REQUIRED anahtar sözcüğü ise, özniteliğin öznitelik listesi bildiriminde türü belirtilen tüm elemanlar için belirtilmesi ZORUNLUdur.
Bildirilen öntanımlı değerin, bildirilen öznitelik türünün sözdizimsel kurallarına uygun olması ZORUNLUdur. Yani, bir özniteliğin öntanımlı değeri:
IDREF veya ENTITY türündeyse, Ad sözdizimi tanımıyla eşleşmelidir;
IDREFS veya ENTITIES türündeyse, Adlar sözdizimi tanımıyla eşleşmelidir;
NMTOKEN türündeyse, AdDizge sözdizimi tanımıyla eşleşmelidir;
NMTOKENS türündeyse, AdDizgeler sözdizimi tanımıyla eşleşmelidir;
bir sayısı sabit türdeyse (ya NOTATION türünde ya da bir sayısı sabit değerli), sayısı belli değerlerden biriyle eşleşmelidir.
Burada sadece türün sözdizimsel kurallarının gerekli oluşuna dikkat ediniz; diğer kurallar (örneğin, ENTITY türünde bir öznitelik için değerin bildirilmiş bir çözümlenmemiş öğenin ismi olması) bir geçerliliği sınayan çözümleyici tarafından sadece bu özniteliğin gözükmediği bir elemanın varlığında raporlanacaktır.
Eğer bir öznitelik #FIXED anahtar sözcüğü ile bildirilmiş bir öntanımlı değere sahipse, bu öznitelik ait olduğu elemanda öntanımlı değeriyle eşleştirilmelidir ZORUNLU.
Özn