Sunday, April 17, 2016

XML

XML ဆိုတာက Extensible Markup Language ကိုခေါ်ဆိုခြင်းဖြစ်ပြီး platform independent တဲ့ text-based markup language တစ်ခုဖြစ်ပါတယ်။ XML ကို Meta-data Language လို့လည်းခေါ်ပါသေးတယ်။ XML ကိုမပြာခင်မှာ HTML ကိုအရင်သိထားသင့်ပါတယ်။ HTML မှာ သတ်မှတ်ထားသော tag တွေသာအသုံးပြုလို့ရပါတယ်။ သူ့ထဲမှာမပါတဲ့ tag တွေကိုရေးလို့မရပါဘူး။ (အသစ်ထပ်ထည့်လို့မရဘူးပေါ့) အဲ့တာမျိုးကို not extensible လို့ပြောပါတယ်။ XML မှာတော့ ကြိုက်တဲ့ tag ကိုရေးသားနိုင်ပါတယ်။ ကိုယ့်စိတ်ကြိုက်သတ်မှတ်ပေးလို့ရပါတယ်။ (စိတ်ကြိုက်ရေးလို့ရတယ်ဆိုတာ ဖြစ်သလိုရေးရတာမဟုတ်ပါဘူး၊ XML မှာအခြေခံသတ်မှတ်ထားတဲ့ စည်းကမ်းချက်တွေကိုတော့လိုက်နာရပါတယ်။) XML document  တွေကိုများသောအားဖြင့် low level data တွေဖြစ်တဲ့ System configuration file တွေအတွက်နှင့် document တစ်ခုရဲ့ meta data ကိုသိမ်းဆည်းရန်အတွက်အသုံးပြုပါတယ်။


XML Document

XML Document တစ်ခုမှာ အောက်ပါ components တွေပါဝင်ပါတယ်။
  1. Prologue
  2. Elements
  3. Attributes

Prologue ဆိုတာက XML Document မှာ version, encoding စတာတွေကို ကြေညာပေးတဲ့ အပိုင်းဘဲဖြစ်ပါတယ်။
            <? xml version=”1.0” encoding=”UTF-8”?>
အကယ်၍ prologue သာမပါဘူးဆိုရင် XML doc က default အနေနဲ့ version=”1.0”နှင့် encoding=”UTF-8”ကိုတည်ဆောက်ပေးမှာဖြစ်ပါတယ်။အခြားသော tag တွေနှင့်မတူတာက Prologue tag မှာ <? နှင့်စပြီး ?> နှင့်အဆုံးသတ်ပါတယ်။

Elements

Prologue ပြီးတဲ့အခါကျန်သော tag တွေအားလုံးကို element လို့ခေါ်ပါတယ်။ XML document ထဲက element tag ကိုအောက်ပါအတိုင်းရေးသားပါတယ်။
            <tag_name attribute_name=”attribute_value” >                               content                      </tag_name>
Element ထဲမှာ content လည်းဖြစ်နိုင်သလို နောက်ထပ် element tag (nested element) တစ်ခုလည်းဖြစ်နိုင်ပါတယ်။ Attribute: Element tag တစ်ခုစိတိုင်းမှာ ပါဝင်နိုင်ပါတယ်။ XML document tag တွေက case-sensitive ဖြစ်ပါတယ်။

Example of XML document
Sample XML Document

            Example မှာဆိုရင် Programming tag က အပြင်ဘက်ဆုံး tag ဖြစ်ပြီး သူ့ကို root node (Document Element) လို့ခေါ်ပါတယ်။ Programming tag ထဲမှာ အခြား tag 4 ခုပါဝင်ပါတယ်။ (Java, C, VB, HTML) Java tag ထဲမှာ attribute တစ်ခုပါဝင်ပါတယ်။ use  ဆိုတာ attribute name ဖြစ်ပြီး ၊ JDK8 ဆိုတာကတော့ attribute value ဘဲဖြစ်ပါတယ်။ Hello World ဆိုတာက content value ဘဲဖြစ်ပါတယ်။ Web tag ထဲမှာတော့ Html ရယ် Database ရယ် ဆိုပြီးတော့ nested tag ၂ခု ထည့်သွင်းထားပါတယ်။
XML document တစ်ခုဟာ only data storage ပါဘဲ။ သူကိုယ်တိုင် သူ့ထဲမှာ ပါဝင်တဲ့ data(content) တွေကိုမပြသနိုင်ပါဘူး။အဲ့တော့ သူ့ထဲက data တွေကို သိရှိနိုင်ဖို့အတွက် သူ့ကို Parse လုပ်ရပါတယ်။ အဲ့လို လုပ်ဆောင်ပေးသော function ကို XML Parser လို့ခေါ်ပါတယ်။

XML Parser

            XML Document အတွင်းမှာရှိတဲ့ element content တွေကို access လုပ်နိုင်ရန်အတွက် XML parser ကထောက်ပံ့ပေးပါတယ်။ (XML Document တစ်ခုကို parse မလုပ်ခင် အရင်ဆုံး parse လုပ်မဲ့ document က error ကင်းနေဖို့လိုအပ်ပါတယ်။ အဲ့လိုမျိုး XML document တစ်ခု error ကင်းကြောင်းစမ်းသတ်တဲ့နည်းတွေအများအပြားရှိပါတယ်) Document တစ်ခုကို parse လုပ်တဲ့အခါ နည်းလမ်း ၂ မျို:အသုံးပြုလို့ရပါတယ်။
·         Document Object Model (DOM)
·         Simple API for XML (SAX)

DOM Parser
            DOM parser က document တစ်ခုလုံးကို ဖတ်လိုက်ပါတယ်။ ဆိုလိုတာက document  တစ်ခုလုံးကို memory ပေါ်တင်ပေးလိုက်တာပါဘဲ။ tree-structure ပုံစံအနေနှင့်ပေါ့ ။ ( Document အတွင်းမှာရှိတဲ့ element တစ်ခုချင်းစိက tree node အနေနှင့် ရောက်ရှိသွားပါတယ်။ )
DOM parser's memory structure

 
SAX Parser

            SAX Parser က Event-Driven parser တစ်ခုဖြစ်ပါတယ်။ သူက document ကိုအပိုင်းတွေခွဲလုပ်တာပါ။ (Document structure တစ်ခုလုံးကို memory ပေါ်မတင်ပါဘူး Line by Line လုပ်ဆောင်သွားတာဘဲဖြစ်ပါတယ်)
Event Sequence SAX Processing