DTD - ویژگی‌ها

در DTD، ویژگی‌ها از طریق استفاده از ATTLIST برای اعلام آنها انجام می‌شود.

اعلام ویژگی

استفاده از گرامر زیر برای اعلام ویژگی‌ها است:

<!ATTLIST نام_عنصر نام_ویژگی نوع_ویژگی مقدار_默认>

مثال DTD:

<!ATTLIST payment type CDATA "check">

مثال XML:

<payment type="check" />

در زیر آمده است:نوع ویژگیگزینه‌های:

نوع توضیح
CDATA مقدار باید داده‌ی نماتیک (character data) باشد
(en1|en2|..) این مقدار یکی از مقادیر لیست انیگونی است
ID مقدار باید یک id منحصر به فرد باشد
IDREF مقدار باید id یک عنصر دیگر باشد
IDREFS لیست دیگری از idهای دیگر
NMTOKEN مقدار باید نام معتبر XML باشد
NMTOKENS ارزش یک لیست از نام‌های معتبر XML است
ENTITY ارزش یک فرانت است
ENTITIES ارزش یک لیست از فرانت‌های است
NOTATION این ارزش نام یک نماد است
xml: ارزش یک ارزش پیش‌فرض XML است

پارامترهای ارزش پیش‌فرض می‌توانند از ارزش‌های زیر استفاده کنند:

ارزش توضیح
ارزش ارزش پیش‌فرض attribute
#REQUIRED ارزش attribute ضروری است
#IMPLIED attribute ضروری نیست
#FIXED value ارزش attribute ثابت است

تعیین یک ارزش پیش‌فرض برای attribute

DTD:

!ELEMENT square EMPTY>
!ATTLIST square width CDATA "0">

XML معتبر:

<square width="100" />

در مثال بالا، "square" به عنوان یک عنصر خالی با نوع attribute "width" و نوع CDATA تعریف شده است. اگر عرض تنظیم نشده باشد، ارزش پیش‌فرض آن 0 است.

#IMPLIED

قانون‌گذاری

!ATTLIST عناصر نام attribute نوع attribute #IMPLIED>

مثال

DTD:

!ATTLIST contact fax CDATA #IMPLIED>

XML معتبر:

<contact fax="555-667788" />

XML معتبر:

<contact />

اگر نمی‌خواهید نویسنده attribute را اجباری کنید و گزینه ارزش پیش‌فرض ندارید، از کلمه کلیدی #IMPLIED استفاده کنید.

#REQUIRED

قانون‌گذاری

!ATTLIST عناصر نام attribute نوع attribute #REQUIRED>

مثال

DTD:

!ATTLIST person number CDATA #REQUIRED>

XML معتبر:

<person number="5677" />

XML نامشروع:

<person />

اگر گزینه ارزش پیش‌فرض ندارید، اما همچنان می‌خواهید نویسنده attribute را اجباری کند، از کلمه کلیدی #REQUIRED استفاده کنید.

#FIXED

قانون‌گذاری

!ATTLIST عناصر نام attribute نوع attribute #FIXED "value">

مثال

DTD:

!ATTLIST sender company CDATA #FIXED "Microsoft">

XML معتبر:

<sender company="Microsoft" />

XML نامشروع:

<sender company="W3School" />

اگر می‌خواهید attribute دارای ارزش ثابت باشد و نویسنده نتواند این ارزش را تغییر دهد، از کلمه کلیدی #FIXED استفاده کنید. اگر نویسنده از ارزش متفاوتی استفاده کند، کارخانه‌ی پردازش XML خطا بازمی‌گرداند.

ارائه ارزش‌های attribute

قانون‌گذاری:

!ATTLIST عناصر نام attribute (en1|en2|..) ارزش پیش‌فرض>

مثال DTD:

!ATTLIST payment type (check|cash) "cash">

مثال XML:

<payment type="check" />

یا

<payment type="cash" />

اگر می‌خواهید مقدار ویژگی‌ها یکی از مجموعه‌ای از مقادیر مجاز ثابت باشد، از ویژگی‌های لیستی استفاده کنید.