DTD - Öğeler
XML öğeleri, bir XML belgesinin yapı taşları olarak tanımlanabilir. Öğeler, metni, öğeleri, nitelikleri, medya nesnelerini veya hepsinin karışımını tutmak için bir kap gibi davranabilir.
Bir DTD öğesi, ELEMENT bildirimiyle bildirilir. Bir XML dosyası DTD tarafından doğrulandığında, ayrıştırıcı başlangıçta kök öğeyi kontrol eder ve ardından alt öğeler doğrulanır.
Sözdizimi
Tüm DTD öğe bildirimleri bu genel biçime sahiptir -
<!ELEMENT elementname (content)>
ELEMENT bildirimi, bir öğeyi tanımlamak üzere olduğunuz ayrıştırıcıyı belirtmek için kullanılır.
elementname , tanımladığınız öğe adıdır ( genel tanımlayıcı olarak da adlandırılır ).
içerik , hangi içeriğin (varsa) öğenin içine girebileceğini tanımlar.
Öğe İçerik Türleri
Bir DTD'deki öğe bildiriminin içeriği aşağıdaki gibi kategorize edilebilir -
Boş içerik
Öğe içeriği
Karışık içerik
Herhangi bir içerik
Boş İçerik
Bu, özel bir öğe bildirimidir. Bu öğe bildirimi herhangi bir içerik içermiyor. Bunlar anahtar kelime ile bildirilirEMPTY.
Syntax
Boş eleman bildirimi için sözdizimi aşağıdadır -
<!ELEMENT elementname EMPTY >
Yukarıdaki sözdiziminde -
ELEMENTEMPTY kategorisinin eleman beyanıdır
elementname boş elemanın adıdır.
Example
Aşağıda, boş eleman bildirimini gösteren basit bir örnek verilmiştir -
<?xml version = "1.0"?>
<!DOCTYPE hr[
<!ELEMENT address EMPTY>
]>
<address />
Bu örnekte adres boş bir eleman olarak belirtilmiştir. Adres öğesi için biçimlendirme <adres /> olarak görünecektir.
Öğe İçeriği
Eleman içerikli eleman bildiriminde, içerik parantez içinde izin verilen elemanlar olacaktır. Birden fazla öğeyi de dahil edebiliriz.
Syntax
Aşağıda, eleman içerikli bir eleman bildirimi sözdizimi verilmiştir -
<!ELEMENT elementname (child1, child2...)>
ELEMENT eleman bildirim etiketidir
elementname öğenin adıdır.
child1, child2 .. öğelerdir ve her öğenin DTD içinde kendi tanımı olmalıdır.
Example
Aşağıdaki örnek, öğe içeriğiyle öğe bildirimi için basit bir örnek gösterir -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Yukarıdaki örnekte, adres ana öğedir ve ad , şirket ve telefon_no alt öğeleridir.
İşleçlerin Listesi ve Sözdizimi Kuralları
Aşağıdaki tablo, alt öğelerin tanımlanmasında uygulanabilecek işleçlerin ve söz dizimi kurallarının listesini göstermektedir -
Şebeke | Sözdizimi | Açıklama | Misal |
---|---|---|---|
+ | <! ELEMENT öğe-adı (çocuk1 +)> | Alt öğenin, üst öğe içinde bir veya daha fazla kez bulunabileceğini belirtir. | <! ELEMENT adresi (ad +)> Alt öğe adı , öğe adı adresinin içinde bir veya daha fazla kez geçebilir . |
* | <! ELEMENT öğe-adı (çocuk1 *)> | Alt öğenin, üst öğe içinde sıfır veya daha fazla kez ortaya çıkabileceğini belirtir. | <! ELEMENT adresi (ad *)> Çocuk eleman adı elemanı adı içeride sıfır veya daha fazla kez oluşabilir adresi . |
? | <! ELEMENT öğe-adı (çocuk1?)> | Alt öğenin, üst öğe içinde sıfır veya bir kez oluşabileceğini belirtir. | <! ELEMENT adresi (adı?)> Çocuk eleman adı elemanı adı içeride sıfır veya bir defa meydana gelebilir adresi . |
, | <! ELEMENT öğe-adı (çocuk1, çocuk2)> | Eleman-ismine dahil edilmesi gereken, virgülle ayrılmış alt elemanlar dizisi verir. | <! ELEMENT adresi (ad, şirket)> Öğe adı adresinde aynı sırada olması gereken alt öğe adı , şirket dizisi . |
| | <! ELEMENT eleman-adı (çocuk1 | çocuk2)> | Alt öğede seçim yapılmasına izin verir. | <! ELEMENT adresi (ad | şirket)> Öğe adı adresinde bulunması gereken alt öğelerden birini, yani ad veya şirketi seçmenize olanak tanır . |
Kurallar
Birden fazla element içeriği varsa belirli kurallara uymamız gerekir -
Sequences - Genellikle, DTD belgelerindeki öğeler farklı bir sırada görünmelidir. Bu durumda, içeriği bir sıra kullanarak tanımlarsınız.
Bildirim, <address> öğesinin tam olarak üç çocuğu olması gerektiğini - <name>, <company> ve <phone> - ve bu sırada görünmeleri gerektiğini belirtir. Örneğin -
<!ELEMENT address (name,company,phone)>
Choices- Bir öğeye veya diğerine izin vermeniz gerektiğini, ancak ikisine birden izin vermeniz gerektiğini varsayalım. Bu tür durumlarda dikey çizgi (|) karakterini kullanmanız gerekir. Boru, özel bir OR olarak işlev görür. Örneğin -
<!ELEMENT address (mobile | landline)>
Karışık Öğe İçeriği
Bu, (#PCDATA) ve alt öğelerin birleşimidir. PCDATA, ayrıştırılmış karakter verileri, yani işaretleme olmayan metin anlamına gelir. Karışık içerik modellerinde, metin kendi başına görünebilir veya öğeler arasında serpiştirilebilir. Karışık içerik modelleri için kurallar, önceki bölümde tartışılan öğe içeriğine benzer.
Syntax
Aşağıda, karma öğe içeriği için genel bir sözdizimi verilmiştir -
<!ELEMENT elementname (#PCDATA|child1|child2)*>
ELEMENT eleman bildirim etiketidir.
elementname öğenin adıdır.
PCDATAişaretleme olmayan metindir. #PCDATA, karma içerik bildiriminde ilk sırada yer almalıdır.
child1, child2 .. öğelerdir ve her öğenin DTD içinde kendi tanımı olmalıdır.
Alt öğeler dahil edilmişse operatör (*) karma içerik bildirimini takip etmelidir
(#PCDATA) ve alt öğe bildirimleri (|) operatörü ile ayrılmalıdır.
Example
Aşağıda, DTD'de karma içerik öğesi bildirimini gösteren basit bir örnek verilmiştir.
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
]>
<address>
Here's a bit of text mixed up with the child element.
<name>
Tanmay Patil
</name>
</address>
HERHANGİ BİR Öğe İçeriği
İçerikteki ANY anahtar sözcüğünü kullanarak bir öğe bildirebilirsiniz. Çoğunlukla karma kategori öğesi olarak anılır. Öğenin izin verilen içeriğine henüz karar vermediyseniz ANY yararlıdır.
Syntax
HERHANGİ içeriğe sahip öğeleri bildirmek için sözdizimi aşağıdadır -
<!ELEMENT elementname ANY>
Burada ANY anahtar sözcüğü, metnin (PCDATA) ve / veya DTD içinde bildirilen herhangi bir öğenin <elementname> öğesinin içeriği içinde kullanılabileceğini belirtir. Herhangi bir sırayla herhangi bir sayıda kullanılabilirler. Ancak ANY anahtar sözcüğü, DTD içinde bildirilmeyen öğeleri dahil etmenize izin vermez.
Example
Aşağıda, HERHANGİ içeriğe sahip öğe bildirimini gösteren basit bir örnek verilmiştir -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address ANY>
]>
<address>
Here's a bit of sample text
</address>