Özet
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.
Belgenin Durumu
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
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,
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
Bu belge bir
Bu belgede (İngilizce sürümünde) bulduğunuz hataları lütfen
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
İçindekiler
Ekler
1 Giriş
Genişletilebilir İmlenim Dili [XML - eXtensible Markup Language],
XML belgeler,
1.1 Öncüler ve Hedefler
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 [
XML belirtiminin bu sürümü, metnin tamamı ve yasal uyarıları aynen korunduğu takdirde özgürce dağıtılabilir.
1.2 Terminoloji
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 [
- hata
- Bu belirtimin kurallarıyla bir uyumsuzluk bir hatadır; sonuçları bilinemez. Aksi belirtilmedikçe, bu belirtimde ZORUNLU, ÖNERİ ve SEÇİMLİK anahtar sözcüklerinden biri tarafından imlenmiş bir talimatı yerine getirmekte başarısız olmak bir hatadır. Uyumlu bir yazılım bir hatayı saptayabilir SEÇİMLİK, raporlayabilir ve ondan kurtulabilir SEÇİMLİK.
- ölümcül hata
- Bir uyumlu XML işlemcinin saptayıp raporlamasının ZORUNLU olduğu bir hata. Bir ölümcül hataya rastladığında işlemci başka hataları da bulmak ve böyle hataları uygulamaya raporlamak SEÇİMLİK için veriyi işlemeye devam edebilir SEÇİMLİK. Hataların düzeltilmesine destek vermek için işlemci belgedeki işlenmemiş veriyi (karakter verisi ve imlenim karışık halde) uygulamaya kullanılır kılabilir SEÇİMLİK. Ölümcül hata saptandığı anda, işlemci normal işleme devam etmemelidir ZORUNLU (yani, belgenin mantıksal yapısı hakkındaki bilgiyi ve karakter verisini uygulamaya normal yolla aktarmaya devam etmemelidir ZORUNLU).
- seçim kullanıcının
- Uyumlu yazılım (cümledeki fiilin çekim kipine bağlı olarak) ya açıklandığı gibi davranabilir SEÇİMLİK ya da açıklandığı gibi davranmalıdır ZORUNLU; her ne yapılacaksa, (işlemci/uygulama) kullanıcının açıklanan davranışı iptal etmesini veya etkin kılmasını sağlamalıdır. ZORUNLU.
- geçerlilik kuralı
- Geçerlitüm XML belgelere uygulanan kural. Geçerlilik kuralıyla uyumsuzluk hatadır; bu hatalargeçerliliği sınayan XML işlemcilertarafından, seçim kullanıcıya bırakılarak, raporlanmalıdır ZORUNLU.
- iyi biçimlilik kuralı
- İyi biçimlitüm XML belgelere uygulanan kural. İyi biçimlilik kuralıyla uyumsuzlukölümcül hatadır.
- eşleşme
- (Dizgeler ve isimler için:)İki dizge veya isim, karşılaştırıldıklarında aynıysalar eşleşiyorlar demektir. ISO/IEC 10646'da çok sayıda olası gösterimi olan karakterler (yani, birden fazla karakterin birleşiminden oluşan karakterlerin, birleşik tek karakterlik ve çok karakterli gösterimleri) bakımından, iki dizge, sadece her iki dizge de aynı gösterimi içeriyorsa eşleşirler. Karakter büyüklüğü ile ilgili hiçbir işlem yapılmaz. (dizgeler ve dilbilgisi kuralları için:) Bir sözdizimsel tanım tarafından üretilmiş dile mensup bir dizge aynı sözdizimsel tanımla eşleşir. (içerikler ve içerik modelleri için:) Bir eleman [GK: Geçerli Eleman] kuralında açıklanan anlamda uyumlu olduğunda kendi bildirimi ile eşleşir.
- uyumluluk için
- Sadece XML'nin SGML ile uyumlu kalacağından emin olmak için içerilmiş bir XML özelliğini açıklayan bir cümleyi imler.
- birlikte çalışabilirlik için
- XML belgelerin sistemde kurulu olan ISO 8879'a WebSGML Uyarlamaları Eki öncesi SGML işlemcileri tabanı tarafından işlenebilme şansını arttırmak için içerilmiş ilgisiz bir önergeyi açıklayan bir cümleyi imler.
2 Belgeler
Bir veri nesnesi bu belirtimde tanımlandığı gibiHer XML belge, mantıksal ve fiziksel yapıların her ikisine de sahiptir. Fiziksel olarak, belge
2.1 İyi Biçimli XML Belgeler
Bir metin nesnesinin iyi biçimli bir XML belge olması için:Bir bütün olarak,
sözdizimiyle eşleşmelidir.belgeBu 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 biriiyi biçimliolmalıdır.
| [1] | belge | ::= | |
Bir XML belgenin
belgeBir veya daha fazla
elemaniç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ıç etiketibaşka bir elemanın içindeyse,bitiş etiketide 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.
2.2 Karakterler
Bir çözümlenmiş öğe, karakter veriler yanında imlenimi de göstermekte kullanılan
Kark| [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 [
- Not:
- Belge yazarlarının [Unicode]'un 6.8. bölümünde tanımlanan "uyumluluk karakterleri"ni kullanmaktan kaçınmaları önerilir (ayrıca, [Unicode3]'ün 3.6. bölümündeki D21'e de bakınız). Ayrıca, aşağıdaki karakter aralıklarını kullanmaktan da vazgeçilmiştir. Bu karakterler ya denetim karakterleridir ya da kalıcı olarak tanımlanmamış Unicode karakterleridir:
[#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].
2.3 Ortak Sözdizimsel Oluşumlar
Bu bölümde dilbilgisi içinde geniş çapta kullanılan simgeler tanımlanmaktadır.
B#x20), sekme (#x9), satırsonu (#xA) veya satırbaşı (#xD) karakterinden oluşur.Boşluk Karakterleri| [3] | B | ::= | (#x20 | #x9 | #xD | #xA)+ |
- Not:
- Yukarıdaki sözdizimi tanımında yer alan
#xDkarakteri tamamenilk belirtimile geriye uyumluluk adına vardır.Satırsonlarının İşlenmesibölümünde açıklandığı gibi bir XML belgedeki#xDkarakterleri herhangi bir başka işlem yapılmadan önce tek tek silinir veya yerlerine#xAkarakterleri yerleştirilir.sözdizimiyle eşleşenB#xDkarakterini 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ü
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.- Not:
- XML önergesindeki isim-alanları [XML Adları], ikinokta imleri içeren adlara bir anlam yükler. Bu bakımdan, yazarlar XML adlarında isim-alanlarının amaçları dışında ikinokta imi kullanmamalı, ama XML işlemciler, ikinokta imini 'bir isim karakteri olarak' kabul etmelidirler.
Bir
ad dizgeciği| [4] | AdKark | ::= | |
| [5] | Ad | ::= | ( |
| [6] | Adlar | ::= | |
| [7] | AdDizge | ::= | ( |
| [8] | AdDizgeler | ::= | |
- Not:
- ve
Adlarsözdizimi tanımları normalleştirme sonrası dizgecikli öznitelik değerlerinin geçerliliğini tanımlamakta kullanılır (bkz,AdDizgelerÖ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ÖznitDeğeriSistemSabitiSistemSabiti| [9] | ÖğeDeğeri | ::= | '"' ([^%&"] | |
| "'" ([^%&'] | | |||
| [10] | ÖznitDeğeri | ::= | '"' ([^<&"] | |
| "'" ([^<&'] | | |||
| [11] | SistemSabiti | ::= | ('"' [^"]* '"') | ("'" [^']* "'") |
| [12] | GenidSabiti | ::= | '"' |
| [13] | GenidKark | ::= | #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] |
- Not:
- sözdizimi tanımı, bir genel öğenin tanımının bir sabitte tek bir
ÖğeDeğeri<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.
2.4 Karakter Verisi ve İmlenim
Bir
XML bildirimlerimetin bildirimleriVe imi (&) ve açılı sol ayraç (<), bir
&" ve "<" dizgeleri olarak görünmelidirler ZORUNLU. Açılı sağ ayraç (>), ">" dizgesi kullanılarak gösterilebilirse de, ]]>" dizgesi bir >" 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 | ::= | [^<&]* - ([^<&]* ']]>' [^<&]*) |
2.5 Açıklamalar
Açıklamalar bir belge--" (ç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.Açıklamalar| [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--->
2.6 İşlem Yönergeleri
İş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
PIHedefiXML", "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 2.7 CDATA Bölümleri
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:CDATA Bölümleri| [18] | CDATABölümü | ::= | |
| [19] | CDATABaşl | ::= | '<![CDATA[' |
| [20] | CDATAVerisi | ::= | ( |
| [21] | CDATABitiş | ::= | ']]>' |
Bir CDATA bölümünün içinde sadece
CDATABitiş<" ve "&" biçiminde olmaları gerekmez (gerekmemeli). CDATA bölümleri birbirlerinin içinde bulunamazlar."<greeting>" ve "</greeting>" etiketlerinin
<![CDATA[<greeting>Merhaba, Dünyalı!</greeting>]]>
2.8 Önbölük ve Belge Türü Bildirimi
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,<?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ü bildiriminin belgedeki ilk
| [22] | önbölük | ::= | |
| [23] | XMLBild | ::= | '<?xml' |
| [24] | SürümBilgisi | ::= | |
| [25] | Eşittir | ::= | |
| [26] | SürümNum | ::= | '1.0' |
| [27] | Muhtelif | ::= | |
| [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İmlenim bildirimleri tamamen veya kısmen
elemanBildÖznitListBildParametre öğesi gönderimlerinden dizgesel sabitlerin, işlem yönergelerinin, açıklamaların ve yoksayılan şart bölümlerinin (bkz,
- Geçerlilik kuralı: Kök Eleman Türü
- içindeki
belgetürübild,Adkök elemantüründeki elemanla eşleşmelidir ZORUNLU.
- Geçerlilik kuralı: Düzgün Bildirim/Parametre Öğesi İç İçeliği
Parametre öğesi
ikame metniile 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ılanparametre öğesiikame metninin içinde yer alıyorsa, her ikisi de aynı ikame metninde içeriliyor olmalıdırlar ZORUNLU.
- İyi biçimlilik kuralı: Dahili Altkümedeki Parametre Öğeleri
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.)
- İyi biçimlilik kuralı: Harici Altküme
Bir harici altküme (varsa),
sözdizimiyle eşleşmelidir ZORUNLU.dışAltKüme
- İyi biçimlilik kuralı: Bildirimler arasında Parametre Öğeleri
Bir
içindeki bir parametre öğesi gönderiminin ikame metniBildAyrsözdizimiyle eşleşmelidir ZORUNLU.dışAltKümeBild
Dahili altküme gibi, bir
BildAyrimlenimBild| [30] | dışAltKüme | ::= | |
| [31] | dışAltKümeBild | ::= | ( |
Harici altküme ve harici parametre öğeleri, dahili altkümedekilerden,
Belge türü bildirimine sahip bir XML belge örneği:
<?xml version="1.0"?> <!DOCTYPE greeting SYSTEM "hello.dtd"> <greeting>Merhaba, Dünyalı!</greeting>
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.
2.9 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
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.
- Geçerlilik kuralı: Tekbaşına Belge Bildirimi
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,quotdışındakiler); eğer belgede bu öğeleregönderimlervarsa,dizgecikli türde öznitelikler; öznitelik belgede,
normalleştirilmesihalinde bildiriminin yokluğunda üretilenden farklı bir değer üretecek bir değerle kullanılmışsa,- eleman içeriğibildirilmiş 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'?>
2.10 Boşlukların İşlenmesi
İ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
İç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
<!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
2.11 Satırsonlarının İşlenmesi
XML
#xA) ve satırbaşı (#xD) karakterlerinin biri veya ikisi kullanılarak birbirlerinden ayrılırlar.#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.2.12 Dilin Belirtilmesi
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
(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.
- Not:
- Dil bilgisi ayrıca, (HTTP veya MIME gibi) harici aktarım protokollerince de sağlanmış olabilir. Bu olduğu takdirde, bu bilgi XML uygulamalarınca kullanılabilir, ancak yerel olarak sağlanmış bir
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'>
3 Mantıksal Yapılar
Her| [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.
- İyi biçimlilik kuralı: Eleman Türü Eşleşmeli
Bir elemanın bitiş etiketindeki
ile başlangıç etiketindeki eleman türünün eşleşmesi ZORUNLUdur.Ad
- Geçerlilik kuralı: Geçerli Eleman
Bir elemanın geçerli olması için,
'ın eleman türü ile eşleştiği yerdeAdile eşleşen bir bildirim olmalı ve aşağıdakilenden biri gerçekleşmelidir:elemanBildBildirim EMPTY ile eşleşir ve eleman hiçbir
içeriğesahip değildir (hatta öğe gönderimleri, açıklamalar, işlem yönergeleri ve boşluk karakterleri bile yoktur).Bildirim
sözdizimiyle eşleşir veçocuklarçocuk elemanlardizisi, 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 (yanitanı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,Muhtelifsö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,Bile eşleşeceklerinden burada yer alabilir.BBildirim
ile eşleşir; içerik ise (öğe gönderimlerinin yerlerine ikame metinleri yerleştirildikten sonra),Karışıkkarakter verisi(CDATA bölümleridahil),açıklamalar,işlem yönergelerive 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önergelerive türleri bildirilmiş olançocuk elemanlardan oluşur.
3.1 Başlangıç, Bitiş ve Boş-Eleman Etiketleri
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
AdAdÖznitDeğeriAdÖ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.- İyi biçimlilik kuralı: Eşsiz Öznitelik Belirtimi
Bir öznitelik ismi aynı başlangıç veya boş eleman etiketinde birden fazla yer almamalıdır ZORUNLU.
- Geçerlilik kuralı: Öznitelik Değerinin Türü
Öznitelik bildirilmiş olmalıdır ZORUNLU; değeri onun için bildirilmiş türde olmalıdır ZORUNLU. (Öznitelik türleri için
Öznitelik Listesi Bildirimleribölümüne bakınız.)
- İyi biçimlilik kuralı: Harici Öğe Gönderimleri Olmamalı
Öznitelik değerleri doğrudan veya dolaylı olarak harici öğelere öğe gönderimleri içermemelidir ZORUNLU.
- İyi biçimlilik kuralı: Öznitelik Değerleri
<İçermemeli Bir öznitelik değeri içinde doğrudan veya dolaylı olarak atıfta bulunulmuş bir öğenin
ikame metnibir<içermemelidir ZORUNLU.
Bir başlangıç etiketi örneği:
<termdef id="dt-dog" term="köpek">
| [42] | BitişEtiketi | ::= | '</' |
Bir bitiş etiketi örneği:
</termdef>
| [43] | içerik | ::= | |
içeriği| [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.
Boş eleman örnekleri:
<IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" /> <br></br> <br />
3.2 Eleman Türü Bildirimleri
Eleman türü bildirimleri çoğunlukla elemanın
| [45] | elemanBild | ::= | '<!ELEMENT' | [GK: Eşsiz Eleman Türü Bildirimi] |
| [46] | içerikBelirtimi | ::= | 'EMPTY' | 'ANY' | |
Burada
Ad- Geçerlilik kuralı: Eşsiz Eleman Türü Bildirimi
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>
3.2.1 Eleman İçeriği
Elemanların sadece aralarında boşluk karakterlerinin (Biçerikparçacığı| [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+), 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.
- Geçerlilik kuralı: Düzgün Gruplama/Parametre Öğesi İç İçeliği
Parametre öğesinin
ikame metniparantezli gruplar halinde düzgün biçimde iç içe geçmiş olmalıdır ZORUNLU. Başka bir deyişle, bir,seçimveyasıraoluşumundaki açan veya kapatan parantezlerden herhangi biri birKarışıkparametre öğ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çimveyasıraoluş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ç (Karışık|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;)*>
3.2.2 Karışık İçerik
Bir eleman| [51] | Karışık | ::= | '(' | |
| '(' | [GK: Düzgün Gruplama/Parametre Öğesi İç İçeliği] | |||
[GK: Türler Yinelenmemeli] |
Buradaki
Ad- Geçerlilik kuralı: Türler Yinelenmemeli
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)>
3.3 Öznitelik Listesi Bildirimleri
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ğerlersağlamak için.
| [52] | ÖznitListBild | ::= | '<!ATTLIST' |
| [53] | ÖznitTanımı | ::= | |
ÖznitListBildAdÖznitListBildAdBir eleman türü için birden fazla
ÖznitListBild3.3.1 Öznitelik Türleri
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
| [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ı] |
- Geçerlilik kuralı: ID Eşsizliği
ID türünden değerlerin
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.Ad
- Geçerlilik kuralı: Eleman Türü Başına Bir ID
Bir eleman türü için birden fazla ID özniteliği belirtilemez ZORUNLU.
- Geçerlilik kuralı: ID Özniteliği Öntanımlısı
Bir ID özniteliğinin #IMPLIED veya #REQUIRED öntanımlısı ile bildirilmesi ZORUNLUdur.
- Geçerlilik kuralı: IDREF
IDREF türünden değerlerin
sözdizimi tanımıyla eşleşmesi ZORUNLU olup IDREFS türünden değerlerin deAdsözdizimi tanımıyla eşleşmesi ZORUNLUdur; herAdları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.Ad
- Geçerlilik kuralı: Öğe İsmi
ENTITY türünden değerlerin
sözdizimiyle, ENTITIES türünden değerlerinAdsözdizimiyle eşleşmesi ZORUNLUdur; herAdlar'ınAdDTDiçinde bildirilmiş birçözümlenmemiş öğeismiyle eşleşmesi ZORUNLUdur.
- Geçerlilik kuralı: Ad Dizgeciği
NMTOKEN türünden değerlerin
sözdizimiyle, NMTOKENS türünden değerlerinAdDizgesözdizimiyle eşleşmesi ZORUNLUdur.AdDizgeler
| [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
- Geçerlilik kuralı: Gösterim Öznitelikleri
Bu türden değerlerin bildirimde içerilen
gösterimadlarından biri ile eşleşmesi ZORUNLUdur; bildirimdeki tüm gösterim adlarının bildirilmiş olması ZORUNLUdur.
- Geçerlilik kuralı: Eleman Türü Başına Bir Gösterim
Bir eleman türü içinde birden fazla NOTATION özniteliği belirtilemez ZORUNLU.
- Geçerlilik kuralı: Boş Elemanda Gösterim Olmaz
- Uyumluluk için, NOTATION türünden bir öznitelik EMPTY ile bildirilmiş bir elemanda bildirilemez ZORUNLU.
- Geçerlilik kuralı: Dizgecikler Yinelenemez
Gösterim adlarının müstakilen tek bir
öznitelik bildiriminde gözükmesi ZORUNLU olupGösterimTürüciklerinin de müstakilen tek birAdDizgeöznitelik bildiriminde gözükmesi ZORUNLUdur.Sayım
- Geçerlilik kuralı: Sayım
Bu türden değerlerin bildirimdeki
ciklerinden biri ile eşleşmesi ZORUNLUdur.AdDizge
AdDizge3.3.2 Öznitelik Öntanımlıları
Bir
| [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ğeri- Geçerlilik kuralı: Öznitelik Gerekliliği
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.
- Geçerlilik kuralı: Öntanımlı Öznitelik Değerinin Sözdizimsel Doğruluğu
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,
sözdizimi tanımıyla eşleşmelidir;AdIDREFS veya ENTITIES türündeyse,
sözdizimi tanımıyla eşleşmelidir;AdlarNMTOKEN türündeyse,
sözdizimi tanımıyla eşleşmelidir;AdDizgeNMTOKENS türündeyse,
sözdizimi tanımıyla eşleşmelidir;AdDizgelerbir
deyse (yasayısı sabit türtüründe ya da birNOTATION), sayısı belli değerlerden biriyle eşleşmelidir.sayısı sabit değerli
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.
- Geçerlilik kuralı: Sabit Öznitelik Değeri
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.
Öznitelik listesi bildirimleri için örnekler:
<!ATTLIST termdef id ID #REQUIRED name CDATA #IMPLIED> <!ATTLIST list type (bullets|ordered|glossary) "ordered"> <!ATTLIST form method CDATA #FIXED "POST">
3.3.3 Öznitelik Değerinin Normalleştirilmesi
Bir öznitelik bir uygulamaya aktarılmadan veya geçerliliği sınanmadan önce XML işlemci tarafından, aşağıdaki algoritma uygulanarak veya bu algoritma ile aynı sonucu verecek bir takım başka yöntemler kullanılarak, öznitelik değerlerinin normalleştirilmesi ZORUNLUdur.
Tüm satırsonları
Satırsonlarının İşlenmesibölümünde açıklandığı gibi girdi satırsonlarında sadece#xAiçeriyormuş gibi normalleştirilmelidir ZORUNLU; öyle ki, algoritmanın kalanı bu şekilde normalleştirilmiş metin üzerinde uygulansın.Boş dizgeden oluşan bir normalleştirilmiş değerle başlar. (?)
Her karakter için, öğe gönderimi veya normalleştirilmemiş öznitelik değerindeki karakter gönderimi, başından sonuna kadar aşağıdakileri yapar:
Bir karakter gönderimi için, atıf yapılan karakter normalleştirilmiş değere eklenir.
Bir öğe gönderimi için, bu algoritmanın 3. adımı öğenin ikame metnine dönüşümlü olarak uygulanır.
Bir boşluk karakteri (
#x20,#xD,#xA,#x9) için, normalleştirilmiş değere bir boşluk (#x20) eklenir.Diğer karakterler için, normalleştirilmiş değere o karakter eklenir.
Eğer öznitelik türü CDATA değilse, XML işlemci öznitelik değerini normalleştirme işleminde, baştaki ve sondaki boşlukları (#x20) silmeli ZORUNLU ve aradakileri (#x20) de tek bir boşluk (#x20) ile değiştirmelidir ZORUNLU.
Normalleştirilmemiş öznitelik değeri boşluk (#x20) dışındaki boşluk karakterlerine bir karakter gönderimi içeriyorsa, normalleştirilmiş değerde atıf yapılan karakterin kendisinin (#xD, #xA veya #x9) bulunacağına dikkat ediniz. Bu, normalleştirilmemiş değeri boşluk karakterlerinden birini içerip de normalleştirilmiş değere bunun için bir boşluk (#x20) yerleştirildiği duruma ve ayrıca, normalleştirilmemiş değerin, ikame metninde boşluk karakterlerinden birini içeren bir öğeye gönderim içerip de dönüşümlü olarak işlenerek, normalleştirilmiş değere bunun için bir boşluk (#x20) yerleştirildiği duruma aykırıdır.
Bildirimleri olmayan tüm öznitelikler, geçerlilik sınaması yapmayan bir işlemci tarafından CDATA bildirimli olarak ele alınmalıdır ZORUNLU.
Bildirimi olmayan bir öğeye bir
Biraz aşağıdaki öznitelik normalleştirme örnekleri için bildirimler şöyledir:
<!ENTITY d "
"> <!ENTITY a "
"> <!ENTITY da "
">
öznitelik belirtimleri soldaki sütunda, normalleştirilecek karakter dizilerinden a özniteliğinin NMTOKENS bildirimli olanları ortadaki sütunda, CDATA bildirimli olanları sağdaki sütundadır.
| Öznitelik belirtimi | NMTOKENS olarak a | CDATA olarak a |
|---|---|---|
a=" xyz" | x y z | #x20 #x20 x y z |
a="&d;&d;A&a; &a;B&da;" | A #x20 B | #x20 #x20 A #x20 #x20 #x20 B #x20 #x20 |
a= "

A

B
" | #xD #xD A #xA #xA B #xD #xA | #xD #xD A #xA #xA B #xD #xA |
Son örneğin, NMTOKENS türünde bildirimli a için geçersiz (ama iyi biçimli) oluşuna dikkat ediniz.
3.4 Şart Bölümleri
Şart bölümleri| [61] | şartBölümü | ::= | | |
| [62] | includeBölümü | ::= | '<![' | [GK: Düzgün Şart Bölümü/Parametre Öğesi İç İçeliği] |
| [63] | ignoreBölümü | ::= | '<![' | [GK: Düzgün Şart Bölümü/Parametre Öğesi İç İçeliği] |
| [64] | ignoreBlmİçeriği | ::= | | |
| [65] | Yoksayılan | ::= | |
- Geçerlilik kuralı: Düzgün Şart Bölümü/Parametre Öğesi İç İçeliği
"
<![", "[" veya "]]>" şart bölümlerinden biri, bir parametre öğesi gönderiminin ikame metninde içeriliyorsa, bunların hepsinin aynı ikame metninde içeriliyor olmaları gerekir ZORUNLU.
Dahili ve harici DTD altkümelerinde olduğu gibi, bir şart bölümü boşluk karakterlerinin arasına serpiştirilmiş olarak bir veya daha fazla tam bildirim, açıklama, işlem yönergesi veya iç içe şart bölümleri içerebilir.
Şart bölümünün anahtar sözcüğü INCLUDE ise, şart bölümü içeriği DTD'nin parçası olarak işlenmelidir ZORUNLU. Şart bölümünün anahtar sözcüğü IGNORE ise, şart bölümü içeriği DTD'nin parçası olarak işlenmemelidir ZORUNLU. Eğer INCLUDE sözcüklü bir şart bölümü daha geniş bir IGNORE sözcüklü şart bölümünün içeriğinde yer alıyorsa, hem iç hem de dıştaki şart bölümleri yoksayılmalıdır ZORUNLU. Yoksayılan bir şart bölümünün içeriği, anahtar sözcüğü izleyen "[" ile başlayıp, şart bölümünün sonuna kadar, başı "<![", sonu "]]>" olan şart bölümleri dışında kalan herşey yoksayılarak çözümlenmelidir ZORUNLU. Parametre öğesi gönderimleri bu işlemde tanınır olmamalıdır ZORUNLU.
Şart bölümünün anahtar sözcüğü bir parametre öğesi gönderimi ise, işlemci şart bölümünün içerileceğine mi yoksa yok mu sayılacağına karar vermeden önce parametre öğesinin yerine içeriği yerleştirilmelidir ZORUNLU.
Bir örnek:
<!ENTITY % draft 'INCLUDE' > <!ENTITY % final 'IGNORE' > <![%draft;[ <!ELEMENT book (comments*, title, body, supplements?)> ]]> <![%final;[ <!ELEMENT book (title, body, supplements?)> ]]>
4 Fiziksel Yapılar
Bir XML belge birden fazla saklama biriminden oluşabilir. Bunların her birine öğe denir. Bunlar bir isim ileÖğeler ya çözümlü öğedir ya da çözümlenmemiş öğedir.
Bir çözümlü öğenin içeriğine onunÇözümlü öğelere öğe gönderimlerindeki isimleri üzerinden, çözümlenmemiş öğelere ise öğe gönderimlerindeki ENTITY veya ENTITIES özniteliklerinin değeri olarak verilen isimlerinden erişilir.
Genel öğeler, belge içeriğinde kullanmak içindir. Bu belirtimde genel öğelere bazan bir belirsizliğe yol açmayacaksa genel sıfatı olmasızın sadece öğe denmekle yetinilmiştir.Parametre öğeleri DTD içeriğinde kullanmak için olup çözümlü öğelerden oluşurlar. Bu iki öğe türü farklı gönderim biçimleri kullanırlar ve farklı bağlamları tanırlar. Dahası, farklı isim-alanlarına sahiptirler; aynı isme sahip bir genel öğe ile bir parametre öğesi bir diğeriyle hiç alakası olmayan iki ayrı öğedir.4.1 Karakter ve Öğe Gönderimleri
Bir karakter gönderimi ISO/IEC 10646 karakter kümesinden belli bir karaktere atıf yapar; örneğin, girdi aygıtları tarafından doğrudan erişilebilir olmayan bir karakteri belirtmek için.Karakter Gönderimi| [66] | KarkGönd | ::= | '&#' [0-9]+ ';' | |
| '&#x' [0-9a-fA-F]+ ';' | [İBK: Geçerli Karakter] |
- İyi biçimlilik kuralı: Geçerli Karakter
Karakter gönderimlerinde kullanılacak karakterlerin
sözdizimi tanımıyla eşleşmeleri ZORUNLUdur.Kark
Eğer karakter gönderimi "&#x" ile başlıyor, rakamlar ve harflerden sonra bir ; ile bitiyorsa, bu gönderim karaktere ISO/IEC 10646'daki onaltılık kodu ile atıf yapıyor demektir; eğer "&#" ile başlıyor ve rakamlardan sonra ; ile bitiyorsa, karaktere onluk koduyla atıf yapıyor demektir.
&) ve noktalı virgülü (;) ayraç olarak kullanan gönderimlerdir. Paramete öğesi gönderimleri ayraç olarak yüzde imini (%) ve noktalı virgülü (;) kullanan gönderimlerdir.Öğe Gönderimi| [67] | Gönderim | ::= | | |
| [68] | ÖğeGönd | ::= | '&' | [İBK: Öğe Bildirilmeli] |
[GK: Öğe Bildirilmeli] | ||||
[İBK: Çözümlü Öğe] | ||||
[İBK: Özyineleme Yapılmamalı] | ||||
| [69] | ParÖğeGönd | ::= | '%' | [GK: Öğe Bildirilmeli] |
[İBK: Özyineleme Yapılmamalı] | ||||
[İBK: DTD İçinde Olmalı] |
- İyi biçimlilik kuralı: Öğe Bildirilmeli
Bir parametre öğesi içinde veya harici altkümede olmayan bir öğe gönderimi için, herhangi bir DTD'si olmayan veya sadece, hiçbir parametre öğesi bildirimi içermeyen bir dahili DTD altkümesi olan ya da "
standalone='yes'" bildirimi olan bir belgede, öğe gönderiminde belirtilen'ın bir parametre öğesi içinde veya harici altkümede olmayan birAdöğe bildirimindeki adla eşleşmesi (amp,lt,gt,apos,quotöğelerinin bildirilmesini gerektirmeyen iyi biçimli belgeler hariç) ZORUNLUdur. Bir genel öğe bildiriminin, bir öznitelik listesi bildiriminde bir öntanımlı değerin içinde gözüken gönderiminden önce yapılmış olması ZORUNLUdur.Geçerlilik sınaması yapmayan işlemcilerin, harici altkümedeki veya parametre öğeleri içindeki öğe bildirimlerini okumak ve işlemek
zorunda olmadıklarına dikkat ediniz; böyle belgeler için, bir öğenin bildirilmesini gerektiren tek kural, sadecestandalone='yes'olması halinde iyi biçimlilik kuralıdır.
- Geçerlilik kuralı: Öğe Bildirilmeli
"
standalone='no'" bildirimli parametre öğesi başvuruları veya harici altkümesi olan bir belgede, öğe gönderiminde belirtilen'ın birAdöğe bildirimindeki adla eşleşmesi ZORUNLUdur. Birlikte çalışabilirlik için, geçerli belgelerinamp,lt,gt,apos,quotöğeleriniÖnceden Tanımlanmış Öğelerbölümünde belirtildiği şekilde bildirmeleri ÖNERİlir. Bir parametre öğesinin bildiriminin, gönderiminden önce yer alması ZORUNLUdur. Benzer şekilde, bir genel öğenin bildiriminin de bu genel öğeye doğrudan veya dolaylı gönderimli bir öntanımlı değer içeren bir öznitelik listesi bildiriminden önce yer alması ZORUNLUdur.
- İyi biçimlilik kuralı: Çözümlü Öğe
Bir öğe başvurusu, bir
çözümlenmemiş öğeadı içermemelidir ZORUNLU. Çözümlenmemiş öğelere sadece ENTITY veya ENTITIES türünde bildirilmişöznitelik değerleriiçinden atıf yapılabilir.
- İyi biçimlilik kuralı: Özyineleme Yapılmamalı
Bir çözümlü öğe dolaylı yada dolaysız kendisine atıf yapmamalıdır ZORUNLU.
- İyi biçimlilik kuralı: DTD İçinde Olmalı
Parametre öğe gönderimleri
DTDdışında kullanılmamalıdır ZORUNLU.
Karakter ve öğe gönderimi örnekleri:
Seçenekleri kaydetmek için <key><</key> yazınız. Bu belge &belgetarihi; tarihinde hazırlanmış ve &güvenlik-derecesi; olarak sınıflanmıştır.
Parametre öğesi gönderimi örneği:
<!-- "ISOLat2" parametre öğesini bildirelim ... --> <!ENTITY % ISOLat2 SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" > <!-- ... artık başvurabiliriz. --> %ISOLat2;
4.2 Öğe Bildirimleri
Öğeler bu tanımla eşleşecek şekilde bildirilir:Öğe Bildirimi| [70] | ÖğeBild | ::= | |
| [71] | GenÖğeBild | ::= | '<!ENTITY' |
| [72] | ParÖğeBild | ::= | '<!ENTITY' |
| [73] | ÖğeTanımı | ::= | |
| [74] | ParÖğeTanımı | ::= | |
Ad4.2.1 Dahili Öğeler
Eğer öğe tanımı birÖğeDeğeriBir dahili öğe bir
İç öğe bildirimi örneği:
<!ENTITY Gen-durum "Bu, belirtimin ön sürümüdür.">
4.2.2 Harici Öğeler
Bir öğe dahili değilse bir harici öğedir ve şöyle bildirilir:Harici Öğe Bildirimi| [75] | HariciID | ::= | 'SYSTEM' | |
| 'PUBLIC' | ||||
| [76] | NDataBild | ::= | | [GK: Gösterim Bildirilmeli] |
Eğer
NDataBild- Geçerlilik kuralı: Gösterim Bildirilmeli
- 'ın bir
Adgösterimin bildirilmiş ismiyle eşleşmesi ZORUNLUdur.
SistemSabiti# karakteri ile başlayan betimleyicinin bir bölümünün sistem betimleyicinin bir parçası olması bir hatadır. Bu belirtimin kapsamı dışında bir bilgi kaynağı tarafından (örn, belli bir DTD tarafından tanımlanan özel bir XML elemanı türü veya belli bir uygulama belirtimi tarafından tanımlanmış bir işlem yönergesi) sağlanmış olmadıkça, göreli tarım-yerleri (URI'ler) içinde öğe bildiriminin bulunduğu özkaynağın konumuna görelidir ve bir bildirim olarak çözümlendiği noktada bildirimi başlatan '<' karakterini içeren harici öğe olarak tanımlanmıştır. Dolayısıyla, bir tanım-yeri Location: başlığı üzerinden) yönlendirilebilir. Özkaynak içinde, bu belirtimin kapsamı dışındaki ek bilgi kaynaklarının yokluğunda, bir özkaynağın temel tanım-yeri daima döndürülen asıl özkaynağın tanım-yeridir. Başka bir deyişle, özkaynağın tanım-yeri, tüm yönlendirmelerden sonra elde edilen tanım-yeridir.Sistem betimleyiciler (ve tanım-yeri başvurusu anlamında kullanılan diğer XML dizgeleri) [
Öncelenecek her karakter [
Unicode3] UTF-8 içinde bir veya daha fazla baytlı olacak şekilde ifade edilir.Elde edilen baytlar tanım-yeri önceleme mekanizması ile öncelenirler (yani, bayt değerinin onaltılık gösterimi HH,
%HH'a dönüştürülür).Özgün karakterin yerine bu işlem sonucunda elde edilen karakter yerleştirilir.
Harici öge bildirimleri örnekleri:
<!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif >
4.3 Çözümlü Öğeler
4.3.1 Metin Bildirimi
Harici çözümlü öğelerin her birinin bir metin bildirimi ile başlaması ÖNERİlir.
Metin Bildirimi| [77] | MetinBild | ::= | '<?xml' |
Metin bildirimi birebir sağlanmış olmalı ZORUNLU, bir çözümlü öğeye gönderim olmamalıdır. Metin bildirimi bir harici çözümlü öğenin başlangıcından başka bir yerde gözükemez ZORUNLU. Bir harici çözümlü öğedeki bir metin bildirimi öğenin
4.3.2 İyi Biçimli Çözümlü Öğeler
Bir belge öğesi
belgedışÇözümlüÖğe- Not:
- Belge içinden sadece doğrudan veya dolaylı atıf yapılan çözümlü öğelerin iyi biçimli olmaları gerekir.
| [78] | dışÇözümlüÖğe | ::= | |
Bir harici genel çözümlü öğe, eğer ikame metni
içerikGenel öğelerdeki iyi biçimliliğin bir sonucu, bir XML belgedeki mantıksal ve fiziksel yapıların düzgün şekilde iç içe olmasıdır; hiçbir
4.3.3 Öğelerdeki Karakter Kodlaması
Bir XML belgedeki her harici çözümlü öğe kendi karakterleri için farklı bir karakter kodlaması kullanabilir. Tüm XML işlemcilerin UTF-8 ve UTF-16 kodlamalı öğeleri okuyabilmesi ZORUNLUdur. Bu belirtimdeki "UTF-8" ve "UTF-16" terimleri, kodlamalar ve yaftalar UTF-8 veya UTF-16'ya benzese bile, başka yaftalı karakter kodlamalarına uygulanmaz.
UTF-16 kodlu öğeler ZORUNLU olarak, UTF-8 kodlu öğeler SEÇİMLİK olarak, [
Bir XML işlemcinin sadece UTF-8 ve UTF-16 kodlamalara sahip öğeleri okuması zorunlu olsa da, dünya çapında kullanılan diğer kodlamaları da tanıması ve bunları kullanan öğeleri de okuması istenebilir. Harici karakter kodlaması bilgisinin (örn, MIME başlıklarında) yokluğunda, UTF-8 veya UTF-16 dışında bir kodlamayla saklanmış çözümlü öğelerin bir kodlama bildirimi içeren bir metin bildirimi ile başlaması ZORUNLUdur (bkz,
| [80] | KodlamaBild | ::= | | |
| [81] | KodlamaAdı | ::= | [A-Za-z] ([A-Za-z0-9._] | '-')* | /* Kodlama adı sadece Latin karakterlerini içerir */ |
KodlamaAdıBir kodlama bildiriminde "UTF-8", "UTF-16", "ISO-10646-UCS-2" ve "ISO-10646-UCS-4" değerleri Unicode / ISO/IEC 10646'nın kodlama ve dönüşüm çeşitleri için kullanılmalı ÖNERİ; "ISO-8859-1", "ISO-8859-2", ... "ISO-8859-n" (burada n kısım numarasıdır) ISO 8859 kısımları için kullanılmalı ÖNERİ ve "ISO-2022-JP", "Shift_JIS" ve "EUC-JP" değerleri de JIS X-0208-1997'nin çeşitli kodlamaları için kullanalmalıdır ÖNERİ. Burada listelenenlerin dışında kalan karakter kodlamalarından [
Bir harici aktarım protokolü (örn, HTTP veya MIME) tarafından sağlanan bilginin yokluğunda, bir öğe, bildirimdeki isimden başka bir kodlamayla XML işlemciye sunulmuşsa veya ne Bayt Sıralama İmi ne de UTF-8 dışında bir kodlama için kullanılacak kodlama bildirimi olması bir öğe için
Bir
MetinBildXML işlemci bir öğenin işlenmeye elverişli olmayan bir kodlamaya sahip olduğunu saptarsa bu bir
Kodlama bildirimleri içeren metin bildirimi örnekleri:
<?xml encoding='UTF-8'?> <?xml encoding='EUC-JP'?>
4.4 Öğelerin ve Gönderimlerin XML İşlemcide Ele Alınışları
Aşağıdaki liste, karakter ve öğe gönderimleri ve çözümlenmemiş öğe çağrıları bağlamında, hangi durumda
- İçerikte gönderim
- bir elemanın başlangıç etiketiilebitiş etiketiarasındaki her yerde bir gönderim olarak;sözdizimine karşılıktır.
içerik - Öznitelik değeri içinde gönderim
- başlangıç etiketindeki bir özniteliğin değeri veya biröznitelik bildirimindeki bir öntanımlı değer içinde bir gönderim olarak;sözdizimine karşılıktır.
ÖznitDeğeri - Öznitelik değeri içinde gözükmek
- ENTITY türünde bildirilmiş bir özniteliğin değeri olarak veya ENTITIES türünde bildirilmiş bir özniteliğin değerinde boşluklarla ayrılmış dizgeciklerden biri olarak gözüktüğünde bir gönderim değil bir olarak.
Ad - Öğe değeri içinde gönderim
- öğe bildiriminde dahili öğenin dizgesel sabitli öğe değeriiçinde veya bir parametre içinde bir gönderim olarak;sözdizimine karşılıktır.
ÖğeDeğeri - DTD içinde gönderim
- DTD'nin dahili veya harici altkümelerinde fakat bir,
ÖğeDeğeri,ÖznitDeğeri,PI,Açıklama,SistemSabitiveya yoksayılan bir şart bölümünün içeriğinde yer almamak şartıyla bir gönderim olarak (bkz,GenidSabitiŞart Bölümleri).
| Öğe türü | Karakter | ||||
| Parametre | Dahili Genel | Harici Çözümlü Genel | Çözümlenmemiş | ||
| İçerikte gönderim | Tanınmaz | İçerilir | Geçerliyse İçerilir | Yasak | İçerilir |
| Öznitelik değeri içinde gönderim | Tanınmaz | Dizgesel Sabitte İçerilir | Yasak | Yasak | İçerilir |
| Öznitelik değeri içinde gözükmek | Tanınmaz | Yasak | Yasak | Uyarı | Tanınmaz |
| Öğe değeri içinde gönderim | Dizgesel Sabitte İçerilir | Atlanır | Atlanır | Hata | İçerilir |
| DTD içinde gönderim | Parametre Öğesi olarak İçerilir | Yasak | Yasak | Yasak | Yasak |
4.4.1 Tanınmaz
DTD dışında % karakterinin özel bir anlamı yoktur; bu bakımdan parametre öğesi gönderimleri
içerik4.4.2 İçerilir
Bir öğe, kendisine yapılan gönderimin tanındığı noktada ikame metni alınıp işlendiğinde içerilmiş olur. İkame metni, uygun şekilde tanınması ZORUNLU olarak hemAT&T;" dizgesi "AT&T;" olarak yorumlanır ve dizge içinde kalan ve-imi bir öğe gönderim ayracı olarak tanınmaz.) Belirtilen karakter gönderimin olduğu yere yerleştirildiğinde bir karakter gönderimi içerilmiş olur.4.4.3 Geçerliyse İçerilir
Bir XML işlemci belgenin
Bu kural, SGML ve XML öğe mekanizması tarafından sağlanan, başka uygulamalar, kısmen belge tarama için uygun olması gerekmeyen modülerliği özellikle yazım sırasında desteklemek için tasarlanmış özdevinimli içerilme anlamındaki tanımaya dayanır. Tarayıcılar, örneğin,bir harici çözümlü öğe gönderimine rastladıklarında, öğenin varlığının görsel bir belirtisini sağlamayı seçebilirler ve talep halinde göstermek için bunu alabilirler.
4.4.4 Yasak
Aşağıdakiler yasak olup
Bir öğe bildirimindeki
içindekiler hariç, birÖğeDeğeriçözümsüz öğeye gönderiminin varlığı.Bir
veyaÖğeDeğeriiçindekiler hariç DTD içinde bir karakter veya genel öğe gönderiminin varlığı.ÖznitDeğeriBir öznitelik değeri içinde bir harici öğeye gönderim.
4.4.5 Dizgesel Sabitte İçerilir
Bir
<!ENTITY % EH '"Evet"' > <!ENTITY NeDedi "%EH; dedi" >
bu değildir:
<!ENTITY SonNit "27'" > <eleman nitelik='a-&SonNit;>
4.4.6 Uyarı
Bir
4.4.7 Atlanır
Bir genel öğe gönderimi bir öğe bildiriminin
ÖğeDeğeri4.4.8 Parametre Öğesi olarak İçerilir
Harici çözümlü öğelerde olduğu gibi, parametre öğelerinin de sadece
4.4.9 Hata
Bir öğe bildirimi içindeki
ÖğeDeğeri4.5 Öğe İkame Metninin Oluşturulması
Öğelerin elde edilişi tartışılırken, öğe değerinin iki biçimini birbirinden ayrı ele almak daha yararlıdır.
Bir dahili öğe için, dizgesel sabitli öğe değeri aslında öğe bildiriminde yer alan veÖğeDeğeriDizgesel sabitli öğe değeri, bir dahili öğe bildiriminde verilmiş (
ÖğeDeğeri<!ENTITY % pub "Éditions Gallimard" > <!ENTITY rights "All rights reserved" > <!ENTITY book "La Peste: Albert Camus, © 1947 %pub;. &rights;" >
"book" öğesi için ikame metni:
La Peste: Albert Camus, © 1947 Éditions Gallimard. &rights;
Genel öğe gönderimi "&rights;", "&book;" gönderimi belge içeriğinde veya bir öznitelik değerinde yer aldığında yorumlanacaktır.
Bu basit kurallar, daha karmaşık etkileşimlere sahip olabilirler; daha zor bir örneğin açıklaması için
4.6 Önceden Tanımlanmış Öğeler
Öğe ve karakter gönderimlerinin ikisi de açılı sol ayraç, ve-imi ve diğer ayraçları öncelemekte kullanılabilir. Genel öğeler kümesi (amp, lt, gt, apos, quot) bu amaçla belirtilmiştir. Sayısal karakter gönderimleri de kullanılabilir; bunlar tanındıkları anda yorumlanırlar ve karakter verisi olarak ele alınırlar ZORUNLU, dolayısıyla karakter verisi içindeki "<" ve "&" sayısal karakter gönderimleri < ve & karakterlerini öncelemekte kullanılabilir.Tüm XML işlemcilerin bu öğeleri bildirilsin ya da bildirilmesin tanımaları ZORUNLUdur.
lt veya amp öğeleri bildirilecekse, bunların dahili öğeler (ikame metni öncelenmiş olarak ilgili karaktere bir karakter gönderimi olan) olarak bildirilmesi ZORUNLUdur; bu gönderimlerin iyi biçimli sonuçlar vermesi için bu öğelerin çifte öncelemeli olması ZORUNLUdur. Eğer gt, apos veya quot bildirilecekse, bunlar dahili öğeler (ikame metni öncelenmiş olarak tek karakter veya o karaktere bir karakter gönderimi olan) olarak bildirilmelidir ZORUNLU; çifte önceleme burada SEÇİMLİKtir, fakat bir soruna yol açmaz. Örnek:<!ENTITY lt "&#60;"> <!ENTITY gt ">"> <!ENTITY amp "&#38;"> <!ENTITY apos "'"> <!ENTITY quot """>
4.7 Gösterim Bildirimleri
Gösterimler,| [82] | GösterimBild | ::= | '<!NOTATION' | [GK: Gösterim Adının Eşsizliği] |
| [83] | PublicID | ::= | 'PUBLIC' |
- Geçerlilik kuralı: Gösterim Adının Eşsizliği
Belli bir
birden fazla gösterimde bildirilemez ZORUNLU.Ad
XML işlemcilerin, bildirilmiş olan veya bir öğe bildirimine, bir öznitelik tanımına veya değerine atıfta bulunan bir gösterimin adıyla aynı veya gösterimin harici betimleyicisi olan dizgeyle aynı isimli uygulamalar sağlaması ZORUNLUdur. Bunlar ayrıca, harici betimleyicileri
4.8 Belge Öğesi
Belge öğesi, öğe ağacının kökü ve bir5 Uygunluk
5.1 Geçerliliği Sınayan ve Sınamayan İşlemciler
Uyumlu
Geçerlik sınaması yapanların da yapmayanların da
Geçerliliği sınamayan XML işlemcilerin, sadece iyi biçimlilik için dahili DTD altkümesinin tamamını içeren
standalone="yes" durumu hariç, öğe, bildirimlerin yerini almak üzere bildirilmiş olabileceğinden, okunmamış bir parametre öğesine bir gönderimden sonra, rastlanan standalone="yes" durumunda, işlemcilerin bu bildirimleri işlemeleri ZORUNLUdur.Geçersiz belgeleri geçerliliği sınamayan bir işlemci ile işlerken uygulamanın tutarlı bilgi vermeyebileceğine dikkat ediniz. Örneğin, belge içinde eşsizlikle ilgili çeşitli gereksinimler (aynı ID'ye sahip birden fazla elemanın varlığı, yinelenmiş eleman bildirimleri veya aynı isimli gösterimler gibi) sağlanmıyor olabilir. Bu gibi durumlarda, çözümleyicinin böyle bilgileri uygulamaya raporlamak konusundaki davranışı belirsizdir.
5.2 XML İşlemcilerin Kullanımı
Geçerliliği sınayan bir XML işlemcinin davranışı oldukça öngörülebilir bir davranıştır; belgenin her parçasını okuması ve tüm iyi biçimlilik ve geçerlilik uyumsuzluklarını raporlaması gerekir. Geçerliliği sınamayan bir XML işlemci için daha azı gerekir; belgenin belge öğesi hariç hiçbir parçasını okuması gerekmez. Bu, XML işlemcilerin kullanıcıları açısından önemli olabilecek iki etkiye sahiptir:
Belli başlı iyi biçimlilik hataları, özellikle harici öğelerin okunmasını gerektirenler, geçerlilik sınaması yapmayan işlemciler tarafından saptanamayabilir.
Öğe Bildirilmeli,Çözümlü ÖğeveÖzyineleme Yapılmamalıbaşlıklı kuralları içerenler yanındaÖğelerin ve Gönderimlerin XML İşlemcide Ele Alınışlarıbölümündeyasakolarak açıklanan durumların bazıları örnek olarak verilebilir.İşlemciden uygulamaya aktarılan bilgi, işlemcinin parametre ve harici öğeleri okuyup okumamasına bağlı olarak değişebilir. Örneğin geçerlilik sınaması yapmayan bir işlemci, harici veya parametre öğelerindeki bildirimlerin okunmasına/okunmamasına bağlı olarak, öznitelik değerlerini
normalleştirmede, dahili öğelerin ikame metniniiçermede veöntanımlı öznitelik değerlerini sağlamada başarısız olabilir.
Farklı XML işlemciler arasında birlikte çalışabilirlik bakımından azami güvenilirlik için, geçerlilik sınaması yapmayan işlemcileri kullanan uygulamaların böyle işlemcilerin gerekli olmayan davranışlarına güvenmemeleri ÖNERİlir. Geçerlilikle ilgili olmayan DTD oluşumlarını (öntanımlı özniteliklerin bildirimi ve harici öğelerde belirtilmesi olası dahili öğeler gibi) gerektiren uygulamaların geçerlilik sınaması yapan XML işlemcileri kullanmaları ÖNERİlir.
6 Gösterim
XML'nin biçimsel dilbilgisi kuralları bu belirtimde Eklentili Backus-Naur Biçiminin (EBNF) basit bir gösterimi kullanılarak belirtilmiştir. Her dilbilgisi kuralı,
sembol ::= ifade
şeklinde bir sembolle tanımlanır. Sembol bir düzenli dil başlangıç sembolü ise büyük harfle başlar, yoksa küçük harfle başlar. Dizgesel sabitler tırnak içine alınır.
Kuralın sağ tarafında bulunan ifade içinde dizgeleri bir veya daha fazla karakterle eşleştirmek için şu ifadeler kullanılmıştır:
-
#xN - Burada
Nbir onaltılık tamsayı olup ifade, ISO/IEC 10646'daki karakter numarasıNolan karakter ile eşleşir.#xNiçindeki sıfırlardan soldakiler değersizdir. -
[a-zA-Z],[#xN-#xN] - , belirtilen aralıktaki (sınırlar dahil) her değerle eşleşir.
Kark -
[abc],[#xN#xN#xN] - , ifadede belirtilen değerlerle eşleşir. Bu gösterime köşeli ayraçlarla sınırlanarak aralıklar da dahil edilebilir.
Kark -
[^a-z],[^#xN-#xN] - , belirtilen aralık (sınırlar dahil) dışında kalan her değerle eşleşir.
Kark -
[^abc],[^#xN#xN#xN] - , ifadede belirtilen değerler dışında kalan değerlerle eşleşir. Bu gösterime köşeli ayraçlarla sınırlanarak yasaklanacak aralıklar da dahil edilebilir.
Kark -
"dizge" - çift tırnaklar arasında verilen dizgesel sabit ile eşleşilir.
-
'dizge' - tek tırnaklar arasında verilen dizgesel sabit ile eşleşilir.
Bu semboller, daha karmaşık örüntülerle eşleşmek için birleştirilebilir; A ve B basit ifadeleri göstermek üzere:
- (
ifade) ifadetek birim olarak ele alınır ve bu listede açıklandığı gibi başka ifadelerle birleşebilir.-
A? - ya
Aya da hiçbir şey ile eşleşir;A'nın isteğe bağlı olduğu anlamına gelir. -
A B AveA'dan sonra gelenBile eşleşir. Bu işleç yerdeğiştirmeli işleçten daha yüksek önceliğe sahiptir; bu nedenle,A B | C Dile(A B) | (C D)aynıdır.-
A | B AveyaBile eşleşilir.-
A - B B'nin eksiltilmesi halindeAile eşleşilir.-
A+ A'nın bir veya daha fazla örneği ile eşleşilir. Birleştirme, yerdeğiştirmeden daha yüksek önceliğe sahiptir; bu nedenle,A+ | B+ile(A+) | (B+)aynıdır.-
A* A'nın sıfır veya daha fazla örneği ile eşleşilir. Birleştirme, yerdeğiştirmeden daha yüksek önceliğe sahiptir; bu nedenle,A* | B*ile(A*) | (B*)aynıdır.
Sözdizimi tanımlarında kullanılan diğer gösterimler:
-
/* ... */ - açıklama.
-
[ İBK: ... ] - İyi Biçimlilik Kuralı; bir sözdizimi tanımıyla ilişkili olarak iyi biçimlibelgelere uygulanacak bir kural ismini betimler.
-
[ GK: ... ] - Geçerlilik Kuralı; bir sözdizimi tanımıyla ilişkili olarak geçerlibelgelere uygulanacak bir kural ismini betimler.
A Kaynakça
A.1 Uyulması Gerekli Olanlar
- IANA-KARKÜM
- (Genel Ağ Atanmış Numaralar Yetkilisi) Karakter Kümeleri için Resmi Adlar, ed. Keld Simonsen.
- IETF RFC 2119
- IETF. RFC 2119: RFC'lerde Gereksinim Seviyelerini Belirtmek için Kullanılan Anahtar Sözcükler. Scott Bradner, 1997. Uyulması zorunlu İngilizce sürümü http://www.rfc-editor.org/rfc/rfc2119.txt adresindedir.
- IETF RFC 3066
- IETF. RFC 3066: Dilleri Betimleyen Yaftalar, ed. H. Alvestrand. 2001.
- IETF RFC 3986
- IETF. RFC 3986: Tektip Özkaynak Betimleyici (URI - Uniform Resource Identifier): Soysal Sözdizimi. T. Berners-Lee, R. Fielding, L. Masinter. 2005.
- ISO/IEC 10646
- ISO (Uluslararası Standartlaşım Örgütü). ISO/IEC 10646-1:2000. Bilgi teknolojileri — Evrensel Çok Sekizli Kodlanmış Karakter Kümesi (UCS - Universal Multiple-Octet Coded Character Set) — 1. Kısım: Mimari ve Temel Çokdilli Düzey, zaman zaman eklemeler yapılmakta, yeni düzeltmelerle bunlar değiştirilmekte veya yeni parçalar eklenerek genişletilmektedir. (En son sürüm için http://www.iso.chadresine bakınız.)
- ISO/IEC 10646:2000
- ISO (Uluslararası Standartlaşım Örgütü). ISO/IEC 10646-1:2000. Bilgi teknolojileri —Evrensel Çok Sekizli Kodlanmış Karakter Kümesi (UCS - Universal Multiple-Octet Coded Character Set) — 1. Kısım: Mimari ve Temel Çokdilli Düzey [Geneva]: International Organization for Standardization, 2000.
- Unicode
- Unicode Konsorsiyumu. Unicode Standardı, Sürüm 2.0.Reading, Mass.: Addison-Wesley Developers Press, 1996.
- Unicode3
- Unicode Konsorsiyumu. Unicode Standardı, Sürüm 3.2, Unicode Standardı, Sürüm 3.0 tarafından tanımlandı (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), Unicode Standardı Ek #27: Unicode 3.1 (http://www.unicode.org/reports/tr27/) ve Unicode Standardı Ek #28: Unicode 3.2 (http://www.unicode.org/reports/tr28/) ile eklemeler yapıldı.
A.2 Diğerleri
- Aho/Ullman
- Aho, Alfred V., Ravi Sethi ve Jeffrey D. Ullman. Derleyiciler: Prensipler, Teknikler ve Araçlar. Reading: Addison-Wesley, 1986, rpt. corr. 1988.
- Brüggemann-Klein
- Brüggemann-Klein, Anne. Belge İşlemede Biçimsel Modeller. Habilitationsschrift. Freiburg Üniversitesi Matematik Fakültesi, 1993.
- Brüggemann-Klein and Wood
- Brüggemann-Klein, Anne ve Derick Wood. Belirlenimci Düzenli Diller. Freiburg Üniversitesi Bilişim Enstitüsü, Bericht 38, Oktober 1991. Extended abstract in A. Finkel, M. Jantzen, Hrsg., STACS 1992, S. 173-184. Springer-Verlag, Berlin 1992. Lecture Notes in Computer Science 577. Full version titled One-Unambiguous Regular Languages in Information and Computation 140 (2): 229-253, February 1998.
- Clark
- James Clark. SGML ile XML'ın Karşılaştırılması.
- IANA-DİLKOD
- (Genel Ağ Atanmış Numaralar Yetkilisi) Dil Yaftaları Kütüğü, ed. Keld Simonsen.
- IETF RFC 2141
- IETF. RFC 2141: URN Sözdizimi, ed. R. Moats. 1997.
- IETF RFC 3023
- IETF. RFC 3023: XML Ortam Türleri. eds. M. Murata, S. St.Laurent, D. Kohn. 2001.
- IETF RFC 2781
- IETF. RFC 2781: UTF-16, ISO 10646'nın bir kodlaması, ed. P. Hoffman, F. Yergeau. 2000.
- ISO 639
- (Uluslararası Standartlaşım Örgütü). ISO 639:1988 (E). Dil isimlerinin gösterimi için kodlar. [Geneva]: International Organization for Standardization, 1988.
- ISO 3166
- (Uluslararası Standartlaşım Örgütü). ISO 3166-1:1997 (E). Ülkelerin ve alt bölümlerinin isimlerinin gösterimi için kodlar — 1. Kısım: Ülke kodları [Geneva]: International Organization for Standardization, 1997.
- ISO 8879
- ISO (Uluslararası Standartlaşım Örgütü). ISO 8879:1986(E). Bilgi işlem — Metin ve Büro Sistemleri — Standart Genelleştirilmiş İmlenim Dili (SGML). İlk Düzenleme — 1986-10-15. [Geneva]: International Organization for Standardization, 1986.
- ISO/IEC 10744
- ISO (Uluslararası Standartlaşım Örgütü). ISO/IEC 10744-1992 (E). Bilgi teknolojileri — Hiper Ortam/Zamana Dayalı Yapı Dili (HyTime). [Geneva]: International Organization for Standardization, 1992. Extended Facilities Annexe. [Geneva]: International Organization for Standardization, 1996.
- WEBSGML
- ISO (Uluslararası Standartlaşım Örgütü). ISO 8879:1986 TC2. Bilgi teknolojileri — Belge Açıklama ve İşleme Dilleri. [Geneva]: International Organization for Standardization, 1998.
- XML Adları
- Tim Bray, Dave Hollander ve Andrew Layman. XML 1.0'da İsim-alanları. Textuality, Hewlett-Packard ve Microsoft. World Wide Web Consortium, 1999. Uyulması zorunlu İngilizce sürümü http://www.w3.org/TR/xml-names/ adresindedir.
B Karakter Sınıfları
Unicode standardında tanımlı olan aşağıdaki karakteristiklerde, karakterler, temel karakterler (bu sınıf Latin alfabesinde bulunan alfabetik karakterleri de içerir), kavramsal semboller, birleşim karakterleri (bu sınıf aksan karakterlerini de içerir) olarak sınıflanmıştır. Rakamlar ve uzatıcılar ayrıca belirtilmiştir.
Karakterler| [84] | Harf | ::= | |
| [85] | TemelKark | ::= | [#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] | [#x0141-#x0148] | [#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5] | [#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386 | [#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] | [#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] | [#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] | [#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] | [#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | [#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | [#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | [#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | [#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | [#x09AA-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1] | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | [#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | [#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | [#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | [#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30] | [#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D] | [#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | [#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | [#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | [#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | [#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | [#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | [#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33] | [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A | #x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5 | #x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3] | #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | [#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | [#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | #x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | [#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | [#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | [#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | [#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | [#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | #x1F5D | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | [#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | [#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | [#x212A-#x212B] | #x212E | [#x2180-#x2182] | [#x3041-#x3094] | [#x30A1-#x30FA] | [#x3105-#x312C] | [#xAC00-#xD7A3] |
| [86] | KavramKark | ::= | [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] |
| [87] | BileşimKark | ::= | [#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] | [#x0591-#x05A1] | [#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2] | #x05C4 | [#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#x06DD-#x06DF] | [#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#x0901-#x0903] | #x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#x0962-#x0963] | [#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4] | [#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 | #x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | [#x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | [#x0ABE-#x0AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | #x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | [#x0B56-#x0B57] | [#x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | [#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | [#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | [#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | [#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | #x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1 | [#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | #x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | [#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | [#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | #x3099 | #x309A |
| [88] | Rakam | ::= | [#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] | [#x0966-#x096F] | [#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | [#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F] | [#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29] |
| [89] | Uzatıcı | ::= | #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE] |
Burada tanımlı karakter sınıfları Unicode 2.0 karakter veritabanından aşağıdaki gibi türetilebilir:
Ad başlatma karakterleri Ll, Lu, Lo, Lt, Nl sınıflarından birine sahip olmalıdır.
Ad başlatma karakterleri dışında kalan ad karakterleri Mc, Me, Mn, Lm veya Nd sınıflarından birine sahip olmalıdır.
Uyumluluk bölgesindeki karakterlere (yani, #xF900 > yasak_karakterler > #xFFFE) XML isimlerinde izin verilmez.
Bir fonta veya uyumluluk ayrışımına tabi karakterlere izin verilmez (veritabanının 5. alanında "uyumluluk biçimleme etiketi" olanlar -- 5. alan tarafından imli olup "<" ile başlayanlar).
[#x02BB-#x02C1], #x0559, #x06E5, #x06E6 karakterleri ad karakterlerinden ziyade ad başlatma karakterleri olarak ele alınırlar, çünkü özellik dosyası bunları alfabetik olarak sınıflamaktadır.
#x20DD-#x20E0 karakterleri hariç tutulmuştur (Unicode 2.0, 5.14. bölüm gereğince).
#x00B7 karakteri bir uzatıcı olarak sınıflanmıştır, çünkü özellik listesinde böyle betimlenmektedir.
#x0387 karakteri bir ad karakteri olarak eklenmiştir, çünkü #x00B7 karakteri kurallar gereği eşdeğeridir.
':' ve '_' karakterlerine ad başlatma karakterleri olarak izin verilmiştir.
'-' ve '.' karakterlerine ad karakterleri olarak izin verilmiştir.
C XML ve SGML (Bilgilendirici)
XML, her XML belgenin ayrıca SGML uyumlu olması için SGML'nin bir alt kümesi olarak tasarlanmıştır. XML belgeleri SGML belgelerden ayıran ek kısıtlamalar ve ayrıntılı bir karşılaştırma için [
D Öğe ve Karakter gönderimlerinin Yorumlanması (Bilgilendirici)
Bu ek bölümde,
Eğer DTD
<!ENTITY example "<p>Bir ve-imi (&#38;) sayısal olarak (&#38;#38;) veya bir genel öğe olarak (&amp;) gösterilebilir.</p>" >
diye bir öğe bildirimi içeriyorsa, XML işlemci öğe bildirimini çözümlerken karakter gönderimlerini tanıyıp çözümleyecek ve
<p>Bir ve-imi (&) sayısal olarak (&#38;) veya bir genel öğe olarak (&amp;) gösterilebilir.</p>
dizgesini "example" öğesinin değeri olarak saklayacaktır. Belge içindeki "&example;" şeklinde bir gönderim, p elemanının başlangıç ve bitiş etiketlerinin tanınıp dizgenin içindeki üç karakter gönderiminin tanınıp yorumlanarak metnin yeniden çözümlenmesine ve p elemanının aşağıdaki içerikle (ayraçlar ve imlenim olmaksızın verinin tümü) sonuçlanmasına sebep olacaktır:
Bir ve-imi (&) sayısal olarak (&) veya bir genel öğe olarak (&) gösterilebilir.
Daha karmaşık bir örnek kuralları ve etkilerini daha iyi görmemizi sağlayacaktır. Bu örnekte satırların başlarındaki numaralar kaynak koda dahil değildir:
1 <?xml version='1.0'?> 2 <!DOCTYPE test [ 3 <!ELEMENT test (#PCDATA) > 4 <!ENTITY % xx '%zz;'> 5 <!ENTITY % zz '<!ENTITY becerikli "hataya eğilimli" >' > 6 %xx; 7 ]> 8 <test>Bu örnek &becerikli; bir yöntemi göstermektedir.</test>
İşlemler şöyle yürür:
4. satırda, 37. karaktere gönderim hemen yerine getirilir ve "
xx" parametre öğesi sembol tablosunda "%zz;" değeri ile saklanır. İkame metin henüz taranmamış olduğundan "zz" parametre öğesine gönderim tanınmayacaktır. (Ve "zz" henüz bildirilmemiş olacağından bir hata oluşacaktır.)5. satırda, "
<" karakter gönderimi hemen yerine getirilir ve "zz" parametre öğesi iyi biçimli bir öğe bildirimi olan "<!ENTITY becerikli "hataya eğilimli">" ikame metni ile saklanır.6. satırda, "
xx" öğesine gönderim tanınır ve "xx" öğesinin ikame metni (yani, "%zz;") çözümlenir. Ardından "zz" öğesine gönderim tanınır ve ikame metni ("<!ENTITY becerikli "hataya eğilimli">") çözümlenir. "becerikli" genel öğesi bundan böyle "hataya eğilimli" ikame metni ile bildirilmiş olur.8. satırda "
becerikli" genel öğesi tanınır ve yorumlanır. Böylecetestelemanının içeriği kendini açıklayan Bu örnek hataya eğilimli bir yöntemi göstermektedir. dizgesi olur.
E Belirlenimci İçerik Modelleri (Bilgilendirici)
Örneğin, ((b, c) | (b, d)) içerik modeli belirlenimci değildir, çünkü b içerikte başta yer almak üzere verildiğinden, XML işlemci modeldeki hangi b'yi eşleştireceğini b'i, izleyen elemanı görmek için başa bakmadan anlayamaz. Bu durumda, iki b gönderimi modeli (b, (c | d)) şeklinde okuyarak tek gönderime indirgenebilir. Artık, baştaki b içerik modelindeki tek bir adla eşleşir. İşlemci artık onu neyin izlediğine bakmak ihtiyacını duymaz; c veya d, ikisinden biri kabul edilir.
Daha biçimsel olarak: Bir sonlu durum otomatı, Aho, Sethi ve Ullman'ın [
Belirlenimci olmayan içerik modellerinin tümü için olmasa da çoğu için modeli özdevinimli olarak eşdeğer belirlenimci modellere indirgeyecek algoritmalar mevcuttur; bkz, Brüggemann-Klein 1991 [
F Karakter Kodlamalarının Kendiliğinden Saptanması (Bilgilendirici)
XML karakter kodlaması bildirimi, her öğe üzerinde hangi karakter kodlamasının kullanılacağını belirten bir dahili yafta olarak işlev yapar. XML işlemci dahili yaftayı okumadan önce, hangi karakter kodlamasının kullanımda olduğunu; dahili yaftanın neyi belirtmeyi deneyeceğini bilir. Genel olarak, bu ümitsiz bir durumdur ama XML'de durum tamamen ümitsiz değildir, çünkü XML genel durumu iki yolla sınırlar: her gerçeklenimin karakter kodlamalarının sadece bir sonlu kümesini destekleyeceği varsayılır ve XML karakter kodlaması bildirimi, normal şartlarda her öğede kullanılan karakter kodlamasının kendiliğinden saptanabilmesinin mümkün kılınması aşamasında konum ve içerik bakımından kısıtlanır. Ayrıca, çoğu durumda XML veri akımının kendisine ilaveten diğer bilgi kaynakları da kullanılabilir. XML öğenin, eşlik eden (harici) bir bilgi olsun olmasın işlemciye hazır olup olmadığına bağlı olarak iki durum ayırdedilebilir. Biz ilk durumu önce inceleyeceğiz.
F.1 Harici Kodlama Bilgisi Olmadan Saptama
Her XML öğeye bir harici kodlama bilgisi eşlik etmeyeceğinden ve UTF-8 veya UTF-16 olmayan kodlamanın ilk karakterleri '<?xml' olması gereken bir XML kodlama bildirimi ile başlaması gerektiğinden, bir uyumlu işlemci, aşağıdakilere uygun olarak girdinin en az iki en çok 4 sekizliğinden sonra uygulanacak kodlamayı saptayabilir. UCS-4'te '<' iminin "#x0000003C" ve '?' iminin "#x0000003F" olduğunu ve UTF-16 veri akımlarında gerekli Bayt Sıralama İminin "#xFEFF" olduğunu bilmek bu listenin okunmasında yardımcı olabilir. ## gösterimi iki ardışık ##'ın ikisinin de 00 olamayacağı durum hariç herhangi bir bayt değerini ifade etmekte kullanılmıştır.
Bayt Sıralama İmi ile:
00 00 FE FF | UCS-4, kıymetli baytın başta olduğu makine (1234 sırası) |
FF FE 00 00 | UCS-4, kıymetsiz baytın başta olduğu makine (4321 sırası) |
00 00 FF FE | UCS-4, yararsız sekizlik sıralama (2143) |
FE FF 00 00 | UCS-4, yararsız sekizlik sıralama (3412) |
FE FF ## ## | UTF-16, kıymetli bayt başta |
FF FE ## ## | UTF-16, kıymetsiz bayt başta |
EF BB BF | UTF-8 |
Bayt Sıralama İmi olmaksızın:
00 00 00 3C | UCS-4 veya 32 bitlik kodlu başka bir kodlama ve ASCII değer olarak kodlu ASCII karakterler. Bayt sıralamaları yukarıdan aşağı: kıymetli bayt başta (1234), kıymetsiz bayt başta (4321) ve iki yararsız bayt sıralaması (2143 ve 3412). UCS-4 mü yoksa başka bir 32 bitlik kodlama mı uygulanacağına karar vermek için kodlama bildirimi okunmalıdır. |
3C 00 00 00 | |
00 00 3C 00 | |
00 3C 00 00 | |
00 3C 00 3F | Bayt sıralamaları kıymetli bayt başta olmak üzere, UTF-16, ISO-10646-UCS-2 veya 16 bitlik kodlu başka bir kodlama ve ASCII değer olarak kodlu ASCII karakterler (neyin uygulanacağına karar vermek için kodlama bildirimi okunmalıdır). |
3C 00 3F 00 | Bayt sıralamaları kıymetsiz bayt başta olmak üzere, UTF-16, ISO-10646-UCS-2 veya 16 bitlik kodlu başka bir kodlama ve ASCII değer olarak kodlu ASCII karakterler (neyin uygulanacağına karar vermek için kodlama bildirimi okunmalıdır). |
3C 3F 78 6D | UTF-8, ISO 646, ASCII, bazı ISO 8859 kısımları, Shift-JIS, EUC veya ASCII karakterlerin konumların, genişliklerini ve değerlerini koruduğu 7 bitlik, 8 bitlik veya karışık genişlikli başka kodlamalar; bunlardan hangisinin uygulanacağına karar vermek için kodlama bildirimi okunmalıdır, fakat bu kodlamaların hepsi ASCII karakterler için aynı bit örüntüsünü kullandıklarından kodlama bildiriminin kendisi düzgün olarak okunmalıdır. |
4C 6F A7 94 | EBCDIC (bazı çeşitlerinde; hangi kod sayfasının kullanılacağına karar vermek için kodlama bildiriminin tamamı okunmalıdır) |
| Diğer | Kodlama bildirimi olmaksızın UTF-8. aksi takdirde veri akımı yanlış isimlendirilmiştir (gerekli kodlama bildiriminin yokluğu), bozuktur, parça parçadur ya da bir çeşit sarmalayıcı içine alınmıştır. |
- Not:
- Kodlamanın saptanması için kodlama bildiriminin okunmasını gerektirmeyen yukarıdaki durumlarda, Öğelerdeki Karakter Kodlamasıbölümü hala kodlama bildiriminin eğer varsa okunmasını ve o kodlama adının öğenin asıl kodlamasıyla eşleşmesine bakılmasını gerektirir. Ayrıca, kodlamayı saptamak için, halihazırda bunun gerekmediği durumlarda, kodlama bildiriminde kullanımı gerekli olacak yeni karakter kodlamalarını türetmek de mümkündür.
Kendiliğinden saptama için bu seviye XML kodlama bildirimini okumakta ve kodlamanın her ailesinin üyelerini tek tek ayırdetmek (yani, UTF-8'den 8859'a ve 8859 kısımlarından başka birine veya kullanılacak belirli bir EBCDIC kod sayfasını ayırdetmek ve benzeri) için gereken karakter kodlaması belirtecini çözümlemekte yeterlidir.
Kodlama bildiriminin içeriği ASCII karakter kümesinden karakterlerle sınırlı olduğundan, bir işlemci kodlama bildiriminin tamamını düzgün olarak okuyup kullanılacak kodlama ailesini hemen saptayabilir. Pratikte, geniş çapta kullanılan karakter kodlamalarının hepsi yukarıdaki kategorilerden birine karşı düştüğünden, XML kodlama bildirimi, harici bilgi kaynakları işletim sisteminde veya aktarım protokolü seviyesinde güvenilir olmasa bile bant içi karakter kodlaması isimlendirmesini oldukça güvenilir kılar. UTF-7 gibi ASCII değerle baytların aşırı yüklenmesine sebep olar karakter kodlamaları güvenilir olarak saptama konusunda başarısızlığa yol açabilir.
İşlemci kullanımdaki karakter kodlamasını saptar saptamaz, her durum için ayrı bir girdi yordamı mı yoksa girdideki her karakter için uygun dönüşüm işlevini mi çağıracağına bağlı olarak uygun davranışta bulunabilir.
Herhangi bir özadlandırmalı sistem gibi XML kodlama bildirimi de, eğer bir yazılım kodlama bildirimini güncellemeden öğenin karakter kümesi veya kodlaması değiştirirse çalışmayacaktır. Karakter kodlaması yordamlarının gerçeklenimcileri öğeyi yaftalamada kullanılan dahili ve harici bilginin doğruluğundan emin olmak konusunda dikkatli olmalıdırlar.
F.2 Harici Kodlama Bilgisinin Varlığında Öncelikler
İkinci olası durum, bazı dosya sistemlerinde veya bazı ağ protokollerindeki gibi XML öğeye kodlama bilgisi eşlik ettiği zaman ortaya çıkar. Çok sayıda elverişli bilgi kaynağı olduğunda bunların göreli önceliklerini ve uyumsuzluklarını işlemede tercih edilen yöntem, XML teslimatında kullanılacak daha yüksek seviyeden bir protokolün parçası olarak belirtilmelidir. Özellikle, lütfen text/xml ve application/xml MIME türlerini tanımlayan ve bu konuda biraz yol gösterici olan [
Eğer XML öğe bir dosyadaysa, karakter kodlamasını (varsa) saptamada Bayt Sıralama İmi ve kodlama bildirimi kullanılır.
G W3C XML Çalışma Grubu (Bilgilendirici)
Bu belirtim yayına W3C XML Çalışma Grubu (ÇG) tarafından hazırlanmış ve onaylanmıştır. Bu belirtimin ÇG onayı tüm ÇG üyelerinin oylarının gerektiği anlamına gelmez. XML ÇG'nin şimdiki ve sabık üyeleri:
- Jon Bosak, Sun (Chair)
- James Clark (Technical Lead)
- Tim Bray, Textuality and Netscape (XML Co-editor)
- Jean Paoli, Microsoft (XML Co-editor)
- C. M. Sperberg-McQueen, U. of Ill. (XML Co-editor)
- Dan Connolly, W3C (W3C Liaison)
- Paula Angerstein, Texcel
- Steve DeRose, INSO
- Dave Hollander, HP
- Eliot Kimber, ISOGEN
- Eve Maler, ArborText
- Tom Magliery, NCSA
- Murray Maloney, SoftQuad, Grif SA, Muzmo and Veo Systems
- MURATA Makoto (FAMILY Given), Fuji Xerox Information Systems
- Joel Nava, Adobe
- Conleth O'Connell, Vignette
- Peter Sharpe, SoftQuad
- John Tigue, DataChannel
H W3C XML Çekirdek Çalışma Grubu (Bilgilendirici)
Bu belirtimin dördüncü düzeltmesi W3C XML Çekirdek Çalışma Grubu (ÇG) tarafından hazırlandı. Bu belirtimin yayınlanması sırasında ÇG katılımcıları şunlardı:
- Leonid Arbouzov, Sun Microsystems
- John Cowan
- Andrew Fang, PTC-Arbortext
- Paul Grosso, PTC-Arbortext (Co-Chair)
- Konrad Lanz, A-SIT
- Philippe Le Hégaret, W3C (Staff Contact)
- Glenn Marcy, IBM
- Sandra Martinez, NIST
- Ravindrakumar R, CDAC
- Lew Shannon
- Henry Thompson, W3C (Staff Contact)
- Richard Tobin, University of Edinburgh
- Daniel Veillard
- Norman Walsh, Sun Microsystems (Co-Chair)
- François Yergeau
I Üretim Bilgileri (Bilgilendirici)
Bu dördüncü düzeltme (İngilizce olan özgün belge),
Bu çeviri ise, özgün XMLspec belgesi üzerinde yapılmış olup, çevirinin XHTML sürümü bu belgeye özel olan