Showing posts with label XML ဆီသို့ခြေလှမ်းများ. Show all posts
Showing posts with label XML ဆီသို့ခြေလှမ်းများ. Show all posts

April 30, 2012

တတိယ ခြေလှမ်း XSL

XML ၏ Tag များကို အသုံးပြုခြင်းအားဖြင့် အချက်အလက်များ၏ အဓိပ္ပါယ်များနှင့်၊ ထူးခြားချက်များကို ဖော်ပြပေးနိုင်ပါသည်။ ယခင် အခန်းများဖြင့် ဖော်ပြပြီးသကဲ့သို့ XMLတွင် အချက်အလက်များကို ဖော်ပြရန်အတွက် Tag များကို လွတ်လပ်စွာ အသုံးပြုနိုင်၏။ ထို့အတွက် HTMLကဲ့သို့ ပိုင်ဆိုင်တဲ့ Tagတွေ အသီးသီးကို မည်သို့ ဖော်ပြမည် ဆိုသည်ကို ကြိုတင် သတ်မှတ်ထားခြင်း မရှိပေ။ သို့ရာတွင် XMLအချက်အလက်များကို ပြင်ဆင်ပြီးလှပစွာ ပုံဖော်၍ အသုံးပြုလိုသောအခါ ရှိပေမည်။ XML ဖြင့် ရေးသားထားသော အချက်အလက်များကို လှပသေသပ်စွာ ဖော်ပြနိုင်ရန် မည်သို့ပြုလုပ်ရမည် ဆိုသည့်အချက်သည် လိုအပ်ချက်တစ်ခု ဖြစ်လာခဲ့ပါသည်။

ထိုတာဝန်များကို ထမ်းဆောင်ပေးနေသည်မှာ XSL ဖြစ်ပေသည်။ XSLဆိုသည်မှာ Extensible Style sheet Language ရဲ့အတိုကောက် အခေါ်အဝေါ် ဖြစ်ပြီး၊ XML စာပိုဒ်များ၏ Styleကို သတ်မှတ်ပေးနိုင်သော ပညာရပ်တစ်ခု ဖြစ်၏။

နည်းပညာရပ် တစ်ခုဟု ဆိုသော်လည်း၊ အမှန်မှာမူ XSLသည် အောက်ပါ နည်းပညာရပ်များဖြင့် ဖွဲ့စည်း ထားပါသည်။
  • XML ရဲ့တည်ဆောက်ပုံကို ပြောင်းလည်းပေးသော XSLT (XSL Transformations)
  • XML စာပိုဒ် များ၏ အစိတ်အပိုင်း အတိအကျကို ရှာဖွေနိုင်သော XPath (XML Path Language)
  • အမြင်ပိုင်း ဆိုင်ရာ Styleကိုဖော်ပြပေးနိုင်သော XSLFO (XSL Formatting Objects)
XSL၏XSLFOသည် HTML၏CSSကဲ့သို့ နေရာတွင်တည်ရှိပေသည်။ ဤတတိယခြေလှမ်းတွင် XSLTကို အသုံးပြု၍၊ XMLအချက်အလက်များကို Web Browser များတွင် ဖော်ပြနည်း များကို တင်ပြသွားမည် ဖြစ်သည်။ သို့ရာတွင် XSLFO မှာ CSSဖြင့် အစားထိုးအသုံးပြုနိုင်သဖြင့် ဤအခန်းတွင်မှု အထွေအထူး ဖော်ပြတော့မည် မဟုတ်တော့ပါ။


XSL ၏ အခြေခံ သဘောတရား

XSL သည် အသုံးပြုလိုသည့် ဖိုင်အမျိုးအစား အပေါ်မှုတည်၍ အမျိုးအစားများကို ခွဲခြားထားပါသည်။ PDF ဖိုင်များကို ရေးသားရာတွင် PDF သုံး XSL ကို အသုံးပြုရန် လိုအပ်ပြီး၊ HTML ဖိုင်များအား အသုံးပြုရာတွင် HTML သုံး XSL ကို အသုံးပြုရန် လိုအပ်ပါသည်။ XSL များတွင် XSL processor များကို အသုံးပြုခြင်း အားဖြင့် XML အချက်အလက်များကို အသုံးပြုလိုသည့် အမျိုးအစား၏ တည်ဆောက်ပုံအဖြစ် ပြောင်းလည်း ပေးနိုင်ပါသည်။ ဥပမာ အားဖြင့် XML စာပိုဒ်အား HTML သုံးXSLကိုအသုံးပြုပါက HTMLအချက်အလက်အဖြစ် ပြောင်းလည်း ပေးနိုင်သလို၊ PDF သုံးXSLကိုအသုံးပြုပါက PDF အချက်အလက်များအဖြစ် ပြောင်းလည်းပေးနိုင်ပါသည်။



XSL Processor သည် အတော်များများသော Internet Explore တွင် ပါရှိပါသဖြင့်၊ ဤအခန်းတွင် ဖော်ပြသော နမှုနာများကို Internet Explore ကိုအသုံးပြု၍ လက်တွေ့ လေ့လာသွားမည် ဖြစ်သည်။


XSLT (XSL Transformation)

XML စာပိုဒ်တစ်ခု၏ အချက်အလက်များကို ဘယ်လိုပုံစံဖြင့်ဖော်ပြပါမည်ဆိုတဲ့ အချက်အလက်များကို ရေးသားထားခြင်းကို Style Sheet ဟုခေါ်ပါသည်။ ထို Style Sheet၏ File Typeသည် .xslဟုရေးသားဖို့ လိုအပ်ပါသည်။ သို့ရာတွင် Style Sheetကိုယ်တိုင်လည်း XMLရေးသားပုံအတိုင်း ရေးသားထားခြင်း ဖြစ်ပါသည်။ ဦးစွာ လက်တွေ့ ရေးသားပြီး ဘယ်လို ရေးသားရသည်ကို ရှင်းလင်း သွားပါမည်။


book.xml
<?xml version="1.0" encoding=”UTF-8” ?>
<?xml-stylesheet href="book.xsl" type="text/xsl"?>
<book-list>
    <book>
        <name>Head First Java</name>
        <price>$ 25.00</price>
    </book>
        <book>
        <name>Effective Java</name>
        <price>$ 42.09</price>
    </book>
    <book>
        <name>Head First Design Patterns</name>
        <price>$ 29.00</price>
    </book>
</book-list>
အထက်ပါ book.xmlတွင်အသုံးပြုသော Style Sheet သည်အောက်ပါ book.xslဖြစ်၏။
<?xml version=”1.0” encoding=”UTF-8” ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
    <xsl:template match="/">
        <html>
        <body>
        <table border="1">
        <tr><th>Book Name</th><th>Book Price</th></tr>
        <xsl:apply-templates select="booklist/book" />
        </table>
        </body>
        </html>
    </xsl:template>
    <xsl:template match="book">
        <tr>
        <td><xsl:value-of select="name" /></td>
        <td align="right"><xsl:value-of select="price" /></td>
        </tr>
    </xsl:template>
</xsl:stylesheet>
အထက်ပါ book.xmlကို Internet Explore ဖြင့် ဖွင့်ကြည့်မည် ဆိုလျှင် အောက်ပါအတိုင်း တွေ့မြင်ရပေမည်။


Style Sheet ကို အသုံးပြုခြင်း

အထက်ပါ book.xml ၏ ဒုတိယမြောက် စာကြောင်းသည် XML စာပိုဒ်အတွင်းတွင် XSL ကိုအသုံးပြုပါမည် ဟုသတ်မှတ်ချက် ပေးနေခြင်း ဖြစ်ပါသည်။ ထိုစာကြောင်းကို ရေးသားခြင်းအားဖြင့် XML စာပိုဒ်တွင် အသုံးပြုမည့် Style Sheet ကိုသတ်မှတ်ပြီး ဖြစ်စေပါသည်။ ရေးသားပုံမှာ အောက်ပါအတိုင်း ဖြစ်ပါသည်။
<?xml-stylesheet href="book.xsl" type="text/xsl" ?>

တဖန် Style Sheet ဖြစ်တဲ့ book.xsl ကို လေ့လာကြည့်ကြပါဆို့။ xsl သည်လည်း XML စာပိုဒ်တစ်မျိုး ဖြစ်သည့်အတွက် ပဋ္ဌမစာကြောင်းသည် XML Declaration ဖြစ်ပါသည်။ ဒုတိယ စာကြောင်းမှ စ၍ XML Instance ဖြစ်ပြီး stylesheet Tag ဖြင့် အစပြုထားပေသည်။

Namespace Uri အဖြစ် http://www.w3.org/1999/XSL/Transform ကိုအသုံးပြုပြီး၊ prefix အဖြစ် xsl ကို အသုံးပြုထားပါသည်။ ထိုစာကြောင်းသည် XSLT ကိုရေသားရာတွင် မရေးမဖြစ် ရေးသားရမည်ဖြစ်၏။ တနည်းဆိုသော် Stylesheet Element သည် XSLT၏ Root Element အဖြစ် မရှိမဖြစ်လိုအပ်ပါသည်။ ထိုမှတဆင့် ရေးသားလိုသော Style ကို Child Elements များအတွင်း ရေးသားရမည် ဖြစ်သည်။

Template Rule

စာကြောင်း နံပါတ်၃မှ ၁၇အထိသည် Template စည်းမျဉ်း များဖြစ်ကြ၏။ Template စည်းမျဉ်း ဆိုသည်မှာ XML၏အပိုင်းတစ်ခုကို ဘယ်လိုပုံစံပြောင်းရမည်ဟု သက်မှတ်ထားသော စည်းကမ်းများ ဖြစ်ကြ၏။ စာကြောင်းနံပါတ်၃သည် root node ရဲ့ဖော်ပြပုံပုံစံကို သတ်မှတ်နေ၏။ တဖန်စကြောင်း ၁၂မှစ၍ book node၏ ဖော်ပြပုံဖြစ်၏။ Template Rule Tag၏ရေးသားပုံမှာ အောက်ပါအတိုင်း ဖြစ်၏။
<xsl:template match="/"> <------ root node
…
<xsl:template match="book"> <------ single node
Template Tag၏ match attributeသည် လက်ရှိTemplateတွင်အသုံးပြုမည့် nodeကို Xpath ရေးသားပုံဖြင့် သတ်မှတ်ရပါမည်။ book.xslတွင် root node နှင့် book nodeအသီးသီးကို စာကြောင်း၃နှင့်၁၂တွင်သတ်မှတ်ထားပါသည်။

Template Rule ၏ အသုံးပြုပုံ

book.xsl၏ စာကြောင်းနံပါတ်၈ကို ကြည့်ပါ။ ထိုစာကြောင်းတွင် booklist/book Elementအတွက် Template Ruleကို အသုံးပြုနေပါသည်။ ဤစာကြောင်းသည် Root Node ၏ Template စည်းမျဉ်းအတွင်းရေးသားထားပါသဖြင့် Root Nodeကို Context Nodeအဖြစ်အသုံးပြုပြီး အသုံးပြုမည့် Node များကို ရည်ညွှန်း၍ ဖော်ပြရပါသည်။
<xsl:apply-templates select="booklist/book">
Book Elementl ၏ Template စည်းမျဉ်းများသည် စာကြောင်း၁၂ မှ ၁၇ အထိ ရေးသားထားပြီး XSLT က HTML အဖြစ် ပုံစံပြောင်းလိုက်သောအခါ အောက်ပါ အတိုင်း ပြောင်းလည်းသွားမည် ဖြစ်သည်။
<xsl:template match="/">
<html>
<body>
    <table border="1">
    <tr><th>Book Name</th><th>Book Price</th></tr>
    <!-- ဤနေရာမှ Book Node ၏ Template စည်းမျဉ်းတွင် သတ်မှတ်ထားသည့် အတိုင်းဖြစ်၏ -->
    <tr>
    <td><xsl:value-of select="booklist/book/name" /></td>
    <td><xsl:value-of select="booklist/book/price" /></td>
    </tr>
    </table>
</body>
</html>
</xsl:template>
book.xml ၏ Book Node များအား အထက်ပါ စီးမျဉ်းအတိုင်း ပုံစံပြောင်းပေးမည် ဖြစ်သည်။ book.xml ၏ စာအုပ် ၃အုပ်လုံးသည် အထက်ပါစည်းမျဉ်းအတိုင်း ပုံစံပြောင်း နေသည်ကို ကြည့်ရှုနိုင် ပါသည်။

Text Node များ

book.xsl ၏ စာကြောင်း၁၄နှင့် ၁၅ကိုကြည့်ပါ။ value-of Tag ကိုအသုံးပြုပြီး XML စာပိုက်၏ Text Node များကို ပုံစံပြောင်းပေးနေပါသည်။ XML စာပိုဒ်အတွင်းမှ select attribute တွင်သတ်မှတ်ထားသော Text Nodeအမည်ရှိသော Node များ၏တန်ဖိုးများအား ဤ Tag အတွင်းတွင် သက်မှတ်ထားသော စည်းမျဉ်းအတိုင်း ပုံစံပြောင်းပေး မည်ဖြစ်၏။
<xsl:value-of select="name">


xsl: Prefix မဟုတ်သော Tag များ

Template စာသားအတွင်းရှိ xsl ဖြင့် အစပြုသော Tag များနှင့် အခြားသော Tag များကိုလည်း တွေ့ရှိနိုင်မည် ဖြစ်သည်၊ xsl နှင့်အစမပြုသော အစိတ်အပိုင်းများသည် ပုံစံပြောင်းရန် မလိုအပ်သော အစိတ်အပိုင်းများ ဖြစ်ပြီး၊ ရေးသားထားသည့် အတိုင်း စာပိုဒ်အတွင်းတွင် ဖော်ပြသွားမည် ဖြစ်သည်။


XPath

XPath သည် XSL မှ XML စာပိုဒ်အတွင်းမှ အချက်အလက်များ၏ နေရာအတိအကျကို ဖော်ပြရာတွင် အသုံးပြုသော စနစ်တစ်ခုဖြစ်၏။ XPath မပါဝင်ပဲ XSLကိုအသုံးပြုနိုင်မည် မဟုတ်ပေ။ XPath သည်လည်း XML ဘာသာရပ် ကဲ့သို့ပင် သစ်ပင်ဖွဲ့စည်းပုံ (Tree Structure) ကို အသုံးပြုထားပါသည်။ XMLနှင့် ကွာခြားသည်မှာ Element အဆင့်မဟုတ်ပဲ၊ Nodeအဆင့်ဖြင့် သစ်ပင်ဖွဲ့စည်းပုံကို ဖွဲ့စည်းထားခြင်း ဖြစ်သည်။



Node အမျိုးအစားများ


Xpath တွင်XML၏ Element, Attributeနှင့်တန်ဖိုးများကို သီးခြား Nodeတွေအဖြစ် သတ်မှတ် ထားပေသည်။ Node အမျိုးအစားများကို အောက်ပါအတိုင်း ၄မျိုးခွဲခြား ထားပါသည်။

အမျိုးအစား ရှင်းလင်းချက်
Root Node XML စာပိုဒ်များတွင် မရှိမဖြစ်လိုအပ်သော တစ်ခုတည်းသော Nodeဖြစ်ပြီး၊ သစ်ပင်ဖွဲ့စည်းပုံ၏ ပင်မနေရာတွင် တည်ရှိသော Nodeဖြစ်ပါသည်။ အမြဲတမ်း / ဟုဖော်ပြလေ့ရှိပြီး၊ Nodeတွေအားလုံး၏ ပင်မြစ်ဖြစ်ပေသည်။ Root Node၏အောက်တွင် အမြဲတမ်း Root Element တစ်ခုတည်ရှိပေမယ့် ထိုElementနှင့် Root Node တို့သည် သီးခြား Node များ ဖြစ်ကြပါသည်။
Element Node XML စာပိုဒ်များ၏ Elementအမည်တွင် နေရာကျပေလိမ့်မည်။ အထက်ပါ ဥပမာတွင် company, employee, name, branchအစရှိသည့် Node များသည် Element Node များဖြစ်ကြပါသည်။
Attribute Node XML စာပိုဒ်များ၏ Attribute များ၏နေရာတွင် တည်ရှိပေသည်။ အထက်ပါဥပမာတွင် Age သည် Attribute Nodeဖြစ်၏။
Text Node XML စာပိုဒ်များ၏ Text Value များသည် Text Node များဖြစ်ကြ၏။


XPath Node


Xpath တွင် Nodeတစ်ခုရဲ့ အချက်အလက်ကို ဖော်ပြရာတွင် ထို Node ရဲ့ တည်နေရာကို ဖော်ပြပေးဖို့လိုအပ်ပါသည်။ Node တစ်ခု၏နေရာကိုဖော်ပြရာတွင် Node တစ်ခုနှင့် တစ်ခုအကြား / ကိုကြားခံ၍ ဖော်ပြရပါမည်။ ထိုသို့ဖော်ပြချက်ကို နေရာဖော်ပြချက် (Location Path) ဟု ခေါ်ပါသည်။ Node တစ်ခု၏ တည်နေရာကိုဖော်ပြပုံမှာ ၂မျိုးခွဲခြားနိူင်ပါသည်။ XML စာပိုဒ် တစ်ခုလုံး၏ နေရာအတိအကျကိုဖော်ပြပေးသော အတိအကျနေရာ(Absolute Location Path )နှင့်၊ လက်ရှိ Node မှ၊ ရောက်ရှိလိုသော Node ကိုညွှန်ပြသော နှိုင်းယှဉ်နေရာ (Relative Location Path) ဟူ၍ ရှိပေသည်။


အတိအကျနေရာ (Absolute Location Path)

Root Nodeနေရာမှ ဖော်ပြလိုသော Nodeအထိ လမ်းကြောင်းကို အတိအကျ နေရာဟုခေါ်ပါသည်။ အထက်ဖော်ပြပါပုံတွင် name Node၏ အတိအကျနေရာ ဖော်ပြချက်မှာ အောက်ပါ အတိုင်းဖြစ်သည်။

/company/employee/name


နှိုင်းယှဉ် နေရာ (Relative Location Path)

Node တစ်ခုမှ အခြားသော Node တစ်ခု၏ နေရာကိုနှိုင်းယှဉ်၍ ဖော်ပြရာတွင် အသုံးပြုပါသည်။ Node တစ်ခု၏အပေါ်တွင်ရှိသော Node ကို Parent Node ဟုခေါ်ပြီး၊ အောက်တွင်ရှိသော Node ကို Child Node ဟု ခေါ်ပါသည်။ သား၏သားNode များသည် Grand Child Node များဖြစ်ကြပါသည်။ ကဲ့သို့ ခေါ်အဝေါ်များကို XPath Axes ဟုခေါ်ပါသည်။



အမျိုးအစား ရှင်းလင်းချက်
ancestorကိုယ့်၏အထက်မှNode များ
ancestor-or-selfကိုယ်နှင့်ကိုယ့်၏အထက်မှNode များ
attributeကိုယ်ပိုင်ဆိုင်သောAttribute Node များအားလုံး
childကိုယ်၏သားအဆင့်ရှိChild Node များအားလုံး
descendantကိုယ်၏အောက်မှNode များ
descendant-or-selfကိုယ်နှင့်ကိုယ်၏အောက်မှNode များ
followingကိုယ်၏အနောက်မှရှိသောNode များအားလုံး
following-siblingကိုယ်၏အနောက်မှမိဘတူညီသော ညီအကို Node များအားလုံး
parentကိုယ်၏အထက်တွင်ရှိသောမိဘ Node
precedingကိုယ်၏အရှေ့မှ Node များအားလုံး
Preceding-siblingကိုယ့်ရှေ့မှမိဘတူညီသော ညီအကိုNode များအားလုံး
selfကိုယ်ကိုတိုင်

တဖန် XPath တွင် အတိုကောက် စာလုံးများကိုလည်း အသုံးပြု နိုင်ပေသည်။ အသုံးပြုနိုင်သော အတိုကောက် စာလုံးများမှာ အောက်ပါအတိုင်း ဖြစ်ပါသည်။

အမျိုးအစား ရှင်းလင်းချက်
/root
//descendant-or-self
.self
..parent
@Attribute


အမည်တူ Node များ

ဥပမာအားဖြင့် //name ဟု name ဟု အမည်ရသော node များကို ဖော်ပြသည့်အခါမျိုးတွင် နှစ်ခုထက်မက တည်ရှိပါက ခွဲခြားဖော်ပြရန် လိုအပ်ပါသည်။

Node ၏အမည် [နံပါတ်]

Diagram3.2.1၏ company node တွင် child nodeနှစ်ခုရှိပါသည်။ ဥပမာအားဖြင့် မင်းလွင် အမည်ရှိသော Node သည် employee [1] ဖြစ်၍၊ စည်သူဟုအမည် node ကိုပိုင်ဆိုင်သော node သည် employee [2] ဖြစ်သည်။ အခြားသော ပရိုဂရမ်မင်း ဘာသာရပ်များကဲ့သို့ 0 မှ အစမပြုသည်မှာ သတိထားစရာ အချက် တစ်ခုဖြစ်သည်။


XPath Functions

XPath တွင် xml အချက်အလက်များကို လိုအပ်သလို ပြုပြင်အသုံးပြုနိုင်ရန် Function များကို ပြင်ဆင်ထားပါသည်။ အောက်ပါ book.xml နမှုနာဖြင့် XPath Function များ၏အသုံးပြုပုံကို ဆက်လက်လေ့လာ သွားပါဦးမည်။
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="book.xsl" type="text/xsl"?>
<booklist>
    <book>
        <name>Head First Java</name>
        <price>25.00</price>
    </book>
    <book>
        <name>Effective Java</name>
        <price>42.09</price>
    </book>
    <book>
        <name>Head First Design Patterns</name>
        <price>29.12</price>
    </book>
    <book>
        <name>SQL Hacks</name>
        <price>18.36</price>
    </book>
    <book>
        <name>EJB 3.1</name>
        <price>31.00</price>
    </book>
    <book>
        <name>Seasor 2 Notes</name>
        <price>19.28</price>
    </book>
    <book>
        <name>Java Remote Interface</name>
        <price>29.03</price>
    </book>
</booklist>
အထက်ပါ book.xml ရှိ အချက်အလက်များအား အသုံးပြု၍ book.xsl ကို ရေးသားကြည့်ပါမည်။
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h3>
Count of Books :
<xsl:value-of select="count(booklist/book)" /></h3>
<table border="1">
    <tr style="background-color:silver">
    <th>Book Name</th>
    <th>Book Price</th>
    </tr>
    <xsl:apply-templates select="booklist/book" />
    <tr style="background-color:silver">
    <td style="padding-left:10px"> Total price</td>
    <td style="text-align: right">
    <xsl:value-of select="sum(booklist/book/price)" />
    </td>
    </tr>
    </table>
    </xsl:template>
    <xsl:template match="book">
    <tr><td style="padding-left:10px;width:450px">
    <xsl:value-of select="name"></xsl:value-of></td>
    <td style="text-align: right">
    <xsl:value-of select="price"></xsl:value-of>
    </td></tr>
    </xsl:template>
</xsl:stylesheet>


Count Function


book.xsl၏ စာကြောင်းနံပါတ်၉ကိုကြည့်ပါ။ select attributeတွင် count(booklist/book) ဟုရေးသား ထားပါသည်။ ထိုစာကြောင်းတွင် count function ကိုအသုံးပြုပြီး၊ booklist ထဲမှ စာအုပ်များကို ရေတွက်နေပါသည်။


Sum Function


book.xsl ၏ စာကြောင်းနံပါတ်၂၀ကိုကြည့်ပါ။ select attribute တွင် sum(booklist/book/price) ဟုရေးသား ထားပါသည်။ sum function ကိုသုံးပြီး စာအုပ်ဈေးနှုန်းများ၏ စုပေါင်းဈေးနှုန်းကို တွက်ချက် ရယူပါသည်။

book.xml ကို web browserဖြင့် ဖွင့်ကြည့်သောအခါ အောက်ပါအတိုင်းတွေ့မြင်ရမည်ဖြစ်သည်။


အထက်ပါ count နှင့်sum အပြင် XPathတွင် အသုံးပြုရန် function များစွာရှိပါသည်။ အသုံးပြုသည့် အချက်အလက် များပေါ်တွင်မှုတည်ပြီး function များကို အဖွဲ့အစည်း ခွဲခြားထားပြီး၊ အသုံးများသော functions များမှာ အောက်ပါအတိုင်းဖြစ်၏။

အုပ်စုအမည် ဖန်ရှင်အမည် အသုံးပြုပုံ
Node Set Functions count (Node set) Node set၏ အရေအတွက်ကို သိလိုသည့်အခါမှာ အသုံးပြုရပါသည်။
id (Identifier Name) Identifier Name နှင့်တူညီသော id ကို ပိုင်ဆိုင်သော Element များကိုရှာဖွေ နိုင်ပါသည်။
last () လက်ရှိ Node၏ နောက်ဆုံးနေရာတွင် တည်ရှိသော Element ကို ရရှိနိုင်ပါသည်။
name (Node Set) Node Set ၏ name Attribute ၏ တန်ဖိုးကို သိရှိနိုင်ပါသည်။
position () လက်ရှိ Node၏ တည်နေရာကို ရရှိနိုင်ပါသည်။
String Functions concat (String1, String2, ...) စကားလုံးစုများကို ပေါင်းစပ်ရာတွင် အသုံးပြု ပါသည်။
substring (String, index, count) စကားလုံးစု String အား၊ indexနေရာမှစ၍ count စာလုံးမြောက်အထိ ဖြတ်ယူရာတွင် အသုံးပြုပါသည်။
substring-after (String1, String2) String1 အတွင်းရှိ String2 စာလုံး၏အနောက်ရှိ စကားလုံးများကို ဖြတ်တောက်ယူရာတွင် အသုံးပြု ပါသည်။
substring-before (String1, String2) String1 အတွင်းရှိ String2 စာလုံး၏အရှေ့ရှိ စကားလုံးများကို ဖြတ်တောက် ယူရာတွင် အသုံးပြု ပါသည်။
substring-length (String) စကားလုံးစု၏ စာလုံးအရေအတွက်ကို ရယူရာတွင် အသုံးပြုပါသည်။
translate (String1, String2, String3) မှုရင်း စာကြောင်း String1 အတွင်းရှိ String2 များကို String3 အဖြစ် ပြောင်းလည်း ဖော်ပြလိုသည့်အခါတွင် အသုံးပြု နိုင်ပါသည်။
Numeric Functions number (String) String စကားလုံးစုများမှ ကိန်းဂဏန်းအဖြစ် ပြောင်းလည်း ယူနိုင်ပါသည်။
round (Numeric) ကိန်းဂဏန်းကို အနီးစပ်ဆုံး အပြည့်ကိန်းများအဖြစ် ပြောင်းလည်းပေး နိုင်ပါသည်။
sum (Node Set)  Node set များ၏ စုစုပေါင်း ရလဒ်ကို တွက်ယူ နိုင်ပါသည်။

XPath Function များသည် XSL တွင်သာမက XML DB တွင် အသုံးပြုသော XQuery တွင်လည်း အသုံးပြုနိုင်ပါသည်။ အသေးစိတ်ကိုတော့ W3C ရဲ့ Web Page များတွင် လေ့လာနိုင်ပါသည်။ 
http://www.w3.org/TR/xpath-functions/


XPath Operators


အထက်ပါအခန်းများတွင် ဖော်ပြပြီးသည့်အတိုင်း XSL တွင် XPath ၏ဖော်ပြချက်များအပေါ်မှုတည်၍ သက်ဆိုင်ရာ Node များ၏ Style များကို ပြောင်းလည်းပေးခြင်း၊ တဖန် XPath ၏ Functions များကို အသုံးပြုပြီး သက်ဆိုင်ရာ Node များမှ လိုအပ်သော တန်ဖိုးများကို ပြောင်းလည်းယူခြင်းများကို ပြုလုပ်နိုင်ကြောင်း တင်ပြခဲ့ပါသည်။ တဖန် XPath ၏ ဖော်ပြချက်များကို လိုအပ်သလို အသုံးပြုနိုင်စေရန် Operators များကိုလည်း ပြင်ဆင်ထားပါသည်။ အသုံးပြုနိုင်သော Operators များမှာ အောက်ပါအတိုင်းဖြစ်၏။

အမျိုးအစား ရှင်းလင်းချက်
| Node Set များကို၊ ပေါင်းဆက်ရာတွင် အသုံးပြုပါသည်။
// book | //cd ဟုရေးထားမည်ဆိုလျှင်၊ current node ၏အောက်တွင်ရှိသော
book node များနှင့်၊ cd node များကို node setတစ်ခုအဖြစ်ရရှိမည် ဖြစ်သည်။
+ အပေါင်းလက္ခဏာ ဖြစ်ပါသည်။
count (//book) + count (//cd) ဟုရေးသားထားမည်ဆိုလျှင် စာအုပ်အရေအတွက်နှင့်
CDအရေအတွက်ကို စုစုပေါင်းအရေအတွက်ကို ရရှိမည်ဖြစ်သည်။
- အနှုတ်လက္ခဏာ ဖြစ်ပါသည်။
* အမြှောက်လက္ခဏာဖြစ်ပါသည်။
div အစားလက္ခဏာဖြစ်ပါသည်။
mod အကြွင်းကို ရလိုသည့်အခါတွင် အသုံးပြုနိုင်ပါသည်။
= တူညီခြင်းကို ဖော်ပြလိုသောအခါ အသုံးပြုနိုင်ပါသည်။
//book/price=39.00 ဟုရေးသားထားလျှင် book၏တန်ဖိုးသည် 39.00 ရှိသော
စာအုပ်များဟု အဓိပ္ပါယ်ရပါသည်။
!= မတူညီခြင်းကို ဖော်ပြလိုသောအခါ အသုံးပြုနိူင်ပါသည်။
//book/price=39.00 ဟုရေးသားထားလျှင် book၏တန်ဖိုးသည် 39.00 မဟုတ်သော
စာအုပ်များဟု အဓိပ္ပါယ်ရပါသည်။
< ပို၍သေးငယ်ခြင်း ကိုဖော်ပြပါသည်။
<= ပို၍သေးငယ်ခြင်း သို့မဟုတ် တူညီခြင်း ကိုဖော်ပြပါသည်။
> ပို၍ကြီးမားခြင်း ကိုဖော်ပြပါသည်။
>= ပို၍ကြီးမားခြင်း သို့မဟုတ် တူညီခြင်း ကိုဖော်ပြပါသည်။
OR သို့မဟုတ်။
A OR B ဟု ရေးသားထားပါက A သို့မဟုတ် B ဟု အဓိပ္ပါယ်ရပါသည်။
AND နှင့်။
A AND B ဟု ရေးသားထားပါက A နှင့် B ဟု အဓိပ္ပါယ်ရ ပါသည်။



အခြားသော XPath ဝါကျများ


IF ဝါကျ


အခြားသော Programming ဘာသာရပ်များကဲ့သို့ပင် if ကို အသုံးပြုနိုင်ပါသည်။ ဖော်ပြပါအနေအထား အတိုင်းပြည့်ဆုံမည် ဆိုလျှင် ရေးသားထားသော လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သွားမည်ဖြစ်သည်။ သို့ရာတွင် သတိထားရမည်မှာ else ကဲ့သို့ အသုံးပြုချက်များမှာ XPath တွင်အသုံးပြု၍မရပေ။

world.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="world.xsl" type="text/xsl" ?>
<world>
<country population="1338.29">China</country>
<country population="1182.42">India</country>
<country population="309.59">USA</country>
<country population="127.53">Japan</country>
<country population="42.642">Myanmar</country>
</world>

world.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<h3>Countries population is over 500 Million</h3>
<table>
    <tr>
        <th style="text-align:left">Country</th>
        <th>Population</th>
    </tr>
<xsl:apply-templates select="world/country" />
</table>
</xsl:template>

<xsl:template match="country">
<xsl:if test="./@population > 500">
<tr>
    <td width="250px">
        <xsl:value-of select="." />
    </td>
    <td>
        <xsl:value-of select="./@population" />
    </td>
</tr>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

World.xsl၏ စာကြောင်း၁၇မှ ၂၆အထိသည် If ဝါကျကို အသုံးပြုထားသော နမှုနာဖြစ်သည်။ စာကြောင်း ၁၇တွင် <xsl:if test="./@population > 500"> ဟူ၍ If ဝါကျကိုရေးသားထား၏။ test attributeသည် If ဝါကျတွင် မရေးမဖြစ် ပါဝင်ရမည်ဖြစ်ပြီး အသုံးပြုမည့် ဖော်ပြချက်လည်းဖြစ်၏။ ". /@population > 500" သည် လက်ရှိ node၏ population attribute ရဲ့ တန်ဖိုးသည် 500 အထက်ဖြစ်လျှင်ဟု အဓိပ္ပါယ်ရပါသည်။ အကယ်၍ testအတွင်းကဖော်ပြချက်နှင့် ကိုက်ညီမည်ဆိုလျှင် IF ဝါကျ အတွင်းမှ ရေးသားထားသော သတ်မှတ်ချက်များအတိုင်း ပြောင်းလည်းပေးသွားမည်ဖြစ်သည်။ အထက်ပါ world.xml ကို web browserနှင့် ဖွင့်ကြည့်မည် ဆိုလျှင် အောက်ပါအတိုင်း တွေ့မြင်ရမည် ဖြစ်သည်။




Choose ဝါကျ


နှိုင်းယှဉ်ရန် အချက်အလက်သည် တစ်ခုထက်ပိုရှိပြီး၊ အချက်အလက်များကို ကိုယ်စီ လုပ်ဆောင်ချက် များကို ခွဲခြားပြီး ရေးသားလိုလျှင် အသုံးပြုနိုင်ပေသည်။ Choose node ၏ Child nodeဖြစ်သော When Node များတွင် အချက်အလက်များကို သီးခြားရေးသားနိုင်ပေသည်။ အခြားသော Programming ဘာသာရပ်များ၏ switch ဝါကျများနှင့် အသုံးပြုပုံ တူညီပေသည်။

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<h3>Choose Sample</h3>
<table width="60%">
<tr>
<th style="text-align:left">Country</th>
<th style="text-align:right">Population</th>
<th style="text-align:left;padding-left:60px">Type</th>
</tr>
<xsl:apply-templates select="world/country" />
</table>
</xsl:template>

<xsl:template match="country">
<tr>
<td>
    <xsl:value-of select="." />
</td>
<td style="text-align:right">
    <xsl:value-of select="@population" />
</td>
<td style="text-align:left;padding-left:60px">
    <xsl:choose>
    <xsl:when test="@population > 500">
        Over 500 Million
    </xsl:when>
    <xsl:when test="@population > 300">
        Over 300 Million
    </xsl:when>
    <xsl:otherwise>
        Under 300 Million
    </xsl:otherwise>
    </xsl:choose>
</td>
</tr>
</xsl:template>

</xsl:stylesheet>

If နမှုနာတွင် ရေးသားထားသော world.xsl အား အထက်ပါအတိုင်း ပြောင်းလည်း ရေးသားကြည့်ပါမည်။ စာကြောင်း၂၆မှ ၃၆ အထိသည် choose ဝါကျကို အသုံးပြုထားပါသည်။ When node အတွင်းမှ test သတ်မှတ် ချက်များနှင့် ပြည့်စုံလျှင် When အတွင်းတွင် ရေးသားထားသော လုပ်ဆောင်ချက် များအတိုင်း လုပ်ဆောင်သွားမည် ဖြစ်သည်။ တဖန် Whenလုပ်ဆောင်ချက်များနှင့် မပြည့်စုံပါက Otherwise nodeအတွင်းမှ လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပေးမည် ဖြစ်၏။




For Each ဝါကျ


Node List များမှ Node များကိုတစ်ခုပြီးတစ်ခု သတ်မှတ်ထားသည့် လုပ်ဆောင်ချက်များကို လုပ်ဆောင်စေလိုလျှင် for-each ကို အသုံးပြုရမည် ဖြစ်သည်။ အခြားသော Programmingဘာသာရပ်များမှ while သို့မဟုတ် for ဝါကျနှင့် ဆင်တူပါသည်။
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<h3>For Each sample</h3>
<table width="50%">
<tr>
    <th style="text-align:left">Country</th>
    <th style="text-align:left">Population</th>
</tr>

<xsl:for-each select="world/country">
<tr>
    <td>
        <xsl:value-of select="." />
    </td>
    <td>
        <xsl:value-of select="@population" />
    </td>
</tr>
</xsl:for-each>

</table>
</xsl:template>

</xsl:stylesheet>
wrold.xsl file ကို အထက်ပါအတိုင်း ပြောင်းလည်း ရေးသားပြီး Web Browserဖြင့် ဖွင့်ကြည့်မည် ဆိုလျှင် အောက်ပါအတိုင်း တွေ့မြင်ရမည် ဖြစ်သည်။




Sort လုပ်ခြင်း


ဖော်ပြပုံ အချက်အလက်များကို အစီအစဉ်တကျ ပြောင်းလည်း စီစဉ်လိုပါက Sort ဝါကျကို အသုံးပြုရမည် ဖြစ်သည်။ Sort Elementသည် <xsl:apply-templates> သို့မဟုတ် <xsl:for-each> Element များနှင့် တွဲဖက်၍ အသုံးပြုလေ့ရှိပါသည်။ Sort element တွင် သတ်မှတ်နိုင်သော Attribute များမှာ အောက်ပါ အတိုင်း ဖြစ်၏။

အမည် ရှင်းလင်းချက်
select အစီအစဉ်ပြောင်းလည်းရာတွင် အသုံးပြုမည့် Node Setကို ရေးသားရမည်။
lang အစီအစဉ်ပြောင်းလည်းရာတွင် အသုံးပြုမည့် ဘာသာရပ် ကို ရေးသားရမည်။
data-type အစီအစဉ်ပြောင်းလည်းရာတွင် အသုံးပြုမည့် အချက်အလက်ပုံစံကို ရေးသားရမည်။
  • text : စာလုံးပုံစံ အချက်အလက်
  • number : ကိန်းဂဏာန်းပုံစံ အချက်အလက်
order အစီအစဉ်ပြောင်းလည်းရာတွင် အသုံးပြုမည့် စာစီစဉ်ကို ရေးသားရမည်။
  • ascending : တက်စဉ်
  • descending : ကျစဉ်
case-order အချက်အလက်ပုံစံသည် text ကို အသုံးပြုမှသာလျှင် အသုံးပြုနိုင်မည် ဖြစ်သည်။
  • upper-first : စာလုံးအကြီးကို ဦးစွာဖော်ပြပါမည်။
  • lower-first : စာလုံးအငယ်ကို ဦးစွာဖော်ပြပါမည်။
ကျွှန်တော်တို့ For Each နမှုနာတွင် ရေးသားထားသော xsl ကို အနည်းငယ် ပြုပြင် ရေးသားကြည့်ပါဦးမည်။
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<h3>For Each sample</h3>
<table width="50%">
<tr>
    <th style="text-align:left">Country</th>
    <th style="text-align:left">Population</th>
</tr>

<xsl:for-each select="world/country">
<xsl:sort select="." data-type="text" order="ascending"/>
<tr>
    <td>
        <xsl:value-of select="." />
    </td>
    <td>
        <xsl:value-of select="@population" />
    </td>
</tr>
</xsl:for-each>

</table>
</xsl:template>

</xsl:stylesheet>

စာကြောင်း နံပါတ် ၁၄ကို ဖြည့်စွက်ရေးသားပြီး Sort လုပ်စေပါသည်။ ရေးသားထားသော world.xml ကို Double Click လုပ်၍ IE ဘရောင်ဇာ၏ ရလဒ်ကို ကြည့်ပါက အောက်ပါအတိုင်း အစီအစဉ်ကို ပြန်ပြောင်းပေးနိုင်သည်ကို တွေ့ရပါလိမ့်မည်။



Attribute များအား ပြောင်းလည်းသတ်မှတ်ခြင်း

xslတွင် ပြောင်းလည်းရန် Element များကပိုင်ဆိုင်သော Attributes များ၏ တန်ဖိုးများကို သတ်မှတ် ပေးနိုင်ပါသည်။ ထိုအခါတွင် အသုံးပြုသော ဝါကျမှာ attributeဖြစ်၏။
attr.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="attr.xsl" type="text/xsl" ?>
<pages>
 <page url="http://caloricp.jp/apc/sscp/K1006CAL/top.html">Caloricp</page>
 <page url="http://www.ajinomoto.co.jp/aji/egg/generator2/">Ajinomoto</page>
 <page url="http://manifani.com/">Manifani</page>
 <page url="http://www.brucke.co.jp/kolok/">Brucke</page>
 <page url="http://aikohno.com/">Aikohno</page>
 <page url="http://www.premacy.mazda.co.jp/pre/">Masada Premacy</page>
</pages>

attr.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h3>Web Pages That I Like</h3>
<ol>
<xsl:for-each select="pages/page">
<li>
    <a>
        <xsl:attribute name="href">
        <xsl:value-of select="@url" />
        </xsl:attribute>
        <xsl:value-of select="." />
    </a>
</li>
</xsl:for-each>
</ol>
</xsl:template>
</xsl:stylesheet>

အထက်ပါ attr.xsl၏ စာကြောင်းနံပါတ်၁၀မှ ၁၂အထိသည် Attribute ကိုသတ်မှတ်ပေးသော ဝါကျဖြစ်၏။ စာကြောင်း၉တွင်ရေးသားထားသော Element <A> ၏ hrefဟု အမည်ရသော Attrubute ၏ တန်ဖိုးကို သတ်မှတ်ပေးနေပါသည်။ တန်ဖိုးမှာ စာကြောင်းနံပါတ် ၁၁ တွင် ရေးသား ထားသည့်အတိုင်း လက်ရှိ Node၏ url Attribute၏ တန်ဖိုးဖြစ်၏။

ထိုသို့ရေးသားထားခြင်းအားဖြင့် <A> element ၏ href attribute တန်ဖိုးတွင် page node ၏ url attribute ၏ တန်ဖိုးကို အစားထိုးဖော်ပြပေးနိုင်ပါသည်။

attr.xml file ကို web browserဖြင့် ဖွင့်ကြည့်သောအခါ အောက်ပါအတိုင်း တွေ့မြင်ရ မည်ဖြစ်၏။



ပြန်လည် သုံးသပ်ချက်


ဤ XMLဆီသို့ခြေလှမ်းများရဲ့ တတိယခြေလှမ်းဖြစ်တဲ့ အခြေခံXSL တွင် XSLTကိုအသုံးပြုပြီး XML စာပိုဒ်များ ၏ တည်ဆောက်ပုံကို အခြားသောတည်ဆောက်ပုံအဖြစ် ပြောင်းလည်းနိုင်ပုံကို ဖော်ပြခဲ့ပါသည်။ 

ဤအခန်းတွင် HTMLသို့ပြောင်းလည်းပုံကို အဓိကထားဖော်ပြခဲ့ပေမယ့်၊ XML စာပိုဒ်အတူတူခြင်း ဖြစ်လင့်ကစား Style Sheetကို ပြောင်းလည်းခြင်းအားဖြင့် ပုံစံတစ်မျိုးဆီသို့ ပြောင်းလည်းပေးနိုင်ကြောင်း နားလည်နိုင်ပေလိမ့်မည်။ ယခုအခန်းတွင်XSLT Processorအဖြစ် Internet Exploreကို အသုံးပြုခဲ့ပါသဖြင့် ပြောင်းလည်းပြီးနောက် အချက်အလက်များ ကိုပြန်လည် အသုံးပြုခြင်းမရှိခဲ့ပေးမယ့်၊ Jax သို့မဟုတ် Xalan ကဲ့သို့ XSLT Processor များကို အသုံးပြုပါက ပြောင်းလည်းပြီးသော အချက်အလက်များ File အဖြစ် ထုတ်ပြန်ပေးနိုင်ပါလိမ့်မည်။ တဖန် Style Sheet၏ ရေးသား  ပုံပေါ်မှုတည်ပြီး CSV ပုံသဏ္ဍာန် အဖြစ်ရေးသားနိုင်ပါသဖြင့် XMLအချက်အလက်များကို Microsoft Excel များမှ တဆင့် အသုံးပြုနိုင်မည်ဖြစ်သည်။

နောက်အခန်းများတွင် DOM, SAX APIကိုအသုံးပြု၍ XMLအချက်အလက်များကို Java Program မှတဆင့် အသုံးပြုပုံများကို ဆက်လက်ဖော်ပြသွားမည် ဖြစ်သည်။

December 21, 2011

ဒုတိယ ခြေလှမ်း DTD

XMLဟာ Tagတွေကိုလွတ်လပ်စွာ သတ်မှတ်ပြီးအသုံးပြုနိူင်သည့်အတွက် အချက်အလက်အမျိုးမျိုးကို ဖော်ပြပေးနိူင်၏။ သို့ရာတွင် ထိုကဲ့သို့ လွတ်လပ်စွာရေးသားနိူင်ခြင်း ကြောင့်လည်း အဆင်မပြေမှု့များကို တွေ့ရှိနိူင်ပါသည်။ 

နမှုနာအနေဖြင့် ကုမ္ပဏီနှစ်ခု စပ်တူပူးပေါင်းသည့် အနေအထားတစ်ခုကို စဉ်းစားကြည့်ကြပါစို့။ ကုမ္ပဏီအသီးသီးက အချက်အလက်များကို XML ကိုအသုံးပြု၍ ရေးသားအသုံးပြုနေပြီး၊ နှစ်သက်သလို Tagတွေကို အသုံးပြုနေခဲ့မည်ဆိုလျှင် အဲ့ဒီXML များအား ဘာသာပြန်ဖို့အတွက်လည်း Programတွေ အသီးသီး လိုအပ်လာပါလိမ့်မည်။

သည်လိုဆိုရင်ဖြင့် အဆင်မပြေနိူင်ပါ။ XML စာသားတွေကို အချက်အလက်အနေနဲ့ အသုံးပြုနိူင်ရန် အချက်အလက်တွေကို အသုံးချသူအချင်းချင်း ဘယ်လိုTagတွေကိုသုံးပြီး သည်XML စာသားထဲမှာ အချက်အလက်တွေကို ဖော်ပြမယ် ဆိုတဲ့အချက်ကို ကြိုတင်သတ်မှတ်ထားဖို့လိုအပ်ပါ လိမ့်မည်။ 

ထိုကဲ့သို့ XML စာသား၏ Tagများအား သတ်မှတ်ချက်ရေးသားရာတွင် Schema Language ကို အသုံးပြုနိုင်ပြီး၊ DTDသည် နှစ်ပေါင်းများစွာကတည်းက အသုံးပြုလာခဲ့သော Schema ဘာသာရပ် တစ်ခု ဖြစ်ပါသည်။

Schema ဘာသာရပ်ကိုသုံး၍ အချက်အလက်များအား သက်မှတ်ထားတဲ့အတိုင်း ရေးသားထားသော XML စာသားများအား ပြီးပြည့်စုံသော XML ဟု ခေါ်ဝေါ်လေ့ ရှိကြ၏။ Schemaဘာသာရပ်ကို အသုံးပြုခြင်းအားဖြင့် အချက်အလက်များ၏ စနစ်တကျ ရေးသားနိုင်သကဲ့သို့၊ XML စာသားတစ်ခုလုံး၏  တည်ဆောက်ပုံကိုလည်း စနစ်ချနိူင်ပေသည်။ ထို့ကြောင့် XML အား Application အမျိုးမျိုးတွင် တူညီစွာ အသုံးပြုနိုင်ခြင်း ဖြစ်၏။

ဤဘလောဂ်တွင် XML ဆီသို့ ဒုတိယ ခြေလှမ်းအနေဖြင့် DTD ကိုအသုံးပြုပြီး ပြည့်စုံသော XML ရေးသားပုံကို ဖော်ပြသွားပါမည်။ DTD သည် ယနေ့လက်ရှိ အသုံးများသော စကီးမား (Schema) ဘာသာရပ် တစ်မျိုးဖြစ်ပြီး၊ လေ့လာမှတ်သားရ လွယ်ကူပါသဖြင့် အခြားသော စကီးမား (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ကို အသုံးပြုခြင်းအားဖြင့် <fruit-list> သည် <fruit>ကိုပိုင်ဆိုင်ပြီး၊ <fruit>သည်လည်း <name>နှင့်၊ <price>ကို ပိုင်ဆိုင်ရန်လိုအပ်ကြောင်း သတ်မှတ် နိုင်သည်။ ထို့အတွက် သစ်သီးကို ရေးမည် ဆိုလျှင် အမည်နှင့် ကုန်စျေးနှုန်းကို မဖြစ်မနေ ရေးသားရမည် ဖြစ်သည်။

DTD ဆိုသည်မှာ အသုံးပြုသူ အချင်းချင်း အသုံးပြုနေသည့် XML Tag များအား မည်သို့ရေးသားမည်ဟု သတ်မှတ်ရာတွင် အသုံးပြုနေသော ဘာသာရပ် တစ်ခုဖြစ်သည် ဟုဆိုလျှင် မမှားနိုင်ပေ။


DTD အား မည်သို့ရေးသားရမည်နည်း

XML စာပိုဒ်တစ်ခုတွင် DTDအား XML Declaration နှင့်၊ XML Instance တို့၏ ကြားတွင် ရေးသားရမည် ဖြစ်သည်။

ရေးသားပုံမှာ <!DOCTYPE Element၏အမည် [ ဖြင့်အစပြုပြီး၊ ]> ဖြင့် အဆုံးသတ်ရပါမည်။ ထိုအစိတ်အပိုင်းကို Document Type Declaration လို့လည်းခေါ်ဝေါ်ပါသည်။ 

XML စာပိုဒ်ထဲတွင် အသုံးပြုမည့် Elements တွေ၊ Attributesတွေပါရှိပြီး၊ မည်သို့ ရေးသားရမည် ဆိုသည်ကို သတ်မှတ်ခြင်း အားဖြင့် XML Instance ၏ ဖွဲ့စည်းပုံကို သတ်မှတ်ပေး နိုင်ပါသည်။
<!DOCTYPE သတ်မှတ်မည့်Element အမည် [
    (သည်နေရာမှာ သတ်မှတ်ချက်များကို ရေးသားရပါမည်)
]>
DTD တွင်၊ Element များ၏ သတ်မှတ်ချက်၊  Attributes  များ၏  သတ်မှတ်ချက်များ အပြင် ပိုင်ဆိုင်သော တန်ဖိုးများ၏ သတ်မှတ်ချက်များကို ရေးသားနိုင်ပါသည်။

အောက်ပါနမှုနာသည် ပြည့်စုံသော XML ၏ နမှုနာ တစ်ခုဖြစ်ပြီး စာကြောင်း ၃ကြောင်းမြောက်မှ၊ ၈ကြောင်းမြောက်အထိသည် Document Type Declaration ဖြစ်ပါသည်။
<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE fruit-list [
 <!ELEMENT fruit-list (fruit)>
 <!ELEMENT fruit (name, price)>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT price (#PCDATA)>
]>

<fruit-list>
 <fruit>
  <name>Apple</name>
  <price>100</price>
 </fruit>
</fruit-list>

ရေးသားထားသော XMLများအား မှန်ကန်ခြင်း ရှိမရှိကို http://www.xmlvalidation.com/ တွင် စစ်ဆေးနိူင်ပါသည်။ ထို့အပြင် Eclipse ကဲ့သို့ IDE တွင် ပါရှိသော XML Editor များကိုအသုံးပြုပါက XML ရေးသားပုံများ မှားယွင်းနေပါက မှားယွင်းကြောင်း သတိပေးချက်များကို ဖော်ပြနိုင်ပါသဖြင့် ချက်ချင်း ပြုပြင်နိုင်မည် ဖြစ်ပါသည်။

Element သတ်မှတ်ချက်

Element သက်မှတ်ချက်များတွင် XML Instance တွင် အသုံးပြုမည့် Element များ၏ သတ်မှတ်ချက်များကို ရေးသားရန် လိုအပ်ပါသည်။ အထက်ပါ နမှုနာထဲတွင် Element သတ်မှတ်ချက်များ ၄ မျိုးကို အသုံးပြုခဲ့ပါသည်။
<!ELEMENT သတ်မှတ်မည့်Element (Child Element)>
သတ်မှတ်မည့် Elementတွင် Child Elementတစ်ခုတည်းကိုသာ အသုံးပြုမည့်အခါတွင် ဤကဲ့သို့ သတ်မှတ်ရမည် ဖြစ်မည်။ နမှုနာထဲက စာကြောင်းနံပါတ်၄ကို ကြည့်ပါ။ fruit-list Element တွင် fruit Child Elementကိုသာ အသုံးပြုပါမည်ဟု သတ်မှတ်ချက်ကို ရေးထားပါသည်။ သတ်မှတ် ထားသည့် Child Element အပြင်ကို အသုံးပြုမည်ဆိုပါက Valid XML မဖြစ်တော့ပါသဖြင့် XMLEditor တွင် Error အဖြစ် ဖော်ပြမည် ဖြစ်သည်။
<!ELEMENT သတ်မှတ်မည့်Element (Element1, Element2, ... )>
သတ်မှတ်မည့်Elementတွင် Child Element တစ်ခုထက်မက ရေးသားအသုံးပြုမည့် အခါမျိုးတွင် ဤကဲ့သို့ ကော်မာကိုခံ၍ အသုံးပြုမည့် Child Elements တွေကို သတ်မှတ် ရပါမည်။ အထက်ပါအတိုင်း ရေးသားထားပါက သတ်မှတ်မည့်Element တွင် ကွင်းစကွင်းပိတ် အတွင်းတွင်ရှိသော Element များကိုသာ Child Element အနေဖြင့် အစီအစဉ်အလိုက် အသုံးပြုမည်ဟု သတ်မှတ်ထားပါသည်။ ထို့အတွက် fruitကိုရေးသားမည်ဆိုလျှင် nameကို ရေးပြီးလျှင် priceကို အစီအစဉ်အတိုင်း ရေးသားရမည် ဖြစ်သည်။
<!ELEMENT သတ်မှတ်မည့်Element (Element1 | Element2 | ... )>
သတ်မှတ်မည့်Elementတွင် Child Elementတစ်ခုထက်မက ရေးသားအသုံးပြုပြီး Child Elements များထဲမှ တစ်ခုမဟုတ်တစ်ခုကို အသုံးပြုမည့်အခါတွင် ဤကဲ့သို့ | ကိုခံပြီး အသုံးပြုမည့် Child Elements တွေကို သတ်မှတ်ရမည် ဖြစ်မည်။
<!ELEMENT သတ်မှတ်မည့်Element (#PCDATA)>
သတ်မှတ်မည့်Elementတွင် Text အချက်အလက်ကိုသာ အသုံးပြုမည့် အခါတွင် ဤကဲ့သို့ သတ်မှတ်ရေးသားရမည် ဖြစ်သည်။ ဤသို့ရေးသားထားမည်ဆိုလျှင် ထိုElement အတွင်းမှာ အခြားသော Tag ကိုရေးသားလို့ မရနိုင်ပေ။ နမှုနာအတွင်းမှ စာကြောင်းနံပါတ်၆နှင့် ရသည် ဤကဲ့သို့ ရေးသားထားခြင်း ဖြစ်သည်။

ရေးသားပုံ အသေးစိတ်ကို အောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။

ရေးသားပုံ ရှင်းလင်းချက်
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ဖြစ်ပါသည်။


Attribute သတ်မှတ်ချက်

Element များတွင် အသုံးပြုမည့် Attributes များအားလည်း DTD ကို အသုံးပြု၍ ကြိုတင် သတ်မှတ် ရေးသားနိုင်ပါသည်။
<?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)>
]>

<fruit-list>
 <fruit place="USA">
  <name>Apple</name>
  <price>100</price>
 </fruit>
</fruit-list>

အထက်ပါ နမှုနာ၏ fruit Tag တွင် place ဟု အမည်ရသော Attribute ကို ဖြည့်စွက်ထားပါသည်။ ရေးသားပုံ စနစ်မှာ အောက်ပါအတိုင်း ဖြစ်၏။ Element Name နေရာတွင် သတ်မှတ်မည့် Attribute ကိုပိုင်ဆိုင်သော Element ၏ အမည်ကို ရေးသားပြီး၊ Attribute Name တွင် သက်မှတ်မည့် Attribute ၏ အမည်ကို ရေးသားရမည် ဖြစ်သည်။ တဖန်အသုံးပြုလိုသည့် Attribute၏ ပုံစံနှင့်၊ Default တန်ဖိုးကိုလည်း ကြိုတင် သတ်မှတ်  ရေးသားနိုင်မည် ဖြစ်သည်။


Attribute Type

Attribute Type အနေနှင့် ရေးသားနိုင်သောအချက်အလက်များ ကိုအောက်ပါဇယားတွင် ဖော်ပြထား ပါသည်။
ရေးသားပုံရှင်းလင်းချက်
CDATACharacter Data များကို အသုံးပြုနိူင် ပါသည်။
(A | B | …)A, B အစရှိသဖြင့် အချက်အလက်များ ထဲမှ တစ်ခုခု။
IDXML Instance ထဲတွင် တစ်ခုထဲသာတန်ဖိုး အနေနှင့် အသုံးပြုနိူင်မည် ဖြစ်၏။
IDREFအခြားသော Element ၏ ID တန်ဖိုးတစ်ခုကို ကိုးကား၍ အသုံးပြုနိူင်မည်ဖြစ်၏။
IDREFSအခြားသော Elements များ၏ ID တန်ဖိုးများကို ကိုးကား၍ အသုံးပြုနိူင်မည်ဖြစ်၏။
NMTOKENအင်္ဂလိပ် စာလုံးများ၊ သင်္ချာကိန်း စာလုံးများ၊ - _ : ; စာလုံးများဖြင့်သာ ဖွဲ့စည်း ထားသော စကားလုံးကိုသာ အသုံးပြုနိုင်မည် ဖြစ်၏။
NMTOKENSNMTOKEN စာလုံးများကို အသုံးပြုနိုင်မည် ဖြစ်၏။


Default တန်ဖိုးများ

Default Value သတ်မတ်ချက်သည် Attribute ၏ နဂိုတန်ဖိုးကို ရေးသားရန်လိုအပ်ခြင်း မလိုအပ်ခြင်းကို သတ်မှတ်နိုင်ပါသည်။
ရေးသားပုံရှင်းလင်းချက်
#FIXED "value"Attribute ၏ တန်ဖိုးကို တသမတ်တည်း အသုံးပြုရာတွင် ရေးသားနိူင် ပါသည်။
#IMPLIEDAttribute ၏ တန်ဖိုးကို မလိုအပ်ပါက မရေးသားပဲ နေနိုင်ပါသည်။
#REQUIREDAttribute ၏ တန်ဖိုးကို မဖြစ်မနေ ရေးသားရန် လိုအပ်ပါသည်။
"Default value"XML Instance ထဲတွင် Attribute ၏ တန်ဖိုးကို ရေးသားထားခြင်း မရှိပါက Default value တွင် ရေးသားထားသော တန်ဖိုးကို အသုံးပြုသွားမည် ဖြစ်၏။


စာပိုဒ်အတွင်းရှိ 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 များတွင်အသုံးပြုကြ၏။

ပုံမှန်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>
&ap;ဟုရေးသားထားသည်ကို IEဖြင့်ဖွင့်ကြည့်သောအခါ အောက်ပါအတိုင်း Appleဟုမြင်ရမည် ဖြစ်သည်။



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 ဖြစ်ပြီး နောက်အခန်းများတွင် ဖော်ပြသွားပါဦးမည်။


လေးစားစွာဖြင့်
မင်းလွင်

December 16, 2011

XMLဆီ​သို့​ပဋ္ဌ​မ​ခြေလှမ်း

XMLဆို​သည်မှာ TAG များကို​အသုံးပြု​၍၊ စာ​ပိုဒ်​တစ်​ခု​ရဲ့​ဖွဲ့​စည်း​ပုံ​ကို စနစ်​ချ​ရာ​တွင် ​အသုံးပြု​သော နည်းစနစ် ​တစ်​ခု​ဖြစ်​၏။ XMLသည် မ​ရေရာ​သော ရေး​သား​ပုံ​ စနစ်​ကို​လက်မခံပဲ၊ တင်း​ကျပ်​သော​ စည်းမျဉ်း​တွေ​နဲ့ စာရေး​သား​ပုံ​စနစ်​ကို သတ်​မှတ်ထား​သည့်​အတွက် ပရိုဂရမ်များ​မှ တဆင့် အသုံးပြု​ရ​ လွယ်ကူ​စေပါသည်။ ထို​ကြောင့်​ ရုံး​သုံး​ စာ​များ​တွင်၎င်း၊ လုပ်ငန်းသုံး အချက်အလက်​များ​(Business Data)ကို ရေးသား​ရာ​တွင်၎င်း၊ အပလီကေးရှင်း သတ်မှတ်ချက်များကို ရေးသားရာတွင်၎င်း XML ကို ​အသုံးပြု​ နေ​ကြ​သည်ကို နေရာတကာတွင် တွေ့နိုင်ခြင်း ဖြစ်၏။

ဤကဲ့သို့ စနစ်တကျရှိခြင်းကြောင့်  XML အား ​စနစ်​တ​ခု​မှ၊ အခြား​တစ်​ခု​ကို ဆက်​သွယ်​ရာ​မှာ ​အသုံးပြု​သော Protocol အဖြစ်​လည်း အသုံးပြု​ကြ​ပါ ​သေးသည်။ XML ကို​အခြေ​ခံ​သော Protocol များ​တွင် လူ​သိ​များ​ကြသည်​မှာ SOAPဖြစ်​ပြီး၊ SOAP ကို အသုံးပြု​သော​နည်း​ပညာ​မှာ Web Services ဖြစ်​၏။ အထက်ဖော်​ပြ​ပါ​အတိုင်း XMLအား ရုံး​သုံး​စာရေး​စနစ်​များ​မှ​အစ Web Serviceအထိ​တိုင်အောင် နေရာ​များ​စွာ​တွင် ​အသုံးပြု​နေ​ကြ​သည်​ကို သိရှိ​နိုင်​ပါ​သည်။

ယခု​ရေးသား​မည့် XMLဆီ​သို့​ပဋ္ဌ​မ​ခြေလှမ်း​တွင် XML ၏​အကြောင်းများ​ကို အခြေ​ခံ​သဘောထား​မှစ၍၊ DTD,XML Schema, XSLT, DOM, SAX အစ​ရှိ​သ​ဖြင့် XML ၏ ဝေါဟာရ​တွေ​ ရှင်းလင်း​ချက်​များ​ အပါအဝင်၊ XML စာ​ပိုဒ်​များ​ကို​လက်တွေ့​ရေးသား​ပြီး ရေးသားပုံ စည်း​စနစ်​များ​ကို ဖော်​ပြ​သွားပါမည်။

XML ဆိုသည်မှာ

XMLဆို​သည်မှာ Extensible Markup Language ဆို​သော​စကားလုံး​၏ အတိုကောက်​အခေါ်​အဝေါ်​ဖြစ်​ပြီး၊ Markup ဘာသာ​စကား​ တစ်​ခု​ဖြစ်​၏။ Markup ဘာသာ​စကား​ ဆို​သည်မှာ  [<>] ဖြင့်​ဝန်း​ရန်​ထား​သော Tag တွေ​ကို​ အသုံးပြု​ပြီး အချက်အလက်​တွေ​ကိုဖေါ်​ပြ​ရာ​မှာ အသုံးပြု​ကြ​ပေ​သည်။ Web Page တွေ​ကို​ရေးသား​ရာ​မှာ အသုံးပြု​တဲ့ HTML သည်​လည်း Markup ဘာသာ​တစ်​ခု​ဖြစ်​၏။

HTML သည် Web Browser ပေါ်​မှာစာ​လုံး​တွေ​ကို​ထင်ရှား​အောင်​လုပ်​နိုင်​စေ​ရန် စာ​ပိုဒ်​တွေ​ကို​ခွဲ​ခြား​ဖို့​အတွက် Tag တွေ​ကို​ ကြိုတင် သက်​မှတ် ထား​ပါ​သည်။ သို့​ပေ​မယ့် XML ကတော့​ရေးသား​သူ​က အသုံးပြု​ရန်​အတွက် Tagတွေ​ကို ​လွတ်လပ်​စွာ သက်​မှတ် အသုံးပြု ​နိုင်​ပါ​သည်။ ထို​အချက်​သည် XML ဟာ Web Pageအပြင်၊ Data ပုံစံ​အဖြစ် ​အသုံး​များ​ရ​ခြင်း​၏ အကြောင်း​တစ်​ခု ဖြစ်​လာ​စေ​ပါ​သည်။

အောက်​ပါ​အတိုင်းXMLတွင် ထူးခြား​ချက်​လေး​ချက် ရှိ​ပါ​သည်။

ကွန်​ပျု​တာပေါ်​မှာ​အသုံးပြု​ရ​လွယ်ကူ​ခြင်း

XMLဟာ​ ရှင်းလင်း​ပြီး​တိ​ကျ​တဲ့ စာရေး​သား​ပုံ​ နည်း​စနစ်​ ဖြစ်​သည့်​အတွက်၊  ကွန်ပျူတာ Programတွေ​က​နေ အသုံးပြု​ရ​လွယ်ကူ​စေ​တယ် ဆို​တဲ့​ထူးခြား​ချက်​ကို ပိုင်ဆိုင်​၏။ ထို့​ကြောင့် ကုန်​ပစ္စည်း အချက်အလက်​တွေ​က​နေ၊  မှတ်တမ်း​စာ​ရွက်​စာ​တမ်း​တွေ​ကို​ရေးသား​ခြင်း၊ အင်​တာ​နက်​ကို​အသုံးပြု​ပြီး ကုန်​ပစ္စည်း အချက်အလက်​တွေ​ကို ​လည်း​လှယ်​တဲ့ Enterprise System တွေ​မှာ XMLကို​အသုံးပြု​နိုင်​ခြင်း ​တို့​ဖြစ်​၏။

Text ပုံစံ​ဖြင့်​ရေးသား​ထား​ခြင်း

XMLကိုText Fileအဖြစ်​န့​အဲ သုံး​ပြု​တဲ့​အတွက်၊ Platformတော်တော်​များ⁠များ​မှာ အသုံးပြုနိုင်​ပါ​သည်။ Text Fileကိုတော်တော်​များ​များ Platformတွေ​ကSupportလုပ်​တဲ့​အတွက်၊ Text Editorကို​အသုံးပြု​လျှင် XML မှာ​ဘာ​တွေ ရေးသား​ထား​တယ်​ဆို​တာ​ကို လူ​တွေ​က​အလွယ်​တ​ကူ သိရှိ​နိုင်ပါ​သည်။ တ​ဖန်​စာလုံးCodeတွေ ဘာသာ​စကား​တွေ၊ မ​တူညီ​တဲ့Platformတွေ အတွက်​ကတော့၊Unicodeကို အသုံးပြု​ခြင်း၊ စာလုံးCodeတွေ၊ ဘာသာ​စကားCodeတွေ​ကို XML မှာ​တိုက်ရိုက်​ရေးသား​ခြင်း​အား​ဖြင့် လွယ်ကူ​စွာ ဖြေ​ရှင်း​နိုင်​ပေ​သည်။

Tagတွေ​ကို​အသုံးပြု​ပြီး​ရေ​သား​ရ​ခြင်း

XML ဟာ​လည်း HTMLလို​ပဲ Markup Languageတစ်​ခု​ဖြစ်​တဲ့​အတွက် Tagတွေ​ကို​အသုံးပြု​ပြီး​ရေးသား​ရ​ပါ​မည်။ HTML မှာ​က<A>၊ <BR>အစ​ရှိ​သ​ဖြင့် Tagတွေ​ဟာ​အသုံးပြု​ပုံ သက်​မှတ်ချက်​ရှိ​ကြ​၏။ သို့​ပေ​မယ့် XML မှာ​ကတော့ Tagတွေ​ရဲ့​နာမည် ကို​လွတ်လပ်​စွာ​ပေး​နိုင်​၏။ အဲ့​ဒီ​အတွက် စာ​ပိုဒ်​တွေ​ရဲ့​ဖွဲ့​စည်း​ပုံ​ကို​နှစ်သက်​သ​လို သတ်​မှတ်​နိုင်​ပေ​သည်။ တ​ဖန်​နားလည်​လွယ်​တဲ့ Tagတွေ​ကို​အသုံးပြု​ခြင်း​အား​ဖြင့် လူ​တွေ​က​ဖတ်​တ့​အဲ ခါ​ရော၊စက်​က​အသုံးပြု​တဲ့​အခါ​မှာ​ပါ လွယ်ကူ​တဲ့ အချက်အလက်(data)ဖွဲ့​စည်း​ပုံ​ကို​ရေးသားနိုင်​ပေ​မည်။

Tree ဖွဲ့​စည်း​ပုံ​ကို​အသုံးပြု​ထား​ခြင်း

XML စာ​ပိုဒ်​တွေ​ဟာ Tree ဖွဲ့​စည်း​ပုံ​ကို​မှု​တည်​ပြီး ရေးသား​ထား​တာ​ဖြစ်​၏။  အပင်​ဖွဲ့​စည်း​ပုံ​ဟာ​ပင်မ​အမြစ်​က​နေ​အစပြု​ပြီး အကိုင်း​အခက်​တွေ​ကို ထပ်ခါထပ်ခါ​ခွဲ​ထုတ်​နေ​တဲ့ သစ်ပင်​တစ်​ပင်​လို Dataတွေ​ကို​ဖွဲ့​စည်း​ထား​ခြင်း ဖြစ်​၏။ XML စာ​ပိုဒ်​တစ်​ခု​မှာ​လည်း ပင်​ရင်းRoot Tagက​အစပြု​ပြီး၊ သစ်ကိုင်း​သစ်ခက်​များ​ကဲ့သို့ အဆင့်​ဆင့် Tagတွေ​ကို​ရေးသား​နိုင်​ပါ​သည်။



XML ၏​အခြေ​ခံ​ဖွဲ့​စည်း​ပုံ

XML စာ​ပိုဒ်​တွေ​ဟာ​အဓိက​အား​ဖြင့် အစိတ်​အပိုင်း​ ၃​ခု​က​နေ ဖွဲ့​စည်း​ တည်ဆောက်​ထား​ခြင်း ဖြစ်​ပါ​သည်။

  1. XML Declaration
  2. Document Type Definition (DTD)
  3. XML Instance

ထိုအစိတ်အပိုင်းတွေဟာ ရေးသား​ရ​မယ့်​အစီ​အစဉ်​တွေ သတ်သတ်​မှတ်⁠မှတ်​ရှိ​ပြီး၊ အပေါ်​က​နေ[XML Declaration] [DTD] [XML Instance]ဆို​ပြီး အစီ​အစဉ်​တ​ကျ​မ​ရေးသား​လို့​မ​ရ​ပေ။ အဲ့​ဒီ​အထဲ​မှာ​တော့ [DTD]ဆို​တဲ့ အစိတ်​အပိုင်း​ဟာ မ​လို​အပ်​လို့​ရှိ​ရင် မ​ရေးသား​ပဲ​လည်း​နေ​လို့​ရ​ပါ​သည်။ သည်​အခန်း​မှာ​တော့ [DTD] ကို မ​ရေး​ပဲ ​န​မှု​နာ​များ​ကို ရေးသား​ သွား​မှာ​ဖြစ်​ပါ​သည်။ အောက်​ပါ​ န​မှု​နာ goods.xml က​နေ​ပြီး XML ရဲ့​ဖွဲ့​စည်း​ပုံ​တွေ​ကို ရှင်းလင်း​သွား​ပါ​မည်။

<?xml version="1.0" encoding="UTF-8"?>
<goodsList>
    <goods id="001">
        <name>Apple</name>
        <price>100</price>
    </goods>
    <goods id="002">
        <name>Banana</name>
        <price>150</price>
    </goods>
</goodsList>

goods.xml ကို Web Browser နဲ့​ဖွင့်​ကြည့်​လိုက်​မည်​ဆို​လျှင် အောက်​ပါ​ပုံ​အတိုင်း တွေ့​မြင်​ရ​ပါ​လိမ့်​မည်။ အဲ့​ဒါ​ဟာ Internet Explore မှာ​ရှိ​တဲ့ XML Parser က​ဖတ်​ယူ​ပြီး၊ Tree ဖွဲ့​စည်း​ပုံ​ကို ဖော်​ပြ​ပေး​တဲ့​အတွက် ဖြစ်​ပါ​သည်။ သည်​န​မှု​နာ​က​နေ​ပြီး XML ရဲ့​အခြေ​ခံ​ဖွဲ့​စည်း​ပုံ​တွေ​ကို လေ့​လာ​ကြည့်​ရအောင်။


XML Declaration

XML Declaration ဟာ [<?xml]န့​စဲ ပြီး[?>] နဲ့​ ဆုံး​ရ​ပါ​သည်။ XML စာ​ပိုဒ်​ရဲ့​သတ်​မှတ်ချက်​ကို ရေးသား​မည်​ဆို​လျှင် ဦးစွာ​အသုံးပြု​မည့် Versionကို သက်​မှတ်​ ရေးသား​ရ​မည် ​ဖြစ်​သည်။ ၂​၀⁠၀​၄​ခု​နှစ်​၂​လ​ပိုင်း​က​စ​ပြီး version 1.1ကို ထုတ်​ပြန်​ခဲ့​ပြီး​ဖြစ်​သည်။ သို့​ပေ​မယ့် သည်​န​မှု​နာ​ထဲ​မှာ​တော့ version 1.0 ကို အသုံးပြု​သွား​ပါ​မည်။ ထို​မှ​တ​ဆင့် အသုံးပြု​မည့် Encoding System အကြောင်း​ကို​ သတ်​မှတ်​ ရေးသား​ရ​မည်​ ဖြစ်​သည်။ Version သတ်​မှတ်ချက်​၏ အနောက်​တွင် Encoding အကြောင်း​ကို ရေးသား​ ရ​ပါ​လိမ့်​မည်။ Encoding ကို မ​ရေးသား​ပဲ​နေ​မည်​ဆို​ပါ​က Unicodeကို သတ်​မှတ်​သွား​မည် ဖြစ်​သည်။ တ​ဖန်​ လို​အပ်​လာ​လျှင်​လည်း Standalone ဆို​တဲ့​အချက်​ကို​လည်း သက်​မှတ်​နိုင်​ပေ​သည်။ သတ်​မှတ်​ရေးသား​နိုင်​သော အသေး​စိတ်​အချက်အလက်​များ​ကို အောက်​ပါ​ဇယား​မှ​ လေ့​လာ​နိုင်​ပါ​သည်။

အမည်တန်ဖိုးရှင်းလင်း​ချက်
version 1.0, 1.1, 2.0 ... XML စာ​ပိုဒ်​မှာ​အသုံးပြု​မယ့်XML ရဲ့ versionအတိ​အကျ​ကိုဖော်​ပြ​ရ​မှာ​ဖြစ်​ပါ​တယ်။ ဒီversion attributeဟာ XML Declarationကို​ရေးသား​ရာ​မှာ မ​ရေးသား​လို့ မရပါဘူး။
encoding UTF-8, UTF-16, ISO-10646-UCS-2, ISO-10646-UCS-4, ISO-8859-1 to ISO-8859-9, ISO-2022-JP,Shift_JIS ... ဖေါ်ပြ​ပါ​ နာမည်​တွေ​ကတော့ ယနေ့​အသုံး​များ​တဲ့character setsတွေ​ဖြစ်​ပြီး၊ အပြည့်​အစုံ​ကို​တော့I ANA ရဲ့ စာ​မျက်နှာ​တွေ​မှာ​ လေ့​လာ​နိုင်​ပါ​တယ်။
standalone yes, no yesကို​ ရေး​မယ်​ဆို​လျှင်၊ XML စာ​ပိုဒ်​ဟာ၊ ကိုယ့်​စာ​ပိုဒ်​ထဲ​မှာ​ပါ​တဲ့ DTDကို​သာ​ အသုံးပြု​မှာ​ ဖြစ်​ပါ​တယ်။
no ဆို​ပါ​က၊ အပြင်​မှာ​ရှိ​တဲ့DTDတွေ Entityတွေ​ကို ​လင့်ခ်​လုပ်​ပြီး​ အသုံးပြု​နိုင်​မှာ ​ဖြစ်​တယ်။


XML Instance

goods.xml ဖိုင်ရဲ့ဒုတိယမြောက် စာ​ကြောင်း​က နေ​အဆုံး​အထိ​သည် XML Instance အပိုင်း​ဖြစ်​၏။ အဓိက​အား​ဖြင့် XML မှာ​အသုံးပြု​မည့် အချက်အလက်​များ ဖြစ်​ကြ​ပေ​သည်။ သည်​န​မှု​နာ​မှာ​တော့​အချက်အလက်​များ​ကို အောက်ဖော်​ပြ​ပါ ပုံစံ​အတိုင်း Tree ဖွဲ့​စည်း​ပုံ ပေါ်​မှာ​မူ​တည်​ပြီး ဖွဲ့​စည်း​ထား​ပါ​သည်။ 

XML မှာ​တော့ သည်လို Tree ဖွဲ့​စည်း​ပုံ​မျိုး​ကို၊ အသိုက်​အမြုံ​ဖွဲ့​စည်း​ပုံ​လို့​လည်း ခေါ်​ဆို​ကြ​ပါ​သည်။ အပေါ်​ဆုံး​မှာ​ရှိ​တဲ့Tagကို​တော့ Root Elementဟုခေါ်​ပြီး၊ တစ်​ခု​တည်း​သာ တည်​ရှိ​ရ​ပါ​မည်။ Root Element ရဲ့ အောက်​တွင်​ရှိ​သော Tag များ​အား Child Elementဟုခေါ်​သည်။ အောက်​န​မှု​နာ​ထဲ​မှာ​ဆို​လျှင် goodslist ထဲ​မှာ goods တွေ​က​ရှိ​ပြီး၊ အဲ့​ဒီgoodsတစ်​ခု​ဆီ​မှာ​လည်း name နဲ့ prize ပိုင်ဆိုင်​ပြန်​သည်။



Tag

[<>]ဖြင့်​ဝန်းရံ​ထား​တဲ့ <goodList> <name> အစ​ရှိ​တဲ့​အစိတ်​အပိုင်း​သည် Tagလို့ခေါ်​ဆို​သော​အစိတ်​အပိုင်း​များ​ဖြစ်​ကြ​သည်။ Tag မှာ​အဖွင့်​နဲ့ အပိတ်​ဆို​ပြီး​ရှိ​၏။ အပိတ်Tagတွင် Tag အမည်​စာလုံး​အရှေ့​မှာ[/]ကို​ရေးသား​ရ​မည်​ဖြစ်​သည်။ XML မှာTag ရဲ့​နာမည်​ကို နှစ်သက်​သ​လို​ပေး နိုင်​၏။ သို့​ပေ​မယ့် XML မှာ​အသုံးပြု​နေ​တဲ့ အဓိပ္ပါယ်​ဖွင့်​ဆို​ချက် စကားလုံး​များ​မှာ​တော့ အသုံးပြု​၍​မ​ရ​သော စကားလုံး​များ​ဖြစ်​ကြ​ပါ​သည်။ တ​ဖန်​ကိန်း​ဂဏန်း​နဲ့ အစပြု​သည့် အမည်​များ​ကို​လည်း အသုံးပြု​လို့​မ​ရ​နိုင်​ပေ။


Element

<goods id=”001”>
 <name>Apple</name>
 <prize>100</prize>
</goods>

Tagအဖွင့်ကနေစပြီး အပိတ်​အထိ​အစိတ်​အပိုင်း​အားလုံး​သည် Elementဖြစ်​ပါ​သည်။ Element တစ်​ခု​တွင်  တခြားElementတွေ၊ Text စာသား​တွေ၊  Propertiesတွေ​ကို သတ်​မှတ်​နိုင်​တဲ့ Attributesတွေ​ကို ပိုင်ဆိုင်​နိုင်​ပါ​သည်။ အထက်​ပါ​ဥပမာ​ထဲ​မှာ​ဆို​လျှင် goods Elementဟာ name Element နဲ့  price Element ရယ်၊ id ဆို​တဲ့ Attributeကို ပိုင်ဆိုင်​သည်။ တ​ဖန် name Element မှာ Appleဆို​တဲ့ Text Contentsကို ပိုင်ဆိုင်​သည်။


Comment

<!--မှတ်ချက်​တွေ​ကို​ရေးသား​နိုင်​ပါ​တယ်။ -->

XML မှာ​လည်းHTMLကဲ့သို့ မှတ်ချက်​တွေ​ကို စာသား​တွေ​ထဲ​မှာ ရေးသား​နိုင်​ပါ​သည်။ ရေး​ပုံ​ရေး​နည်း​က​လည်း HTMLကဲ့သို့​ပင်​ဖြစ်​၏။

XML စာပိုဒ်အမျိုးအစားများ

XML စာ​ပိုဒ်​တွေ​ကို​အဓိက​အား​ဖြင့် နှစ်​မျိုး​နှစ်​စား ခွဲ​ခြား​သတ်​မှတ်ထား​ပါ​သည်။



Well Formed XML

XML စာသား​အနေ​နဲ့ ပုံစံ​ကျနေ​တဲ့ စာသား​မျိုး​ကို ခေါ်ဝေါ်​လေ့​ရှိ​သည်။ တ​နည်း​အား​ဖြင့်​ဆိုသော် XMLလို့ သတ်​မှတ်​လို့​ရ​တဲ့ အချက်အလက်​တွေ​နဲ့ ပြည့်​စုံ​တဲ့​စာ​ပိုဒ် ​အမျိုး​အစား​တွေ​ကို သက်​မှတ်​လေ့​ရှိ​သည်။ အထက်​ပါ​ပုံ​တွင် ဖေါ်​ပြ​ထား​တဲ့​အတိုင်း XML Declarationနဲ့ XML Instance သာ​ပါ​မည်​ဆို​လျှင် Well-formed XML လို့​ သက်​မှတ်​နိုင်​ပါ​သည်။

Valid XML

XMLအနေ​နဲ့​ ပုံ​သဏ္ဍန်​ကျ​ရုံ​မက အသုံးပြု​မယ့်​အချက်အလက်​တွေ​ကို သက်​မှတ်ထား​တဲ့ XML စာ​ပိုဒ်​တွေ​ကို Valid XML လို့ခေါ်​၏။ တ​နည်း​အား​ဖြင့် XML Declaration, DTD, XML Instanceတွေ​ကို ရေးသား​ထား​ပြီး Instance ဟာ​လည်း Schema Language ဖြစ်​တဲ့ DTDကို​လိုက်နာ​ပြီး ရေးသား​ထား​တဲ့ XML ကို​မှ ပြည့်​စုံ​တဲ့ XMLအဖြစ် သတ်​မှတ်​နိုင်​မှာ ​ဖြစ်​သည်။

Name Space

XMLဟာ Tagတွေ​ကို​လွတ်လပ်​စွာ ရေးသား​နိုင်​သည့်​အတွက် ကဏ္ဍ​အမျိုး​မျိုး​က Data တွေ​ကို​အတူတကွ​တွဲ​ဖက်​ပြီး အသုံးပြု​နိုင်​သည်။ သို့ရာတွင် လူတိုင်း​က​ သက်​မှတ်ထား​တဲ့ Tagတွေ​ကို စာ​ပိုဒ်​တစ်​ခု​ထဲ​မှာ​ ရော​ပြီး​အသုံး​ချ​မည်​ ဆို​လျှင်၊ အမည်တူ Tag များဖြင့် ရှုပ်ထွေးကုန်နိုင်ပါသည်။ ဥပမာ​အား​ဖြင့် ကုမ္ပဏီ​၂​ခု​က​ပေါင်း ​စပ်​ကြ​ပြီး သူ​တို့​ရဲ့​အချက်​ အ​လက်​တွေ​ကို ပေါင်း​စပ်​ရ​မည်​ဆို​လျှင် နာမည်​တူTagတွေ​ကို အသုံး​ချထား​တာ ရှိ​လာ​နိုင်​သည်။ ဒီ​လို​အခက်​အခဲ​တွေ​ကို ဖြေ​ရှင်း​ပေး​နိုင်​တာ​ကတော့ Name space ဖြစ်၏။



Name spaceဟာ URI ကို​အသုံးပြု​ပြီး Tag နာမည်​တွေ​ကို မ​ရှုပ်​ထွေး​အောင် သက်​မှတ်​ပေး​နိုင်​သည်။ တ​နည်း​ဆိုသော် Tag အမည်​တွေ​ကို ခွဲ​ခြား​ဖို့​ သက်သက်​အတွက် Name spaceကို​အသုံး​ချ​တဲ့​အတွက် Name space ဟာ XML စာသား​တွေ​မှာ မ​ရှိ​မ​ဖြစ်​မဟုတ်​ပေ။

အောက်​ပါ န​မှု​နာ​ကတော့ Name spaceကို​အသုံးပြု​ထား​တဲ့ န​မှု​နာ​တစ်​ခု​ဖြစ်​ပါ​သည်။
<?xml version=”1.0” ?>
<itboost xmlns:advances=”http://www.little-burma.com/”>
 <advances:course>XML</advances:course>
 <advances:course>UML</advances:course>
 <advances:course>Design Pattern</advances:course>
</itboost>
ဒုတိယ​မြောက်​ စာ​ကြောင်း​က itboost မှာ advances ဆို​တဲ့Name spaceကို အသုံးပြု​မယ်​ဆို​ပြီး URI နေရာ​မှာ http://www.little-burma.comကို  ညွှန်ပြ​ပေး​ပါ​သည်။ Name space ကို​အသုံးပြု​မည် ဆိုလျှင် ဒီ​စာ​ကြောင်း​ကို​ဦးစွာ​မ​ရေး​မ​ဖြစ် လို​အပ်​ပါ​သည်။ စာ​ကြောင်း နံပါတ်​၃​က​နေ​ ၅​အထိ​သည် Element ရဲ့​အမည်​မှာ Namespace ကို အသုံးပြု​နေ​တာ​ကို မြင်​တွေ့​နိုင်​ပါ​သည်။ န​မှု​နာ​တွင်​အသုံးပြု​နေ​သော အချက်အလက်​များ​သည် http://www.little-burma.com ရဲ့ Name space ဖြစ်​တဲ့ course element ဖြစ်​ကြောင်း​ကို ခွဲ​ခြား​သိရှိ​နိုင်​ပါ​သည်။

ပြန်လှန်သုံးသပ်ချက်

"XML ဆီ​သို့​ခြေလှမ်း​များ​" ရဲ့ ပဋ္ဌ​မ​ခြေလှမ်း ​အနေ​နဲ့ အခြေ​ခံ XMLအကြောင်း​ကို အကျဉ်း​ချုံး တင်ပြ​ခဲ့​ပြီး​ဖြစ်​သည်။

  • XML သည် တိကျတဲ့ စည်းကမ်းများဖြင့်​ သက်​မှတ်ထား​ကြောင်း
  • DTD အစ​ရှိ​တဲ့ စကီးမား (Schema) ဘာသာရပ်ကို ​အသုံးပြု​ပြီး XML ရဲ့ Tag တွေ​ကို သစ်ပင်​ဖွဲ့​စည်း​ပုံ(Tree Structure) ​အတိုင်း သက်​မှတ်​နိုင်​တဲ့​အကြောင်း
  • XMLကို​ မည်ကဲ့သို့  ရေးသားရမည် ဖြစ်ကြောင်း
အစ​ရှိ​တဲ့ အခြေ​ခံ​ဝေါဟာရ​တွေ​ကို အဓိက​ထား​ပြီးဖော်​ပြ​ခဲ့ပါသည်။ နောက်​အခန်း​ဆက်​တွေ​မှာ​တော့ DTD နဲ့ XSLT အစ​ရှိ​တဲ့ XML နဲ့​ပတ်သက်​တဲ့ နည်း​ပညာ​ရပ်​တွေ​ကို​ နောက်​ခြေလှမ်း​များ​အနေ​နဲ့ ဖေါ်​ပြ​သွား​ပါ​ဦးမည်။ ထို့နောက် XMLအချက်အလက်​တွေ​ကို Java Program က​နေ​အသုံး​ချ​တဲ့ စနစ်​များ​ဖြစ်​တဲ့ DOM နဲ့ SAX အကြောင်း​ကို ဆက်​လက်ဖေါ်​ပြ​သွား​ပါ​မည်။

လေးစားစွာဖြင့်
မင်းလွင်