ဒုတိယခြေလှမ်း အခြေခံ DTD
XMLဟာ Tagတွေကိုလွတ်လပ်စွာ သတ်မှတ်ပြီးအသုံးပြုနိူင်သည့်အတွက် အချက်အလက်အမျိုးမျိုးကို ဖော်ပြပေးနိူင်၏။ သို့ပေမယ့် လွတ်လပ်စွာရေးသားနိူင်ခြင်းကြောင့်လည်း အဆင်မပြေမှု့များလည်း တွေ့ရှိနိူင်ပါသည်။ ဥပမာအားဖြင့် XMLနဲ့ရေးသားထားတဲ့ အချက်အလက်တွေကို တခြားကုမ္ပဏီတစ်ခုနဲ့ အဆက်အသွယ်လုပ်မည်ဆိုတဲ့ နမှုနာကိုစဉ်းစားကြည့်ကြပါ။ ကုမ္ပဏီအသီးသီးက နှစ်သက်သလို Tagတွေကို အသုံးပြုနေခဲ့မည်ဆိုလျှင် အဲ့ဒီXMLစာတွေကိုဘာသာပြန်ဖို့အတွက်လည်း Programတွေ လိုအပ်လာပါလိမ့်မည်။ သည်လိုဆိုရင်ဖြင့် အဆင်မပြေနိူင်ပါ။
XMLစာသားတွေကို အချက်အလက်အနေနဲ့ အသုံးပြုနိူင်ရန် အချက်အလက်တွေကို အသုံးချသူအချင်းချင်း ဘယ်လိုTagတွေကိုသုံးပြီး သည်XMLစာသားထဲမှာ အချက်အလက်တွေကိုဖော်ပြမယ် ဆိုတဲ့အချက်ကို ကြိုတင်သတ်မှတ်ထားဖို့လိုအပ်ပါလိမ့်မည်။ အဲ့ဒီလိုသက်မှတ်ချက်တွေကို ရေးသားနိူင်တာကတော့ Schema Languageဖြစ်ပြီး၊ DTDဟာ နှစ်ပေါင်းများစွာကတည်းက အသုံးပြုလာခဲ့တဲ့ Schemaဘာသာရပ်တစ်ခု ဖြစ်ပါသည်။ Schema ဘာသာရပ်ကိုသုံးပြီး အချက်အလက်တွေကို သက်မှတ်ထားတဲ့အတိုင်း ရေးသားထားတဲ့ XMLစာသားတွေကို ပြီးပြည့်စုံတဲ့XMLလို့ခေါ်ဝေါ်လေ့ရှိ၏။ ဤကဲ့သို့ Schemaဘာသာရပ်ကိုအသုံးပြုခြင်းအားဖြင့် အချက်အလက်တွေရဲ့ သက်မှတ်ချက်တွေကိုပုံစံချပေးနိူင်သလို၊ XMLစာသားတစ်ခုလုံးရဲ့ တည်ဆောက်ပုံကို စနစ်ချနိူင်ပေသည်။ ထို့ကြောင့် မတူညီတဲ့Applicationတွေကြားမှာလည်း အချက်အလက်တွေကို တူညီတဲ့ပုံစံ အတိုင်း အသုံးပြုစေနိူင်ခြင်းဖြစ်ပါသည်။
သည်အခန်းမှာတော့ DTDကိုအသုံးပြုပြီး ပြည့်စုံတဲ့XMLရေးသားပုံကို ဖော်ပြသွားမည်ဖြစ်သည်။ DTD ဆိုသည်မှာလည်း လက်ရှိအသုံးပြုနေတဲ့ နေရာတွေတော်တော်များများရှိပြီး၊ လေ့လာမှတ်သားရလွယ်ကူပါသဖြင့် အခြားသော Schemaဘာသာရပ်တွေကို လေ့လာရာမှာလည်း အထောက်အကူရရှိစေနိူင်ပါသည်။
DTDရဲ့လိုအပ်ချက်
DTDဆိုသည်မှာ Document Type Definitionရဲ့အတိုကောက် အခေါ်အဝေါ် ဖြစ်ပြီး၊ Schema ဘာသာရပ် တစ်မျိုးဖြစ်၏။ Schema ဘာသာရပ်ဆိုသည်မှာ XML Instanceမှာအသုံးပြုမည့် အချက်အလက်တွေ၊ ပြီးတော့ အဲ့ဒီအချက်အလက်တွေကပိုင်ဆိုင်တဲ့ အရည်အချင်းတွေကို သတ်မှတ်ရာမှာအသုံးပြုတဲ့ ဘာသာရပ်ဖြစ်၏။
အတိအကျဆိုရမည် ဆိုလျှင် XMLစာပိုဒ်တစ်ခုလုံးရဲ့ တည်ဆောက်ပုံကို စနစ်ချရာမှာ အသုံးပြုသော ဘာသာရပ်တစ်မျိုးဖြစ်ပါသည်။ အောက်ပါစာပိုဒ်ကို လေ့လာကြည့်ပါမည်။
<?xml version=”1.0” encoding=”utf-8”> <fruit-list> <fruit> <name>Apple</name> <price>100</price> </fruit> </fruit-list>
အထက်ပါ နမှုနာစာပိုဒ်သည် သစ်သီးနှင့် သူရဲ့ကုန်စျေးနှုန်းကို ဖော်ပြပေးပါသည်။ အထူးတထွေဘာမှ ပြဿနာမရှိဘူးလို့ မြင်ရမည်ဖြစ်သည်။ သို့ရာတွင်သည်အတိုင်းဆိုပါက အောက်မှနမှုနာကဲ့သို့လည်း ရေးသားနိူင် ပေလိမ့်မည်။
<?xml version=”1.0” encoding=”utf-8”> <fruit-list> <fruit> <name>Apple</name> <price>100</price> </fruit> <fruit> <price>200</price> </fruit> </fruit-list>
အထက်ပါနမှုနာမှ ဒုတိယမြောက်သစ်သီးမှာ ကုန်စျေးနှုန်းသာပါပြီး အမည်မပါသဖြင့် ဘာသစ်သီးမှန်း မသိနိူင်ပေ။ သို့ရာတွင် သည်XMLရေးပုံရေးနည်းသည် မှားနေသည်ဟု မဆိုနိူင်ပေ။ ဤသည်မှာ ဥပမာတစ်ခု သာဖြစ်ပေမယ့် လက်တွေ့တွင်လည်း လူအမျိုးမျိုးက XMLတစ်ခုကိုအသုံးပြုကြမည်ဆိုလျှင် ဤကဲ့သို့ အဆင်မပြေမှု့များသည် အနည်းနဲ့အများ ဖြစ်ပေါ်လာနိူင်ခြေရှိပေသည်။
ဤနေရာတွင် DTDကို အသုံးပြုခြင်းအားဖြင့်
ထိုကြောင့် DTDကို XMLအချက်အလက်တွေကို အသုံးပြုသူအချင်းချင်း ဘယ်လိုTagတွေကို အသုံးပြုပြီးအချက်အလက်တွေကို ဖော်ပြမည်ဆိုတာကို သတ်မှတ်ဖို့အတွက် ဘာသာရပ်တစ်ခုဖြစ်သည် ဟုဆိုလျှင် မမှားနိူင်ပေ။
DTDရဲ့ရေးသားပုံစံနစ်
XMLစာပိုဒ်တစ်ခုမှာ DTDကို XML Declarationနှင့်၊ XML Instanceရဲ့ကြားမှာရေးသားရမည် ဖြစ်သည်။ ရေးသားပုံမှာ ဖြင့် အဆုံးသတ်ရပါလိမ့်မည်။ ထိုအပိုင်းကို Document Type Declaration လို့လည်းခေါ်ဝေါ်ပါသည်။ သည်အစိတ်အပိုင်းတွင် XMLစာပိုဒ်ထဲမှာ အသုံးပြုမည့် Elementsတွေ၊ Attributesတွေပါရှိပြီး၊ မည်သို့ရေးသားရမည်ဆိုသည်ကို သတ်မှတ်ခြင်းအားဖြင့် XML Instanceရဲ့ ဖွဲ့စည်းပုံကို စနစ်ချပေးနိူင်ပါသည်။
<!DOCTYPE သတ်မှတ်မည့်Elementအမည် [ (သည်နေရာမှာ သတ်မှတ်ချက်များကို ရေးသားရပါမည်) ]>
သတ်မှတ်မည့် DTD တွင်၊ Element တွေရဲ့ သတ်မှတ်ချက်တွေ၊ Attributesတွေရဲ့ သတ်မှတ်ချက်တွေ၊ ပိုင်ဆိုင်တဲ့တန်ဖိုး တွေရဲ့သတ်မှတ်ချက်တွေ ကိုရေးသားရပါလိမ့်မည်။
အောက်ပါနမှုနာဟာ ပြည့်စုံတဲ့ XMLနမှုနာ တစ်ခုဖြစ်ပြီး စာကြောင်း၃ကြောင်းမြောက်မှ၊ ၈ကြောင်းမြောက်အထိဟာ DTDဖြစ်ပါသည်။Example 1.3.1
<?xml version="1.0" encoding="utf-8"?></p> <p><!DOCTYPE fruit-list [ <!ELEMENT fruit-list (fruit)> <!ELEMENT fruit (name, price)> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> ]></p> <p><fruit-list> <fruit> <name>Apple</name> <price>100</price> </fruit> </fruit-list>
ရေးသားထားသော XMLကို http://www.xmlvalidation.com/ တွင်စစ်ဆေးနိူင်ပါသည်။ ထို့အပြင် Eclipseကဲ့သို့ IDE တွင်ပါသည်သော XML Editorများကိုအသုံးပြုပါက XMLရေးသားပုံများ မှားယွင်းနေပါက အမှားများကို ချက်ချင်း သိရှိနိူင်ပေသည်။
1. Element ရဲ့သတ်မှတ်ချက်
Elementတွေရဲ့သက်မှတ်ချက်နေရာတွင် အမည်အတိုင်း XML Instance မှာအသုံးပြုမည့် Element တွေရဲ့အကြောင်းကို သတ်မှတ်ရေးသားရပါမည်။ Example 1 .3.1 တွင် Elementရဲ့သတ်မှတ်ချက် ၄မျိုးပါဝင်ခဲ့ပေသည်။
<!ELEMENT သတ်မှတ်မည့်Element (Child Element)>
သတ်မှတ်မည့်Elementတွင် Child Elementတစ်ခုတည်းကိုသာ အသုံးပြုမည့်အခါတွင် ဤကဲ့သို့ သတ်မှတ်ရမည် ဖြစ်မည်။ Example 1 .3.1 ကစာကြောင်းနံပါတ်၄ကို ကြည့်ပါ။ fruit-list Element တွင် fruit Child Elementကိုသာ အသုံးပြုပါမည်ဟု သတ်မှတ်ချက်ကိုရေးထားပါသည်။ သတ်မှတ် ထားသည့် Child Elementအပြင်ကို အသုံးပြုမည်ဆိုပါက Valid XMLမဖြစ်တော့ပါသဖြင့် XML Editor တွင် Error အဖြစ် ဖော်ပြမည်ဖြစ်သည်။
<!ELEMENT သတ်မှတ်မည့်Element (Element1, Element2, ... )>
သတ်မှတ်မည့်Elementတွင် Child Elementတစ်ခုထက်မက ရေးသားအသုံးပြုမည့် အခါတွင် ဤကဲ့သို့ ကော်မာကိုခံပြီး အသုံးပြုမည့် Child Elements တွေကို သတ်မှတ်ရမည် ဖြစ်မည်။ Example 1 .3.1 ကစာကြောင်းနံပါတ်၅ကို ကြည့်ပါ။ fruit Element တွင် nameနဲ့price Element ကိုသာ အသုံးပြုမည်ဟု သတ်မှတ်ထားပါသည်။ ထို့အတွက် fruitကိုရေးသားမည်ဆိုလျှင် nameကို ရေးပြီးလျှင် priceကို အစီအစဉ်အတိုင်း ရေးသားရမည်ဖြစ်သည်။
<!ELEMENT သတ်မှတ်မည့်Element (Element1 | Element2 | ... )>
သတ်မှတ်မည့်Elementတွင် Child Elementတစ်ခုထက်မက ရေးသားအသုံးပြုပြီး Child Elements များထဲမှ တစ်ခုမဟုတ်တစ်ခုကို အသုံးပြုမည့်အခါတွင် ဤကဲ့သို့ | ကိုခံပြီး အသုံးပြုမည့် Child Elements တွေကို သတ်မှတ်ရမည် ဖြစ်မည်။
<!ELEMENT သတ်မှတ်မည့်Element (#PCDATA)>
သတ်မှတ်မည့်Elementတွင် Textအချက်အလက်ကိုသာ အသုံးပြုမည့် အခါတွင် ဤကဲ့သို့ သတ်မှတ်ရေးသားရမည် ဖြစ်သည်။ ဤသို့ရေးသားထားမည်ဆိုလျှင် ထိုElement အတွင်းမှာ အခြားသော Tagကိုရေးသားလို့ မရနိူင်ပေ။ Example 1 .3.1 ကစာကြောင်းနံပါတ် ၆နှင့် ရသည် ဤကဲ့သို့ ရေးသားထားခြင်းဖြစ်သည်။ ရေးသားပုံအသေးစိတ်ကို အောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။
ရေးသားပုံ | ရှင်းလင်းချက် |
A , B | A ပြီးလျှင် Bအစီအစဉ်အလိုက်ရေးသားရမည်ဖြစ်သည်။ |
A & B | A နှင့် Bကိုရေးသားရပါမည်။အစီအစဉ်မကျ၍လည်းရေး၍ရပါသည်။ |
A | B | A သို့မဟုတ် Bကိုရေးသားရပါမည်။ |
A* | သုညကြိမ်ထက်မက Aကိုရေးသားနိူင်ပါသည်။ |
A+ | တစ်ကြိမ်ထက်မက Aကိုရေးသားနိူင်ပါသည်။ |
A? | သုညသို့မဟုတ်တစ်ကြိမ်Aကိုရေးသားနိူင်ပါသည်။ |
+A | အောက်က Elementများတွင် Aကိုသုညကြိမ်ထက်မကအသုံးပြုနိူင်ပါသည်။ |
-A | အောက်က Elementများတွင် Aကိုအသုံးပြု၍မရနိူင်ပါ။ |
EMPTY | Child Elementကိုမပိုင်ဆိုင်သောElementဖြစ်ပါသည်။ |
Attributes တွေရဲ့သတ်မှတ်ချက်
Element မှာအသုံးပြုမည့် Attributesတွေကိုလည်း သတ်မှတ်ချက်ကို ရေးသားနိူင်ပါသည်။
Example 1.3.2
<?xml version="1.0" encoding="utf-8"?></p> <p><!DOCTYPE fruit-list [ <!ELEMENT fruit-list (fruit)> <!ELEMENT fruit (name, price)> <!ATTLIST fruit place CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> ]></p> <p><fruit-list> <fruit place="USA"> <name>Apple</name> <price>100</price> </fruit> </fruit-list>
Example 3.2 ရဲ့ fruit Tagတွင် placeဆိုတဲ့ Attributeကို ဖြည့်စွက်ထားပါသည်။ ရေးသားပုံ စနစ်ကတော့ အောက်ပါအတိုင်းဖြစ်ပါသည်။
<!ATTLIST element-name attribute-name attribute-type default-value>
Element Nameနေရာမှာတော့ သတ်မှတ်မည့်Attribute ကိုပိုင်ဆိုင်တဲ့ Elementရဲ့အမည်ကို ရေးသားပြီး၊ Attribute Nameမှာတော့ သက်မှတ်မည့် Attributeရဲ့အမည်ကို ရေးသားရမည် ဖြစ်သည်။ တဖန်သတ်မှတ်မည့် Attributeရဲ့ပုံစံနှင့်၊ Defaultတန်ဖိုးကိုလည်း သတ်မှတ်ချက် ရေးသားရမည်ဖြစ်သည်။
3. Attributeအမျိုးအစားများ
Attribute Typeအနေနှင့် ရေးသားနိူင်သောအချက်အလက်များ ကိုအောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။
အချက်အလက် | ရှင်းလင်းချက် |
CDATA | Character Dataများကိုအသုံးပြုနိူင်ပါသည်။ |
(A | B | …) | A, B အစရှိသဖြင့်အချက်အလက်များထဲမှတစ်ခုခု။ |
ID | XML Instance ထဲတွင်တစ်ခုထဲသာ တန်ဖိုးအနေနှင့် အသုံးပြုနိူင်မည်ဖြစ်၏။ |
IDREF | အခြားသောElementရဲ့IDတန်ဖိုးတစ်ခုကိုကိုးကား၍အသုံးပြုနိူင်မည်ဖြစ်၏။ |
IDREFS | အခြားသောElementsများရဲ့IDတန်ဖိုးများကိုကိုးကား၍အသုံးပြုနိူင်မည်ဖြစ်၏။ |
NMTOKEN | အင်္ဂလိပ်စာလုံးများ၊သချင်္ာကိန်းစာလုံးများ၊- _ : ; စာလုံးများဖြင့်သာဖွဲ့စည်းထားသောစကားလုံးကိုသာအသုံးပြုနိူင်မည်ဖြစ်၏။ |
NMTOKENS | NMTOKEN စကားလုံးများကိုအစုအစည်းလိုက်အသုံးပြုနိူင်မည်ဖြစ်၏။ |
CDATA
ဘယ်လိုအချက်အလက်မျိုးမဆို ရေးသားနိူင်ပါသည်။ ထို့ကြောင့် သတ်မှတ်ချက်ကို မရေးသားလိုသော Attributesများမှလွဲ၍ ဤသတ်မှတ်ချက်ကို အသုံးမပြုသင့်ပေ။
(A | B | …)
ကွင်းစကွင်းပိတ်အတွင်း | စာလုံးဖြင့် ခွဲခြားထားသော အချက်အလက်များထဲမှ တစ်ခုခုကို အသုံးပြုနိူင်ပေသည်။ တနည်းဆိုသော် ထိုအချက်အလက်များအပြင်မှ အသုံးပြု၍မရနိူင်ပေ။
ID
XML Instanceထဲတွင် တစ်ခုတည်းသာရှိသော တန်ဖိုးကိုအသုံးပြုသည့်အခါတွင် သတ်မှတ်အသုံးပြု ရပါလိမ့်မည်။ ထို့ကြောင့်XML Instanceထဲတွင် တန်ဖိုးတူကိုအသုံးပြု၍ မရနိူင်ပေ။ တဖန်IDရဲ့ တန်ဖိုးကို Alphabet စာလုံး ဒါမှမဟုတ် Under barဖြင့်စရမည်ဖြစ်ပါသည်။ ထို့အပြင် နောက်ပိုင်း တွင်ဆက်လက် ဖော်ပြသွားမည်ဖြစ်သော Default Valueကိုလည်း #REQUIRED နှင့်#IMPLIED မှလွဲပြီး သတ်မှတ်၍မရနိူင်ပေ။
အောက်ပါနမှုနာတွင် Idကိုအသုံးပြုထားပါသည်။
<! ELEMENT country (#PCDATA)> <!ATTRLIST country id ID #REQUIRED> <country id="A001">USA</country> <country id="A002">Japan</country> <country id="A003">Myanmar</country>
အောက်ပါရေးသားချက်သည် အမှားများဖြစ်ပါသည်။
<country id="123" /> <country id="B001" /> <country id="B001" />
IDREF, IDREFS
IDREFသည် ID Attributeရဲ့ တန်ဖိုးတွေကိုကိုးကားပြီး အသုံးပြုနိူင်ပါသည်။ IDREFSသည်လည်း ID Attributesတွေရဲ့ တန်ဖိုးတွေကို ကိုးကားပြီးအသုံးပြုနိူင်ပါသည်။ IDREFSတွင်IDရဲ့တန်ဖိုးများကို တစ်ခုနဲ့တစ်ခု one byte spaceစာလုံးဖြင့်ခွဲခြားပြီး အသုံးပြုနိူင်ပါသည်။
အောက်ပါနမှုနာထဲတွင် reservation ကပိုင်ဆိုင်တဲ့ idရဲ့တန်ဖိုးကို၊ cancelကပိုင်ဆိုင်တဲ့ idကနေ ကိုးကားပြီးအသုံးပြုနေခြင်း ဖြစ်ပါသည်။
<! ELEMENT reservation (#PCDATA)> <!ATTRLIST reservation id ID #REQUIRED> <! ELEMENT cancel EMPTY> <!ATTRLIST cancel id IDREFS #REQUIRED> <reservation id="R0001" /> <reservation id="R0002" /> <reservation id="R0003" /> <cancel id="R0001 R0002" />
NMTOKEN, NMTOKENS
NMTOKENဆိုသည်မှာ Alphabetစာလုံးများ၊ သချင်္ာစာလုံးများ၊ - _ : ;စာလုံးများဖြင့်သာ ဖွဲ့စည်း ထားသော စကားလုံးအမျိုးအစား ဖြစ်ပါသည်။
<! ELEMENT cube (#PCDATA)></p> <p><!ATTRLIST cube height NMTOKEN #REQUIRED></p> <p><!ATTRLIST cube width NMTOKEN #REQUIRED></p> <p><cube height="10" width="20">
NMTOKENSတွင်NMTOKENများကို တစ်ခုနဲ့တစ်ခု one byte spaceစာလုံးဖြင့်ခွဲခြားပြီး အသုံးပြုနိူင် ပါသည်။
<! ELEMENT cube (#PCDATA)></p> <p><!ATTRLIST cube size NMTOKENS #REQUIRED></p> <p><cube size="10 20"></p> <p>
4. Defaultတန်ဖိုးသတ်မှတ်ချက်များ
Default Valueသတ်မှတ်ချက်သည် Attributeရဲ့တန်ဖိုးကိုရေးသားဖို့လိုအပ်ခြင်း မလိုအပ်ခြင်းကို သတ်မှတ်ချက်ချပေးနိူင်ပါသည်။ အောက်ပါဇယားတွင် အသေးစိတ်ကို ဖော်ပြပေးထားပါသည်။
သတ်မှတ်ချက် | ရှင်းလင်းချက်များ |
#FIXED “value” | Attributeရဲ့တန်ဖိုးကိုတသမတ်တည်းအသုံးပြုရာတွင်ရေးသားနိူင်ပါသည်။ |
#IMPLIED | Attributeရဲ့တန်ဖိုးကိုမလိုအပ်လျှင်မရေးသားလိုသောအခါတွင်ရေးသားနိူင်ပါသည်။ |
#REQUIRED | Attributeရဲ့တန်ဖိုးကိုမရေးသား၍မရသောသက်မှတ်ချက်ကိုအသုံးပြုလိုပါကသတ်မှတ်ရေးသားနိူင်ပါသည်။ |
“Default value” | XML Instanceတွင်Attributeကိုမရေးသားထားပါက Attributeရဲ့တန်ဖိုးတွင် “Default value”ကို အသုံးပြုသွားမည်ဖြစ်သည်။ |
#FIXED “value”
Attributeရဲ့တန်ဖိုးကို တသမတ်တည်းသတ်မှတ်ပေးနိူင်၏။ XMLရဲ့Attributeကို မရေးသားပဲနေမည် သို့မဟုတ် သတ်မှတ်ထားသောတန်ဖိုးအပြင် အသုံးမပြုစေလိုသောအခါများတွင် အသုံးပြုနိူင်ပါသည်။
<!ELEMENT it_boost (#PCDATA)> <!ATTLIST it_boost advance CDATA #FIXED "XML"> <it_boost /> သို့မဟုတ် <it_boost advance="XML" />
#IMPLIED
Attributeရဲ့တန်ဖိုးကို မရေးပဲနေချင်သောအခါတွင် သတ်မှတ်ရပါမည်။
သို့မဟုတ်
#REQUIRED
ဤကဲ့သို့သတ်မှတ်ထားမည်ဆိုပါက XML Instance တွင်Attributeရဲ့တန်ဖိုးကို မရေး၍မဖြစ်ပါ။
<!ELEMENT member (#PCDATA)> <!ATTLIST member nick_name CDATA #REQUIRED> <member nick_name ="yawana" />
“Default value”
ဤကဲ့သို့သတ်မှတ်ထားမည်ဆိုပါက XML Instance တွင်Attributeရဲ့တန်ဖိုးကို မရေးသားထားပါက သတ်မှတ်ထားသော တန်ဖိုးကိုအလိုအလျှောက် သတ်မှတ်ပေးသွားမည်ဖြစ်သည်။
<!ELEMENT juice (#PCDATA)> <!ATTLIST juice price CDATA "120" > < juice />
သို့မဟုတ်
< juice price="120" />
စာပိုဒ်အတွင်းDTDနှင့် ပြင်ပDTDများ
DTDများကို XMLများထဲတွင် တိုက်ရိုက်ရေးသားအသုံးပြုနိူင်သလို၊ ပြင်ပတွင်DTD Fileများကိုထား၍ XML များမှ ကိုးကား၍လည်း အသုံးပြုနိူင်ပေသည်။ XMLများထဲတွင် တိုက်ရိုက်ရေးသားအသုံးပြုသော DTD များကို Internal Subsetလို့ ခေါ်ဆိုပြီး၊ ပြင်ပ Fileများကို ကိုးကားအသုံးပြုသော DTDများကို External Subsetဟု ခေါ်ဆိုပါသည်။
အောက်ပါ နမှုနာသည် fruit.dtdကို fruit.xmlမှနေ ကိုးကားအသုံးပြုနေခြင်းဖြစ်ပါသည်။
fruit.dtd
<!ELEMENT fruit-list (fruit)> <!ELEMENT fruit (name, price)> <!ATTLIST fruit place CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)>
fruit.xml
<?xml version=”1.0” encoding=”utf-8”?> <!DOCTYPE fruit-list SYSTEM “fruit.dtd”> <fruit-list> <fruit place=”USA”> <name>Apple</name> <price>Apple</price> </fruit> </fruit-list>
Entity သတ်မှတ်ချက်များ
Entityသတ်မှတ်ချက်များသည် စာလုံးများကိုအခြားသော နားလည်လွယ်သည့် စာလုံးများနှင့် အစားထိုး အသုံးပြုရာတွင် အသုံးပြုကြရပေသည်။ Entityများကို ပုံမှန်Entity နှင့် Parameter Entityဟူ၍ ရှိသည်။ ပုံမှန်Entityသည် XML Instanceတွင်အသုံးပြုပြီး၊ Parameter Entityများကို DTDများတွင်အသုံးပြုကြ ပေသည်။
1. ပုံမှန်Entity
ပုံမှန်Entityမျိုးကို အသုံးပြုခြင်းအားဖြင့် XML Instanceအတွင်း စကားလုံးအရှည်များ နားလည် ရခက်ခဲသော စကားလုံးများအစား၊ လွယ်ကူသော စကားလုံးများကို အစားထိုးအသုံးပြုနိူင်ပါသည်။ ပုံမှန်Entityများကိုအသုံးပြုလိုသောအခါ DTDတွင် သတ်မှတ်ချက်ကိုရေးသားပြီးမှ အသုံးပြုနိူင်မည် ဖြစ်သည်။ ရေးသားပုံမှာအောက်ပါအတိုင်းဖြစ်ပါသည်။
<!ENTITY entity-name "value">
entity_sample.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE fruit-list [ <!ELEMENT fruit-list (fruit)> <!ELEMENT fruit (name, price)> <!ATTLIST fruit place CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ENTITY ap "apple"> ]> <fruit-list> <fruit place="USA"> <name>&ap;</name> <price>100</price> </fruit> </fruit-list>
≈ဟုရေးသားထားသည်ကို IEဖြင့်ဖွင့်ကြည့်သောအခါ အောက်ပါအတိုင်း Appleဟုမြင်ရမည် ဖြစ်သည်။
1. Parameter Entity
Parameter Entityသည် DTDစာသားများကို ရေးသားရာတွင် စကားလုံးများကို အစားထိုးရေးသား ဖို့အတွက် အသုံးပြုကြ၏။ ရေးသားပုံမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
<!ENTITY %entity-name "value">
students.dtd
<!--external DTD example--> <!ENTITY % p "(#PCDATA)"> <!ELEMENT students (student)> <!ELEMENT student (id,surname,firstname,(subject)*)> <!ELEMENT id %p;> <!ELEMENT surname %p;> <!ELEMENT firstname %p;> <!ELEMENT dob %p;> <!ELEMENT subject %p;>
Parameter Entityကိုအသုံးပြုရာတွင် %entity-name; ဟုရေးသားရပါမည်။
students.xml
<?xml version="1.0" standalone="no"?> <!DOCTYPE students SYSTEM "students.dtd"> <students> <student> <id>S001</id> <surname>Tee</surname> <firstname>Mike</firstname> <subject>Java</subject> <subject>XML</subject> <subject>XHTML</subject> </student> </students>
ပြန်လည်သုံးသပ်ချက်
ဤအခန်းတွင် DTDရဲ့ရေးသားပုံစနစ်အခြေခံကို လွယ်ကူသောနမှုနာများကိုအသုံးချ၍ တင်ပြထားပါသည်။ Schema Languageကိုအသုံးပြုပြီး XMLစာပိုဒ်များကို သတ်မှတ်ချက်စနစ်များကို ရေးသားခြင်းအားဖြင့် Program များမှအသုံးပြုရလွယ်ကူစေနိူင်သဖြင့် XMLစာပိုဒ်များအတွက် Schema Languageတွေရဲ့ အရေးပါပုံကို သိရှိနိူင် ပေသည်။ DTDအပြင်ထင်ရှားသော Schema Languageမှာ XML Schemaဖြစ်ပြီး နောက်အခန်းများတွင် ဖော်ပြသွားပါဦးမည်။