DTD برای عناصر

در یک DTD، عناصر با استفاده از تعریف عناصر مشخص می‌شوند.

تعریف یک عنصر

در DTD، عناصر XML با استفاده از تعریف عناصر مشخص می‌شوند. تعریف عناصر با استفاده از زبان زیر انجام می‌شود:

!ELEMENT عناصر_الاسم دسته‌بندی>

یا

!ELEMENT عناصر_الاسم (محتوای_عنصر)>

عناصر خالی

عناصر خالی با استفاده از کلمات کلیدی دسته‌بندی EMPTY مشخص می‌شوند:

!ELEMENT عناصر_الاسم EMPTY>

مثال:

!ELEMENT br EMPTY>

مثال XML:

<br />

عناصر که تنها PCDATA دارند

عناصر که تنها PCDATA دارند، با استفاده از #PCDATA در میان پرانتز‌ها مشخص می‌شوند:

!ELEMENT عناصر_الاسم (#PCDATA)>

مثال:

!ELEMENT از (#PCDATA)>

عناصر با هر محتوایی

عناصر که با کلمات کلیدیANY در دسته‌بندی‌ها مشخص شده‌اند، می‌توانند ترکیبی از هر داده‌های قابل تحلیل را شامل شوند:

!ELEMENT عناصر_الاسم ANY

مثال:

!ELEMENT note ANY

عناصری که دارای فرزندان (زنجیره) هستند

عناصری که دارای یک یا چند فرزند هستند با نام فرزندان در گوشه‌های قفل شده اظهار می‌شوند:

<!ELEMENT نام_عنصر (نام_عنصر_فرزند 1)>

یا

<!ELEMENT نام_عنصر (نام_عنصر_فرزند 1,نام_عنصر_فرزند 2,...)>

مثال:

<!ELEMENT note (to,from,heading,body)>

وقتی فرزندان به ترتیب توسط کاما جدا می‌شوند، این فرزندان باید به همان ترتیب در مستند ظاهر شوند. در یک اظهار کامل، فرزندان باید اظهار شوند و فرزندان می‌توانند فرزندان خود را داشته باشند. اظهار کامل عنصر "note" است:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to      (#PCDATA)>
<!ELEMENT from    (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body    (#PCDATA)>

اظهار عنصرهایی که فقط یک بار ظاهر می‌شوند

<!ELEMENT نام_عنصر (نام_عنصر_فرزند)>

مثال:

<!ELEMENT note (message)>

مثال بالا نشان می‌دهد که عنصر فرزند "message" باید یک بار ظاهر شود و فقط در داخل عنصر "note" ظاهر شود.

اظهار عنصرهایی که حداقل یک بار ظاهر می‌شوند

<!ELEMENT نام_عنصر (نام_عنصر_فرزند+)>

مثال:

<!ELEMENT note (message+)>

علامت جمع در مثال بالا نشان می‌دهد که عنصر فرزند "message" باید در داخل عنصر "note" حداقل یک بار ظاهر شود.

اظهار عنصرهایی که صفر یا چندین بار ظاهر می‌شوند

<!ELEMENT نام_عنصر (نام_عنصر_فرزند*)>

مثال:

<!ELEMENT note (message*)>

علامت ستاره در مثال بالا نشان می‌دهد که عنصر فرزند "message" می‌تواند در داخل عنصر "note" صفر یا چندین بار ظاهر شود.

اظهار عنصرهایی که صفر یا یک بار ظاهر می‌شوند

<!ELEMENT نام_عنصر (نام_عنصر_فرزند?)>

مثال:

<!ELEMENT note (message?)>

علامت سوال در مثال بالا نشان می‌دهد که عنصر فرزند "message" می‌تواند در داخل عنصر "note" صفر یا یک بار ظاهر شود.

اظهار محتوای نوع "نه.../یا..."

مثال:

<!ELEMENT note (to,from,header,(message|body))>

مثال بالا نشان می‌دهد که عنصر "note" باید شامل عناصر "to", "from", "header" و همچنین عنصر "body" باشد که نه "message" است.

محتوای ترکیبی را اعلام می‌کند

مثال:

<!ELEMENT note (#PCDATA|to|from|header|message)*)>

مثال بالا این را بیان می‌کند: عنصر "note" می‌تواند PCDATA، "to"، "from"، "header" یا "message" را صفر یا بیشتر شامل شود.