« مروري بر DTD | صÙ?حه اصلی | يك كد javascript كوچك »

ادامه مروري بر DTD

November 4, 2007 03:42 PM

Element ها در DTD

سينتكس Elements
در DTD با سينتكس زير element ها تعري�? مي شوند:

<!ELEMENT element-name category>
يا
<!ELEMENT element-name (element-content)>

Empty Elements
در اين نوع Element ها category برابر EMPTY مقداردهي مي شود:

<!ELEMENT element-name EMPTY>
مثال:
<!ELEMENT br EMPTY>

در XML با توجه به اين DTD تعري�? br بايد چنين باشد:

<br />

Element هاي با Parsed Character Data

<!ELEMENT element-name (#PCDATA)>

Element هاي با هر محتوا
مي توانند هر تركيبي از داده هاي قابل پارس را بپذيرند:

<!ELEMENT element-name ANY>

Element هاي داراي �?رزند

<!ELEMENT element-name (child1)>
يا
<!ELEMENT element-name (child1,child2,…)>
مثال:
<!ELEMENT note (to,from,heading,body)>

�?رزندان به همان ترتيبي كه در تعري�? آمده اند بايد در سند XML ظاهر شوند.
�?رزندان خود مي توانند داراي �?رزند باشند.

تعداد element هاي ممكن
در مثال هاي ذكر شده تا به حال تنها مي توان يك عدد از element را در XML قرار داد.
اگر بخواهيم كه تعداد تكرار يك element را مشخص نماييم از اين �?رمت ها است�?اده مي نماييم:

+ براي يك يا چند ،‌مثل

<!ELEMENT element-name (child-name+)>

* براي ص�?ر يا چند ، مثل

<!ELEMENT element-name (child-name*)>

? براي ص�?ر يا يك ، مثل

<!ELEMENT element-name (child-name?)>

محتواي دو حالتي
تعري�? زير اشاره دارد به اينكه note element داراي يك to، يك from و يك header است، به علاوه يكي از عناصر message يا body (يا message يا body)

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

محتواي تركيبي
تعري�? زير اشاره دارد به اينكه note element داراي ص�?ر يا چند تكرار از Parsed Character data، to، from، header يا message است.

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

Attribute ها در DTD
در DTD تعري�? attribute ها با عبارت ATTLIST انجام مي شود. سينتكس آن بدين شكل است:

<!ATTLIST element-name attribute-name attribute-type default-value>
مثل
<!ATTLIST payment type CDATA "check">

كه در XML بدين شكل بايد پياده شود:

<payment type="check" />

لازم به ذكر است كه لازم نيست در سند XML حتما مقدار attribute را مساوي با defalt-value قرار دهيم. بلكه هر مقدار معتبري مطابق با type مشخص شده مي تواند باشد. ولي اگر مقداري به آن نسبت داده نشده باشد، مقدار آن برابر با default-value مي گردد.

به جاي default-value و نه همراه با آن، از سه عبارت REQUIRED# و IMPLIED# و FIXED value# هم مي توانيد است�?اده كنيد. در ادامه اين سه مورد معر�?ي مي شوند.

REQUIRED#
عبارت #REQUIRED مشخص مي كند كه attribute وجودش در عنصر مربوطه الزامي است. مثل

<!ATTLIST person number CDATA #REQUIRED>

از REQUIRED# وقتي است�?اده نماييد كه مقداري بعنوان مقدار پيش �?رض نداريد، اما در عين حال مي خواهيد كه حتما اين attribute وجود داشته باشد.

IMPLIED#
از IMPLIED# وقتي است�?اده كنيد كه مقداري بعنوان default نداريد و همچنين الزامي هم در وجود اين attribute وجود ندارد. مثال:

<!ATTLIST contact fax CDATA #IMPLIED>

FIXED value#
از اين عبارت وقتي است�?اده كنيد كه مي خواهيد attribute يك مقدار مشخص داشته باشد و نويسنده XML نتواند چيز ديگري به جاي آن بنويسد. اگر نويسنده چيز ديگري بنويسد، پارسر XML خطا برميگرداند. مثال:

<!ATTLIST sender company CDATA #FIXED "Microsoft">

Attribute هاي داراي مقداير Enumerated
وقتي كه attribute مقادير مشخصي را مي تواند بپذيرد، اين مقادير در قسمت attribute-type تعري�? مي شوند. مثال:

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

لازم به ذكر است كه attribute-type علاوه بر CDATAو enumerated عبارات ديگري را نيز مي تواند بپذيرد. از جمله ID، IDREF، IDREFS، NMTOKEN، NMTOKENS، ENTITY، ENTITIES، NOTATION و xml. براي آشنايي بيشتر با اين موارد به ساير منابع موجود در ارتباط با DTD از جمله مرجع اين نوشته رجوع نماييد:


ENTITY ها در DTD
Entity ها متغيرهايي هستند كه بعنوان shortcut براي برخي متون يا كاراكترهاي ديگر به كار مي روند. Entity به دو صورت internal و external قابل تعري�? است.

تعري�? Entity بصورت internal
سينتكس:

<!ENTITY entity-name "entity-value">
مثال:
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">

و نحوه است�?اده آنها در XML بدين صورت است:

<author>&writer;&copyright;</author>

توجه كنيد كه قبل از نام entity كاراكتر "&" و بعد از آن ";" مي آيد.

تعري�? Entity بصورت external
سينتكس:

<!ENTITY entity-name SYSTEM "filename/URL">
مثال:
<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd">

نحوه است�?اده از external entity مانند internal است.

mahyar_ev | 03:42 PM

 

نظرخواهی

xanax rx or xanax recreational use or overdose xanax or wellbutrin and xanax or generic xanax no prescription

ارسال شده توسط: xanax-rx در ساعت May 31, 2009 07:42 PM

cheap xanax 2mg overnight delivery or xanax or klonopin or combine vicodin with xanax or xanax online overnight shipping or xanax deaths

ارسال شده توسط: cheap-xanax-2mg-over در ساعت May 31, 2009 07:42 PM