Mixed Elements
Mixed elementler hem karakter tipindeki veriyi hem de child elementleri içerebilirler.En basit mixed element sadece karakter verisi içeren olacaktır.Bu tipteki bir element bazen text-only element olarak da adlandırılır.Text-only elementler şu şekilde tanımlanır:
< !ELEMENT ElementName (#PCDATA) >
Text-only elementler için yapılan içerik modeli tanımlamalarında (#PCDATA) terimi kullanılır ve bu terim elementin parse edilmiş karakter verisi içerdiğini bildirir.
Örneğin:
< !ELEMENT band (#PCDATA) >
Bu element XML dökümanı içindeki cd koleksiyonuna ait olan bir bandın ismini markup etmek için kullanılmış olabilir.Aşağıdaki örnekte döküman içerisinde bu band elementinin nasıl tanımlandığı görülüyor:
<band> Candan Ercetin </band>
Aşağıdaki örnekte bir film koleksiyon bildirim kodunun oluşturulması görülmektedir:
<!ELEMENT filmler (film)+>
<!ELEMENT film (baslik,yazar+,produktor+,yonetmen+,aktor*,yorumlar?)>
<!ELEMENT baslik (#PCDATA)>
<!ELEMENT yazar (#PCDATA)>
<!ELEMENT produktor (#PCDATA)>
<!ELEMENT yonetmen (#PCDATA)>
<!ELEMENT aktor (#PCDATA)>
<!ELEMENT yorumlar (#PCDATA)>
Bu DTD nin yapısını biraz daha inceleyelim:
Film elementinin içinde bulunan baslik elementi sadece bir kez görünmelidir.Yazar,produktor ve yonetmen elementleri de en azından bir kez görünmelidir,ancak bu elementler daha fazla seferde görünebilirler.aktor elementi herhangi bir sayıda döküman içinde görünebilmektedir.film ‘in içerik modelindeki son eleman olan yorumlar elementi film hakkında ki yorumları içeren bir liste elde etmemizi sağlamaktadır.
Burda akılda tutmamız gereken şey mixed yapıdaki bir elementin child elementler içermeyeceğidir.
İşin detayına indiğimizde mixed elementlerin deklare edilişinin element-only elementlerin deklare edilişine çok benzerlik gösterdiğini görmekteyiz.Mixed bir elementin içerik modeli tekrarlanan bir seçim listesi içerir ve yazılımı şöyledir:
<!ELEMENT ElementName (#PCDATA | ElementList)>
Buradan da görüleceği üzere #PCDATA mixed elementin karakter verisini de içerebileceğini gösterir.Seçim listesinden arda kalan şey child elementleri ve element-only elemente benzeyen düzenli elementleri içerir.Daha sonra tekrar #PCDATA kullanılması durumunda child elementlerde de karakter verisinin kullanılabileceği anlamına gelir.Dikkat edilirse asterisk(*) içerik modelin en sonunda göze çarpar ve bu da tüm seçim listesinin opsiyonel bir yapıda olduğunu belirtir.Aşağıda #PCDATA ile seçim listesinin nasıl kullanılabileceği gösterilmiştir.
<!ELEMENT hatirlatma (#PCDATA | baslik | konu)*>
Not
Bir mixed elementin içerik modelinde,karakter verisi (#PCDATA) mutlaka ilk olarak seçim listesinin içinde belirtilmesi gerekir ve seçim listesinin kendisi de asterisk(*) izlemelidir
|