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>