xml orchuulga bayarbat purevkhuu
DESCRIPTION
Xml orchuulga bayarbat purevkhuuTRANSCRIPT
XML технологи ба Java
Tomasz Janowski
Center for Electronic Governance
post P.O. Box 3058, Macau
email [email protected]
tel +853 28712930
fax +853 28712940
url http://www.iist.unu.edu
UNU-IIST-eGov-course-XML-2
Зорилго
Хоёр үндсэн зорилго байдаг:
1) XML болон XML –тэй холбоотой тогсон ойлголтыг оюутануудад өгөх
2) java application дээр XML боловсруулалтыг бичих чадвараа дээшлүүлэх
a) SAX (XML-ийн энгийн application program inteface),
b) DOM (бичиг баримтын обьектийн загвар) ба
c) XSLT (өргөтгөсөн stylesheet хэлний хувиргалтууд).
UNU-IIST-eGov-course-XML-3
Програм
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-4
7 өдрийн цагийн хуваарь:
• Оршил хэсэг буюу товч танилцуулга, Юникод• XML• DTD• Namespaces, XML схем• XPath, XSLT• Java XML with DOM• Java XML with SAX and XSLT
Цагийн хуваарь
UNU-IIST-eGov-course-XML-5
Бүтэц зохион байгуулалт
Дараах хэсгүүдээс бүрдэнэ:
• лекцүүд• танилцуулгууд• зорилтууд (зорилтуудаа тодорхойлох)• төслийн ажил
UNU-IIST-eGov-course-XML-6
Ном зүй
W3C –ийн албан ёсны документууд дараах хаяганд байрлана:
• World Wide Web Consortium, Technical Reports, http://www.w3c.org/TR/
Өргөн хэрэглэгддэг номнууд:
• Erik T. Ray, Learning XML, O’Reilly, 2001• Kenneth B. Stall, XML Family of Specifications, Addison Wesley, 2003
UNU-IIST-eGov-course-XML-7
Цаашид унших номнууд
Өргөн хэрэглэгддэг номнууд :
• Processing XML with Java, E. R. Harold, Addison Wesley• XML Internationalisation and Localization, Yves Savourel, SAMS• XML Topic Maps, Jack Park (Ed.), Addison Wesley• Secure XML, D. E. Eastlake III and Kitty Niles, Addison Wesley• XML Data Management, A. Chaudhri et. al., Addison Wesley• ebXML, A. Walsh, Prentice Hall• XML Distributed Systems Design, A.M. Rambhia, SAMS• Modelling XML Applications with UML, D. Carlson, Addison Wesley• etc.
UNU-IIST-eGov-course-XML-8
Өмнө хийж байсан ажилууд:
1) September 2003, UNU-IIST, Macau, 40 hours course for Macau IT staff from government, academia and industry.
2) October 2003 – January 2004, University of Gdańsk, Poland, 120 hours (60 hours of lectures and 60 of exercises) monograph elective course for Master degree students.
Түүх
Үндэслэл
UNU-IIST-eGov-course-XML-10
Програм
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-11
Дэлхийг хамарсан сүлжээ
Өдөр бүр сүлжээ руу хандаж буй сая сая хүмүүсийн давалгаа нь:• Гэрийн эзэгтэй хоол хийх жор, зөвлөгөөгөө олж авдаг.• Оюутанууд курсын ажил, бие даалт, хичээлтэй холбоотой
мэдээллүүдээ хардаг.• Хөрөнгө оруулагчид хамгийн сүүлийн үеийн үнэт цаасны
үнэлгээг олж авахыг эрэлхийлдэг.• Жуулчид хамгийн сайн амралттай газрыг судалдаг.• Уншигчид интернет номын худалдаанаас номнуудаа
худалдаж авч уншидаг.• Судлаачид өөрсдтэйгээ ижил судалгаа хийж буй судлаачдын
хамгийн сүүлийн үеийн судалгааны ажилуудыг авч судалдаг.
Дэлхийг хамарсан сүлжээгээр эдгээр ажлуудыг ихээр хийдэг . Бас өөр юуг хийдэг вэ?
UNU-IIST-eGov-course-XML-12
Сүлжээний асуудлууд
1) Браузер-тодорхой өргөтгөлүүд
2) Тодорхой браузерийг дэмжих
3) Браузерийн чиг хандлага
4) Бүтэц болон төрөл нягт холбогдсон байдаг
5) Өгөгдөлийн солилцоо асуудалтай
6) Тохирсон чиг хандлага
7) Тодорхой чиглэд төвлөрөөгүй хайлтууд
8) Статик контент
9) нэг-хуудасны хязгаарлалт
10) нэг-цорын ганц холбох арга
11) гэх мэт.
UNU-IIST-eGov-course-XML-13
Асуудалууд: Браузер-тодорхой өргөтгөлүүд
Удаан хугацаанд хэрэглэгдэж байгаа HTML стандартуудыг авч үзье.
Браузер-тодорхой өргөтгөлүүдийг танилцуулах буюу хэрэглэгчид хүргэхийг борлуулагчид хүсэхэд .
мэдээж хэрэглэгчид дуртайяа хүлээн зөвшөөрөхгүй
Энэ HTML нь бидний шалгаж үзсэн браузер бүр дээр ялгаатай харагдаж байна :
<html><head><title>Welcome Message</title>
</head><body><marquee>Welcome</marquee> to the<blink>XML Technology</blink> course!<img src="smiley.gif"/>
</body></html>
UNU-IIST-eGov-course-XML-14
Demo: Браузер-тодорхой өргөтгөлүүд
> cd "demos/browser-specific extensions"
> dir
smiley.gif welcome.html
> opera welcome.html
> netscape welcome.html
> iexplorer welcome.html
> amaya welcome.html
UNU-IIST-eGov-course-XML-15
Асуудлууд : Тодорхой браузерийг дэмжих
тодорхой төрлийн браузер хэрэглэгч нар янз янзын шалтгаанаас болж тэрхүү браузерийг хэрэглэдэг :
• Зөвхөн хуучин браузерийг ашигладаг
• Зөвхөн нэг браузерийг дэмжидэг
• олон төрлийн браузеруудийг дэмжидэг жишээ :
<script language="javascript">if (version < 4.0)location.href=’index1.html’;
if (vendor == ’Netscape’)location.href=’index2.html’;
if (vendor == ’Microsoft’)location.href=’index3.html’;
</script><noscript><a href="index4.html">No scripting.
</a></noscript>
UNU-IIST-eGov-course-XML-16
Демо : Браузерийн чиг хандлага
Ямар нэгэн вэб браузер нь аппликашинуудын хөдөлгөгч хүч болдог.
Энэ парадигм нь хэтэрхий хязгаарлагдмал юм.
Бидэнд өдөр тутам тохиолддог апликашинууд
1. editors
2. spreadsheets
3. media players, . . .
Java апплетийг HTML дээр дуудаж ажилуулах :
<html><body><h1>XML Technology Course</h1><applet code="menuscroll2.class"><param name="text1" value="XML"/><param name="text2" value="DTD"/><param name="text3" value="DOM"/>...</applet></body></html>
UNU-IIST-eGov-course-XML-17
Демо : Браузерийн чиг хандлага
> cd "demos/browser orientation"
> dir
menuScroll.html menuscroll2.class
> opera menuScroll.html
UNU-IIST-eGov-course-XML-18
Асуудлууд: Бүтэц болон төрлийн хослол
• Бүтэцлэгдсэн элементүүд (title) ба төрлийн элементүүд (i) HTML дээр чөлөөтэй цуг хослож орж болдог.
• Иймэрхүү хавтаснуудыг нэг төрлийн үгсийн сангаар холбох болон хөрвүүлэхэд хүнд байдаг.
<html> ...
XML is <i>fun</i>.
In Polish we say
<i>fajny</i>
</html>
<html> ...
XML is
<emphasis>fun</emphasis>.
In Polish we say
<foreign>fajny</foreign>.
</html>
UNU-IIST-eGov-course-XML-19
Асуудлууд: Мониторын чиг хандлага
Интернет холболтынтөхөөрөмжүүдийн тоо хэмжээний өсөлт:
1) компьютерууд2) утаснууд3) Гар удирдлагатай
төхөөрөмжүүд4) телевиз, гэх мэт.
Мэдээлэлийн дүрслэл нь төхөөрөмжөөс үл хамаарах ёстой.
<html><head><title>Framed Page</title></head><frameset cols="100,*"><frame name="navigation" .../><frame name="main" .../><noframes><p> your browser doesnot support frames</p></noframes></frameset></html>
UNU-IIST-eGov-course-XML-20
Асуудлууд: Чиглэлгүй хайлтын машин
Хамгийн сайн хайлтын машин нь тухайн хавтсан дахь үгүүдийн давтамжийн индексээр шалгах зарчимаар ажилладаг, оносон ба хамгийн их алдсан мянган мэдээллийг харуулдаг. Бид энэхүү хавтасны агууламжтай ойролцоо мэдээллийг мэдээллэх хэрэгтэй.
<html><head><meta name="keywords" content="XML course macao"/><meta name="description" content="This site ..."/><title>XML Technology Course</title>
</head><body><p> We invite applications to attend ... </p>
</body></html>
UNU-IIST-eGov-course-XML-21
Илүү асуудлууд
• Өгөгдөл солилцох хүндрэлтэй асуудал
HTML нь одоогоор өгөгдөл солилцох боломжгүй байгаа: өөр өөр эх үүсгүүрүүдээс нэгтгэх болон шүүдэг , хүссэн төрөлтэй өгөгдөлийг шалгадаг.
• Статик контент
Вэб сайтан дээрх мэдээлэл, контент нь давтамжтай өөрчлөгддөг.
өгөгдсөн контентийн хувьд харгалзах харагдах байдал үүсгэх бөгөөд, энэ нь контентийг өөрчлөх бүрд шинээр үүсдэг.
Ерөнхий төсөөлөл
UNU-IIST-eGov-course-XML-23
Програм
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-24
XML
Иймэрхүү асуудлуудыг шийдэхийн тулд XML-ийг дууддаг.
• XML нь HTML-ийг орлогч биш.
• HTML ээс (ерөнхийдөө) XML ийг агуулсан цэвэр HTML-ийн өөрийн хувилбар болох XHTML гэж байдаг.
• XML хувьд интернет технологид илүү нэгдмэл ба уян хатан сан үүсгэх явдал юм.
UNU-IIST-eGov-course-XML-25
XML гэж юу вэ?
1) Мэдээллийг агуулах болон удирдах протокол юм.
2) Технологийн хүрээнд тэр нь документуудыг бичих, бататгах, зохион байгуулахаас боловсруулах хүртэлх ямар нэгэн зүйлийг хийж чаддаг
3) бvтэц бvхий єгєгдлийг хадгалах, хэрэглэхэд ашиглах боломжтой
UNU-IIST-eGov-course-XML-26
Юу XML-д байдаггүй вэ?
• Энэ нь програмчлалын хэл биш:
XML машинаас гадагшаа тээвэрлэх дамжуулах үйлдэл байдаггүй, Java ... адилгүй
• Энэ нь харагдах байдлын буюу HTML шиг хэл биш :
XML документыг тайлбарлах томьёолох заавар зөвлөмжүүдийг агуулдаггүй Postscript .... адилгүй
UNU-IIST-eGov-course-XML-27
XML хэлээр
Хэлний хувьд XML-д “L” гэж товчилж тэмдэглэдэг.
XML өөрийнхөө дүрсэлсэн өгөгдөлийг бичих тэмдэглэх боломжтой..
Өөр төрөлтэй өгөгдлийн бүтцийг нэгтгэж авдаг.• синтакс: XML документуудын хувьд синтак нь сайн
тодорхойлогдсон байдаг.
UNU-IIST-eGov-course-XML-28
XML Mета-хэлээр
eXtensible-ийг XML-д “X” гэж товчилж тэмдэглэдэг.
XML мета-хэлний синтакс нь бусад хэлүүдээр дүрслэгддэг.
Эдгээр хэлүүд нь олон янзын үйлдвэрийн домайнуудыг хамарч чаддаг.
UNU-IIST-eGov-course-XML-29
XML домайнууд
Босоо домайнууд Хэвтээ домайнууд
Хууль LegalXML Баталгаатай буюу Хүчин төгөлдөр
XML Schema
Мэдээ NewsML Өөрчлөлт хувиргалт
XSLT
Санхүү Visa Invoice танилцуулга XSL-FO
Бизнес ebXML Навигац XLink
Утас VoiceXML ретривал XML Query
Хэвлэл XHTML Хувиарлалт SOAP
удирдлага GovML Хамгаалалт XML Encryption
… …
UNU-IIST-eGov-course-XML-30
XML мета тэмдэгтийн хэл
Тэмдэгтийг XML-д “M” гэж товчилж тэмдэглэдэг.
XML –ийн энэ авч үзэж буй хэлүүд нь тэмдэгтийн хэлүүд юм: Тэдгээр нь тэдний дүрслэлүүд буюу гадаад байдал (документууд) –ыг тэдгээрийн гол бүтцээс тэмдэгтээр тайлбаладаг.
Тэмдэгт гэж юу вэ?
UNU-IIST-eGov-course-XML-31
Тэмдэгт
• Тэмдэгт нь найдвартай аргуудаар сайжруулан документ руу нэмсэн мэдээлэл, документын хэсгүүдийг таньж тогтоосоноор тэдгээрийн бусадтай хэрхэн яаж хамаарахыг илэрхийлдэг.
• Тэмдэгтийн хэл нь тэмдэгтүүдийн олонлог юм. Тэр нь тэдгээрийн хэсгүүдийн хаяг болон хил хязгаарыг тогтоон документын текстэн дотор хувиаралах буюу байрлуулдаг.
UNU-IIST-eGov-course-XML-32
Жишээ: XML тэмдэгт
<?xml version="1.0"?>
<message date="15.09.2003">
<from>Tomasz</from>
<to>Participants</to>
<subject>Welcome</subject>
<body>
Welcome to the
<emphasis>XML Technology
</emphasis> course!
<cheers img="smiley.jpg"/>
</body>
</message>
• boundaries– эхлэлийн ба төгсгөлийн тагууд
• roles –элементийн үүргийг тогтоох тагийн нэр
• meta-data – контентийн талаар мэдээлэлдэг атрибутууд
• position – элементийн байрлал
• containment – элементийн дотор агуулагдах
• relationships – гадаад холболт
UNU-IIST-eGov-course-XML-33
Демо : Браузеруудын XML
> cd "demos/xml in browsers"
> ls
welcome.xml
> opera welcome.xml
> iexplore welcome.xml
UNU-IIST-eGov-course-XML-34
XML-ийн ерөнхий төсөөлөл1. XML нь интернэт
протоколуудад ашиглагдаж чадна (HTTP, MIME ...).
2. Энэ нь мэдээллийг интернэтээр хэрэглэх маш сайн формат
3. XML нь application-д хязгаарлагддаггvй. Ямар ч программ XML баримтуудыг дэмжиж, тvvнийг ашиглаж чадна
4. XML нь платформ хязгаарлагддаггvй. Машины тєрєлд зохицон Unicode зэрэг технологийн хэрэглэдэг.
5. XML нь ямар нэгэн лиценз нэхэхгvй. Энэ нь Олон улсын стандартын байгууллагаар зохицуулагдаж байдаг
6. GSML-тэй зохицдог
7. XML нь бvл технологи юм. XML нь хувьслын дvнд Style Sheets, hyperlink, DOM (document object model)-уудыг багтаасан.
UNU-IIST-eGov-course-XML-35
XML-ийн ерөнхий төсөөлөл:
• XML нь SGML ба HTML-ийн бvх сайн чанарыг багтаасан, зохицох чадвар сайтай, єндєр хэрэглээтэй ба ямар ч программд ”бvтэц бvхий” єгєгдлийг хадгалах, хэрэглэхэд ашиглах боломжтой markup language юм.
<?xml version="1.0"?>
<message date="15.09.2003">
<from>Tomasz</from>
<to>Participants</to>
<subject>Welcome</subject>
<body>
Welcome to the
<emphasis>XML Technology
</emphasis> course!
<cheers img="smiley.jpg"/>
</body>
</message>
UNU-IIST-eGov-course-XML-36
XML-ийн ерөнхий төсөөлөл: Нийтлэг зориулалтын буюу уян хатан бүтэцжүүлэлт
Өгөгдлийг загварчлалын аппроксимацлах буюу төсөөтгөх хоёр арга байдаг:
1. XML гол өгөгдлийг элементийн дотор бүх өгөгдөлд хадгалдаг.
2. XML гол документыг текст доторх элементүүдэд хавсаргаж өгдөг .
XML нь хоёулангаар нь төсөөтгөх буюу аппроксимацладаг .
UNU-IIST-eGov-course-XML-37
Жишээ: документийн-төв буюу гол өгөгдөлтэй харьцуулахад
<?xml version="1.0"?>
<message date="15.09.2003">
<from>Tomasz</from>
<to>Participants</to>
<subject>Welcome</subject>
<body>
Welcome to the
<emphasis>XML Technology
</emphasis> course!
<cheers img="smiley.jpg"/>
</body>
</message>
<?xml version="1.0"?>
<message>
<from>Tomasz</from> sends
a welcome message to
<to>Participants</to>:
Welcome to the
<emphasis>XML Technology
</emphasis> course!
<cheers img="smiley.jpg"/>
</message>
UNU-IIST-eGov-course-XML-38
XML-ийн ерөнхий төсөөлөл:бүтэц-төрөл хоорондын үл хамаарал
XML –ийг HTML-тэй харьцуулахад:
1. XML нь өгөгдлийн бүтцийг тодорхойлдог,харагдах байдал нь юуг ч үл харгалзадаг.
2. HTML агуулдаг бүтцийн хослол (title) ба тэмдэгт дүрслэл (table) .
UNU-IIST-eGov-course-XML-39
Жишээ: Бүтэцийг төрөлтэй харьуулахад
<?xml version="1.0"?>
<message date="15.09.2003">
<from>Tomasz</from>
<to>Participants</to>
<subject>Welcome</subject>
<body>
Welcome to the
<emphasis>XML Technology
</emphasis> course!
<cheers img="smiley.jpg"/>
</body>
</message>
<html>
<table>
<tr>
<td><b>from</b></td>
<td>Tomasz</td>
...
</tr>
</table>
Welcome to the
<i>XML Technology</i> course!
<img src="smiley.gif"/>
</html>
UNU-IIST-eGov-course-XML-40
XML-ийн ерөнхий төсөөлөл: Төрлийг гадна байдлаар нь хадгалах
XML –ийг HTML-тэй харьцуулахад:
• HTML нь тухайлсан ба онцгойлсон харагдах байдлыг хязгаарладаг.
• Ямар нэгэн XML документ нь өөр өөр арга замуудаар форматалж чаддаг.
• Мэдээллийн форматыг stylesheet документд хадгалдаг.• The stylesheet шаардлагатай документоос хандах боломжтой.
UNU-IIST-eGov-course-XML-41
Жишээ: Гадаад Stylesheet
Өгөгдсөн энэ CSS (Cascading Stylesheets) документ (welcome.css)to:before {content: "to:“}
from:before {content: "from:“}
subject:before {content: "subject:“}
body {display:block}
Энэ нь XML документ:<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="welcome.css"?>
<message>...</message>
CSS-браузер нь энэ үр дүнг гаргадаг:from: Tomasz to: Participants subject: Welcome
Welcome to the XML Technology course!
UNU-IIST-eGov-course-XML-42
Жишээ: Өөр гадаад Stylesheet
Энэ stylesheet-г ашиглах:
to:before {content: “to:”}
from:before {content: “from:”}
to, from {display:block; font-weight: bold}
subject {display:none}
emphasis {font-style: italic}
Энэ үр дүн нь дараах байдлаар гарна:
from: Tomasz
to: Participants
Welcome to the XML Technology course!
UNU-IIST-eGov-course-XML-43
Демо : Өөр өөр харагдах байдал
> cd "demo/different presentations"
> dir
welcome1.css welcome2.css welcome1.xml welcome2.xml
> opera welcome1.xml
> opera welcome2.xml
UNU-IIST-eGov-course-XML-44
XML-ийн ерөнхий төсөөлөл : Документ хувиргалтууд
Илүү радикал үр дүнгүүдийг XSLT-ээр олж авч болно:
• Өргөтгөсөн Stylesheet хэлний хувиргалтууд
• XSLT нь XML хувиргалтануудад мэргэшисэн цогц зарлалтын програмын хэл юм.
• XSLT програмууд нь XML дээр бичигдсэн байдаг.
UNU-IIST-eGov-course-XML-45
Жишээ: XSLT 1 дээрх XML хувиргалтууд
Энэ програм дэлгэцэн дээр мессеж харуулдаг HTML –ийг үүсгэдэг.
XSLT –ийн элементийн форматийн заавар xsl .
<xsl:stylesheet xmlns:xsl="www.w3.org...">
<xsl:template match="message">
<html>
<table> ...
<td><b>from</b></td>
<td>
<xsl:value-of select="from"/>
</td>
</table>
<xsl:value-of select="body"/>
<img src="smiley.gif"/>
</html>
</xsl:template>
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-46
Жишээ: XSLT 2 дээрх XML хувиргалтууд
Энд HTML үүссэн байна:<html>
<table>
<tr><td><b>from</b></td><td>Tomasz</td></tr>
<tr><td><b>to</b></td><td>Participants</td></tr>
</table>
Welcome to the <i>XML Technology</i> course!
<img src="smiley.gif"/>
</html>
Браузерийн гаралт:
from Tomasz
to Participants
subject Hello
Welcome to the XML Technology course!
UNU-IIST-eGov-course-XML-47
Демо: XSLT ээс HTML үүссэн байна
> cd "demos/html generated by xslt"
> dir
welcome.xml welcome.xsl smiley.gif
> xalan welcome.xml welcome.xsl welcome.html
> ls
welcome.xml welcome.xsl welcome.html smiley.gif
> opera welcome.html
UNU-IIST-eGov-course-XML-48
Демо: XSLT –ийн Built-in хийх үе шат
> cd "demos/built-in xslt processing"
> dir
welcome.xml welcome.xsl smiley.gif
> iexplore welcome.xml
UNU-IIST-eGov-course-XML-49
XML ерөнхий төсөөлөл:Бид хаана байна?
1. Өгөгдлийг өөрийнхөөрөө дүрслэх
2. Уян хатан бүтэц
3. Бүтэц –төрөл үл хамаарал
4. Төрлийн гадаад байдал хадгалалт
5. Документийн хувиргалтууд ЭНД!
6. Документийн боловсруулалт
7. програмын дэмжлэг
8. ОУ дэмжлэг
9. Синтаксийн үүрэг
10. горимыг зааврын дагуу хийх
11.Хэлнүүдийг үүсгэх
12.Хэлнүүдийг хүлээн зөвшөөрөх
13.Хэлнүүдийн хамрах хүрээ
14.Технологийг өөрийнхөөрөө дүрслэх
15. технологийг эмх цэгцтэй болгох
UNU-IIST-eGov-course-XML-50
XML ерөнхий төсөөлөл : Документийн боловсруулалт
XML ээс HTML руу хувиргах нь боловсруулалтын яг нэг төрөл юм.
Доорх байдлуудаар олон төрөлд хувиргах боломжтой:
• XML ээс XML руу• XML ээс text руу• XML ээс PDF руу• XML ээс Latex руу• XML ээс troff руу• Гэх мэт.
Tэд вэб дээр ямар нэгэн юм хийдэггүй байна.
UNU-IIST-eGov-course-XML-51
Жишээ: XML ээс LaTeX руу
• XSLT build руу мэдээлэл гарах
• XML-ийн оролт
• LaTeX-ийн гаралт
• Тэмдэгтийн ялгаатай төрлүүдийн цуварсан зарлалтууд
<xsl:stylesheet xmlns:xsl="www.w3.org...">
<xsl:template match="message">\documentclass{article}\title{<xsl:value-of select="subject"/>}\begin{document}...<xsl:apply-templates select="body"/>\end{document}
</xsl:template>
<xsl:template match="emphasis">{\it <xsl:value-of select="."/>}
</xsl:template>
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-52
Демо: XSLT ээс LaTeX үүсгэх
> cd "demos/latex generated by xslt"
> dir
welcome.xml welcome.xsl smiley.eps
> xalan welcome.xml welcome.xsl welcome.tex
> dir
welcome.xml welcome.xsl welcome.tex smiley.eps
> latex welcome.tex
> dir
welcome.xml welcome.xsl welcome.tex welcome.aux
welcome.dvi welcome.log smiley.eps
> yap welcome.dvi
UNU-IIST-eGov-course-XML-53
XML-ийн ерөнхий төсөөлөл: Програмыг дэмжих
Үндсэн програмын хэлүүд бүгдээрээ XML-ийг дэмждэг.
эдгээр нь C++, Java ба Perl-д орсон байдаг.
XML parser гэвэл XML-ийг уншиж мэдээллийг авагч гэж ойлгож болно.
Програмчлалын дэмжигч хэсгүүд• Үзэгдэл дээр суурилсан: XML-ийн ажиллаж байх үед XML-ийн
парсинг үүсгэгдсэн үзэгдлүүдэд буюу event-үүдэд хариу үйлдэл өгдөг програм
• Модон дээр суурилсан: XML-ийн үүсгэгдсэн парсинг документийн байрлалыг тодорхойлох болон шилжүүлдэг програм
• Дүрэм дээр суурилсан: Давтан хувиргагч зарчмууд буюу (XSLT) документэд глобал өөрчлөлтүүдийг гүйцэтгэдэг програм
UNU-IIST-eGov-course-XML-54
Жишээ: API документ обьект
XML документэд үүсгэх JAVA-гийн кодчлол
Оролтын документ дээр дуудагддаг програмчлалын парсинг.
DOM API нь үүсгэгдсэн модны бүтэцтэй програмчлалын парсинг давталтанд хэрэглэгддэг.
package dom;public class Counter { public void count(Node node) { switch (node.getNodeType()){ case Node.TEXT_NODE: { ... } case Node.ELEMENT_NODE: { Node child = node.getFirstChild(); while (child != null) { count(child); child = child.getNextSibling(); }}}} public static void main(String argv[]) { Counter counter = new Counter(); document = parser.parse(argv[2]); counter.count(document); }}
UNU-IIST-eGov-course-XML-55
Демо: Java DOM API-ээр XML-ийг боловсруулах
> cd "demos/xml processing with java dom api"
> dir
welcome.xml
> java dom.Writer welcome.xml
> java dom.Counter welcome.xml
> java dom.GetElementsByTagName -e message welcome.xml
> java dom.GetElementsByTagName -a img welcome.xml
UNU-IIST-eGov-course-XML-56
XML ерөнхий төсөөлөл: Олон улсын дэмжлэг
XML ийн Unicode дэмжлэгүүд:
• UTF8 – 8-bit Unicode – үндсэн кодчлол• XML боловсруулалт нь ямагт UTF8 ба UTF16 хоёуланг нь
дэмждэг• Эдгээр нь тэмдэгтийн олонлогийг олон талаас нь дэмжих үйл
явцыг дэмждэг• Текст, элемент ба атрибут нэрүүдийг international гэж үздэг • Хэд хэдэн хэлүүд нь нэг документэд хамтдаа оршиж болдог
UNU-IIST-eGov-course-XML-57
Жишээ: Polish-дээрх XML документ
Polish-ийн нэг ердийн мессеж.
iso-8859-2 нь төв европийн кодчлол.
Текст ба таг/атрибутийн нэрүүд нь бүгд Polish-р харагдана.
<?xml version="1.0"encoding="iso-8859-2"?>
<wiadomość data="15.09.2003"><od> Tomasz </od><do> Uczestnicy </do><tytuł> Powitanie</tytuł><treść>
Witam na kursie<ważne>Technologii
XML</ważne> <czołem obraz="smiley.jpg"/> This is a message in Polish: ąćęłńόśźĄĆĘŁŃÓŚŹŻ </treść></wiadomość>
UNU-IIST-eGov-course-XML-58
Демо: Polish дээрх XML
> cd "demos/xml in polish"
> ls
polish.xml
> opera polish.xml
> iexplore polish.xml
UNU-IIST-eGov-course-XML-59
XML ерөнхий төсөөлөл: Синтаксийн үүрэг
An XML document must be well-formed to be process-able by
XML-compliant applications:
• XML parsers are explicitly required not to process ill-formed XML, but to exit with a suitable error message
• Браузерууд Browsers accept ill-formed HTML, trying to guess the intentions of the document’s author.
• A lot of browser code goes to processing ill-formed HTML, increasing complexity and decreasing predictability.
UNU-IIST-eGov-course-XML-60
Жишээ: Ill-Formed XML
1. Огноог хашилтгүйгээр бичсэн
2. Тодруулсан нь алдаж бичэгдсэн
3. Чипүүдийг төгсгөхгүй
4. Мессеж болон биеийн давхцал
<?xml version="1.0"?>
<message date=15.09.2003>
<from>Tomasz</from>
<to>Participants</to>
<subject>Welcome</subject>
<body>
Welcome to the
<emphasis>XML Technology
</emphazis> course!
<cheers img="smiley.jpg">
</message>
</body>
UNU-IIST-eGov-course-XML-61
Demo: Ill-Formed XML
> cd "demos/ill-formed xml"> dirwelcome.xml welcomeIll.xml> cp welcomeIll.xml welcome.xml> opera welcome.xml> emacs welcome.xml> opera welcome.xml> emacs welcome.xml> opera welcome.xml> emacs welcome.xml> opera welcome.xml> emacs welcome.xml> opera welcome.xml
UNU-IIST-eGov-course-XML-62
XML-ийн ерөнхий төсөөлөл : Ажиллах горимыг шууд олгох
Well-formedness д синтаксийн шалгах суурь дүрэм, XML документуудын бүх төрлүүд нийтлэг агуулагддаг.
propert-уудыг шалгах ба шилжүүлэх ерөнхийгөөс тухайлсан XML ийн жишээ хэлнүүд:
• Документ нь тодорхой үүрэгтэй компялуудыг зөв тодорхойлж өгсөн хэл.
• Шилжүүлэх ямар нэгэн иймэрхүү арга нь Документ төрөл тодорхойлолт.
• Документ ill-formed хүчингүй бол, ill-formed хэрэгтэй биш ба документ нь хүчинтэй байдаг.
UNU-IIST-eGov-course-XML-63
Жишээ: утга олгогдоогүй сайн-зохион байгуулагдсан документ
Энэ message сайн-зохион байгуулагдсан, гэвч хэн нэгэн хүлээн авдаг уу?
<?xml version="1.0"?>
<message date="15.09.2003">
<from>Tomasz</from>
<subject>Welcome</subject>
<body>
Welcome to the
<emphasis>XML Technology
</emphasis> course!
<cheers img="smiley.jpg"/>
</body>
</message>
UNU-IIST-eGov-course-XML-64
Жишээ: Ирсэн документуудыг хүчин төгөлдөр болгох
хүчин төгөлдөр болгох горимууд:
1. message бол язгуур буюу үндсэн элемент
2. Энэ нь форм элементээр агуулагддаг, to, subject ба body
3. бас сонголтын date aтрибут болон character өгөгдөл зэргийг агуулдаг
4. Гэх мэт.
<?xml version="1.0"?>
<!DOCTYPE message welcome.dtd>
<message date="15.09.2003">
...
</message>
welcome.dtd
<!ELEMENT message (from,to,subject,body)><!ATTLIST message date CDATA #IMPLIED><!ELEMENT from (#PCDATA)><!ELEMENT to (#PCDATA)><!ELEMENT subject (#PCDATA)><!ELEMENT body (#PCDATA | emphasis | cheers)*><!ELEMENT emphasis (#PCDATA)><!ELEMENT cheers EMPTY><!ATTLIST cheers img CDATA #REQUIRED>
UNU-IIST-eGov-course-XML-65
Демо: хүчингүй XML
> cd "demos/invalid xml"
> dir
welcome.xml welcomeInvalid.xml
> cp welcomeInvalid.xml welcome.xml
> xerces welcome.xml
> emacs welcome.xml
> xerces welcome.xml
UNU-IIST-eGov-course-XML-66
XML ерөнхий төсөөлөл:Бид хаана байна?
1. Өгөгдлийг өөрийнхөөрөө дүрслэх
2. Уян хатан бүтэц
3. Бүтэц –төрөл үл хамаарал
4. Төрлийн гадаад байдал хадгалалт
5. Документийн хувиргалтууд ЭНД!
6. Документийн боловсруулалт
7. програмын дэмжлэг
8. ОУ дэмжлэг
9. Синтаксийн үүрэг
10. горимыг зааврын дагуу хийх
11.Хэлнүүдийг үүсгэх
12.Хэлнүүдийг хүлээн зөвшөөрөх
13.Хэлнүүдийн хамрах хүрээ
14.Технологийг өөрийнхөөрөө дүрслэх
15. технологийг эмх цэгцтэй болгох
UNU-IIST-eGov-course-XML-67
XML ерөнхий төсөөлөл:Хэлнүүдийг үүсгэх
DTD нь хэлнүүдийн тодорхойлолтын механизмыг хангадаг:
• welcome.dtd file leaves:
– хүчинтэй XML документууд бүтэц шиг чөлөөтэй байдаг– иймэрхүү документуудын текст контентууд шиг илүү
чөлөөтэй байдаг
• Бүх XML документуудын хүчинтэй байх нь “хүлээн авсан message”-ийн хэл нь welcome.dtd ээс тогтоно
UNU-IIST-eGov-course-XML-68
Жишээ: өөр хүчинтэй аүлээн авсан документ
Програм хангамжийн төслийн менежментийн эх үүсгүүрүүдийн хүлээн авсан application-уудын .
<?xml version="1.0"?><!DOCTYPE message welcome.dtd><message>
<from>UNU/IIST</from><to>Students</to><subject>Welcome</subject><body>
We invite applications toattend the Software ProjectManagement course. The deadline
is<emphasis>15.09.2003 </emphasis>. Please apply to<emphasis>[email protected]</emphasis>.
</body></message>
UNU-IIST-eGov-course-XML-69
Демо : Хүчин төгөлдөр XML
> cd "demos/valid xml"
> dir
projectManagement.xml welcome.dtd
> xerces projectManagment.xml
UNU-IIST-eGov-course-XML-70
XML ерөнхий төсөөлөл:Хэлнүүдийг хэрэглэж эхлэх
бидний тодорхойлсон хэлнүүдийн оронд, түгээмэл XML үүд байх боломжтой байдаг.
Яг бидэнд хэрэгтэй хэлүүд.
XML ийн зуу зуун хэлүүдийг дурьдаж болно:
1. MathML –XML дахь математик
2. SVG –XML дахь вектор график
3. DocBook –XML дахь номын зохиогч нар
4. CML – хиймийн молекул бүтцийн дүрслэлүүд
5. Visa Invoice –XML дуу авиаг бичих
6. XHTML –XML дахь том хэмжээний текст документийн аутор
7. Өөр олон байдаг
UNU-IIST-eGov-course-XML-71
Жишээ: MathML
MathML-ийн багахан хэсгийг авч үзье – XML нь математик дүрслэл тэмэдглэлүүдийг тодорхойлдог.
mathml.dtd нь энэ хэлний нийтлэг DTD .
<?xml version="1.0"?><!DOCTYPE math"http://www.w3.org/mathml.dtd"><math><mi>x</mi><mo>=</mo><mfrac>
<mrow><mrow> <mo>-</mo><mi>b</mi></mrow><mo>±</mo><msqrt> ... </msqrt>
</mrow><mrow> ... </mrow>
</mfrac></math>
UNU-IIST-eGov-course-XML-72
Demo: MathML
> cd "demos/mathml"
> dir
math.xml
> xerces math.xml
> opera math.xml
> amaya math.xml
UNU-IIST-eGov-course-XML-73
Жишээ: Вектор графикууд
SVG нь:
vector graphics тодорхойлсон хэл.
SVG тэмдэгт нь
Хүлээн авах тесктийг синусойдын дагуу үзүүлдэг.
svg.dtd нь энэ хэлний нийтлэг DTD
.
<?xml version="1.0"?>
<!DOCTYPE svg "http://www.w3.org/svg.dtd">
<svg width="12cm" height="3.6cm">
<text fill="blue">
<textPath xlink:href="#MyPath">
Welcome to the
<tspan dy="50" fill="red">
XML Technology
</tspan>
course!
</textPath>
</text>
<rect width="998" height="298"/>
</svg>
UNU-IIST-eGov-course-XML-74
Жишээ: Вектор графикууд
> cd "demos/scalable vector graphics"
> dir
welcome.svg
> xerces welcome.svg
> opera welcome.svg
> amaya welcome.svg
> iexplore welcome.svg
UNU-IIST-eGov-course-XML-75
Хэд хэдэн үгсийн сангууд ижил документийг ашигладаг:
• Элемент болон хэлнээс ирсэнээр нь индеклэдэг:
• Угтвөр нь зарлагдаад хэлнүүдийн үндсэн URL руу илгээгддэг.
• Элементийн үйл явц хэрхэн яаж ажиллахыг XML процесс гэж нэрлэдг, эсвэл гадаад аппликашнийг хэрэглэх шаардлагатай.
XML ерөнхий төсөөлөл:Хэлнүүдийн хамрах хүрээ
svg:title title from SVG
xhtml:title title from XHTML
math:title title from MathML
UNU-IIST-eGov-course-XML-76
Жишээ: XHTML ба MathML ба SVG
Энэ документийг дараах гурван хэлэнд ашигладаг:
1. XHTML,2. MathML ба3. SVG.
<?xml version="1.0"?><html xmlns="www.w3.org/xhtml">
<body><p>Here is XHTML ... </p>
<p>Here is MathML: <math xmlns="www.w3.org/MathML"> ... </math> </p> <p>Here is SVG: <svg xmlns="www.w3.org/svg"> ... </svg> </p> </body></html>
UNU-IIST-eGov-course-XML-77
Демо: XHTML ба MathML ба SVG
> cd "demos/xhtml and mathml and svg"
> dir
mixed.xml
> amaya mixed.xml
UNU-IIST-eGov-course-XML-78
XML ерөнхий төсөөлөл:Технологийг өөрийнхөөрөө дүрслэх
тэдгээрийн синтаксууд нь XML-ийн өмнө CSS/DTD –ийг хэрэглэж байсан
Ерөнхий чиг хандлага нь XML-ийн уламжлалт синтаксийг солих:
• XSLT – XMLхувиргалтын хэл• XML Schema – XML класс дүрслэлийн хэл
UNU-IIST-eGov-course-XML-79
Example: XML ийн XML хувиргалт
XSLT нь XML-ийг бүхлээр шилжүүлдэг.
XML-нь өөрөө XML документийг хувиргах програм.
Хүлээн авсан мессежийг хамгийн түрүүнд хувиргадаг.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="www.w3.org...">
<xsl:template match="message">
<html>
<table> ...
<td><b>from</b></td>
<td>
<xsl:value-of select="from"/>
</td>
</table>
<xsl:value-of select="body"/>
</html>
</xsl:template>
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-80
Жишээ: XML дээрх XML классууд
XML Schema – XML документуудын XML классуудыг тодорхойлдог хэл юм – нь XML-ийг бүхэлд нь дүрсэлдэг.
<?xml version="1.0"?><xsd:schema xmlns:xsd="www.w3.org/XMLSchema">
<xsd:element name="message" type="Message"/><xsd:complexType name="Message">
<xsd:sequence><xsd:element name="from" type="xsd:string"/><xsd:element name="to" type="xsd:string"/><xsd:element name="subject" type="xsd:string"/><xsd:element name="body" type="Body"/>
</xsd:sequence><xsd:attribute name="date" type="xsd:date" use="optional"/>
</xsd:complexType> ...</xsd:schema>
UNU-IIST-eGov-course-XML-81
Демo: XML Schema
> cd "demos/xml schema validation"
> dir
welcome.xml welcome.xsd welcomeInvalid.xml
> cp welcomeInvalid.xml welcome.xml
> xercesSchema welcome.xml
> emacs welcome.xml
> xercesSchema welcome.xml
> emacs welcome.xml
> xercesSchema welcome.xml
> emacs welcome.xml
> xercesSchema welcome.xml
UNU-IIST-eGov-course-XML-82
XML-ийн ерөнхий төсөөлөл: Технологийг эмх цэгцтэй болгох
Өөр чиг хандлага бий болоход XMLийн технологууд нь өмнөх XML технологоо буцаан боловсруулдаг.
XHTML, гурван аятайхан зүйл байдаг:
• strict – хамгийн сайн XML руу-зөөх• transitional –HTML нь хуучин браузеруудаа буцааж хангалттай
их ашигладаг• frameset – string XHTML-д frame-ууд нэмэх
Уламжлалт програм хангамжаас хамаардаг XML-бишээс XML руу зөөх.
UNU-IIST-eGov-course-XML-83
Жишээ: XHTML
<?xml version="1.0"?><!DOCTYPE html PUBLIC
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>
<body><table>
<tr><td><b>from</b></td><td>Tomasz</td></tr><tr><td><b>to</b></td><td>Participants</td></tr><tr><td><b>subject</b></td><td>Welcome</td></tr>
</table><p>Welcome to the <i>XML Technology</i> course!<img src="smiley.gif" alt="Cheers"/></p>
</body></html>
UNU-IIST-eGov-course-XML-84
Демо: XHTML
> cd "demos/xhtml validation"
> dir
welcome.html welcome.xhtml smiley.gif
> opera welcome.html
> opera welcome.xhtml
> emacs welcome.xhtml
> opera welcome.xhtml
UNU-IIST-eGov-course-XML-85
XML ерөнхий төсөөлөл:Бид хаана байна?
1. Өгөгдлийг өөрийнхөөрөө дүрслэх
2. Уян хатан бүтэц
3. Бүтэц –төрөл үл хамаарал
4. Төрлийн гадаад байдал хадгалалт
5. Документийн хувиргалтууд
6. Документийн боловсруулалт
7. програмын дэмжлэг
8. ОУ дэмжлэг
9. Синтаксийн үүрэг
10. горимыг зааврын дагуу хийх
11.Хэлнүүдийг үүсгэх
12.Хэлнүүдийг хүлээн зөвшөөрөх
13.Хэлнүүдийн хамрах хүрээ
14.Технологийг өөрийнхөөрөө дүрслэх
15. технологийг эмх цэгцтэй болгох
ЭНД!
Үүсэл буюу Эх үүсвэрүүд
UNU-IIST-eGov-course-XML-87
Program
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-88
XML-ийн цаг хугацааны шугам
1967 GenCode
1969 Generalized Markup Language
1980’s GML adopted by government and industry
1986 Standard Generalized Markup Language
1989 World Wide Web = HTML + HTTP + URL
1991 World Wide Web is online
1994 XML is envisioned at the 2nd WWW Conference
1994 World Wide Web Consortium is founded
1996 W3C XML Activity Area starts
1998 XML becomes W3C Recommendation
1998 first applications of XML emerge
1999 Internet Explorer 5.0 – the first browser to support XML
UNU-IIST-eGov-course-XML-89
XML үүсэл: Генкод
1967 Graphic Communication Association (GCA)-ийн GenCode төсөл нь электроникийн документуудийн контент болон пресинтэшнийн үл хамаарах төхөөрөмжүүдийг дүрсэлсэн тагуудыг ашиглах аргаар анх дэвшигдэж байсан.
UNU-IIST-eGov-course-XML-90
XML ерөнхий төсөөлөл: GML
1969 IBM ийн Charles Goldfarb, Ed Mosher and Ray Lorie нар GM-ийг хөгжүүлсэн – тодорхойлж өгсөн тагуудыг анх удаа ашигласан документ тэмдэгт юм. GML нь DTD-ийг GenCode руу нэмэж өгсөн.
1980’s GML засгийн газар болон аж үйлдвэрт хэрэглэж эхэлсэн:
1. CALS хүснэгтийг US-ийн CALS групп-с анх гаргасан.
2. Berglund of CERN – Европийн эгэл бөөмийн Физикийн лабратори –SGML тест системийг хэвлэж хөгжүүлсэн.
UNU-IIST-eGov-course-XML-91
XML-ийн ерөнхий төсөөлөл: SGML
1978 GML ажлын хэсэг Goldfarb ба GCA Gen-Code хорооноос American National Standards Institute (ANSI) бүрэлдэн бий болсон .
1986 SGML –Standard Generalized Markup Language –нь ISO стандартаар (8879:1986) баталгаажисан. SGML-аппликашн үүсгэх синтакс тодорхойлогдсон ба тодорхой тэмдэгтийн хэлүүдийг DTD-ийн горим руу шилжүүлсэн.
UNU-IIST-eGov-course-XML-92
XML ерөнхий төсөөлөл: HTML
1989 Tim Berners-Lee анх WWW санаачилсан– access интернэтийн том хэмжээний текст руу ханддаг систем :
1. HTTP – HyperText Transfer Protocol
2. URL – Uniform Resource Locator
3. HTML – HyperText Markup Language
HTML нь том хэмжээний текст документуудын SGML документ төрөлтэй, энгийн бөгөөд хялбар програм.
UNU-IIST-eGov-course-XML-93
XML-ийн ерөнхий төсөөлөл: XML ирээдүй
1994 C. M. Sperberg-McQueen and Robert F. Goldstein,
„HTML to the Max: A Manifesto for Adding SGML
Intelligence to the WWW”, 2nd WWW Conference:
• HTML үүсэхэд GenCode-ийн зарчим нь үнэхээр их хэрэг болсон.
• Adapt SGML for the Web? SGML is too complex.• ямар нэгэн шинэ хэл хэрэгтэй, HTML шиг, гэхдээ
SGML-ийн ерөнхий дүр төрхийг хадгалсан байх шаардлагатай.
• XML ирээдүйтэй.
UNU-IIST-eGov-course-XML-94
XML ийн ерөнхий ойлголт: W3C бүрэлдэн бий болсон
1994 WWW Consortium ийг MIT ийн ¼ ийг эзэмшидэг MIT, INRIA and Keio , Tim Berners-Lee-ийн удирдан анх үндэслэсэн.
1995 HTML ажлын хэсэг W3C тийн зохион байгуулалтанд орсон.
1996 XML Activity Area, Phase 1, W3C тийн зохион байгуулалтанд орсон.
1997 Tim Bray ба C.M.Sperberg McQueen редакторууд. XML-ийн анхны төсөлийг буюу санаа төсөөллийг зохион байгуулж боловсруулсан,
1998 HTML 4.0 W3C Recommendation болсон. HTML ажлын хэсэг XHTML шинэчилсэн.
UNU-IIST-eGov-course-XML-95
XML ерөнхий ойлголт : XML нь W3C ийн зохион байгуулалтанд орсон
1998 XML 1.0 W3C Recommendation болсон .анхны удаа, XML ээс хамаардаг W3C-ийн активийн 80% хамарч байсан.
1998 XML анхны хэрэглээ: Mathematical Markup Language (MathML) ба Chemical Markup Language (1997).
1998 XML media төрлүүд text/xml ба application/xml уудыг Internet Engineering Task Force (IEFT) санал болгон дэвшүүлсэн.
UNU-IIST-eGov-course-XML-96
XML ерөнхий ойлголт : XML хэрэгжүүлэлт
1998 DOM W3C Recommendation болсон.
1999 Namespaces in XML нь W3C Recommendation болсон.
1999 RDF нь W3C Recommendation болсон.
1999 Internet Explorer 5.0 –XML-ийг дэмжидэг анхны үндсэн браузер.
1999 “XML and the Second-Generation Web” –ийг АНУ эрдэмтэд болох Jon Bosak ба Tim Bray нар анх хэвлэж гаргасан.
UNU-IIST-eGov-course-XML-97
XML ерөнхий ойлголт : Open-Source XML Initiatives
1999 Apache XML төсөл эхэлсэн, тун удалгүй XML цэсүүд: xerces, xalan, cocoon, batik, гэх мэт бий болсон.
1999 ebXML – worldwide төсөл, XML бизнесийн төслүүд хэрэгжиж эхэлсэн:• UN/CEFACT (Trade Facilitation and Electronic Business
organization) and• OASIS (Organization for the Advancement of Structured
Information Standards).
UNU-IIST-eGov-course-XML-98
XML ерөнхий ойлголт : Хэрэгжүүлэлтүүд
1999 XSL and XPath W3C Recommendations болсон.
2000 XHTML W3C Recommendation болсон.
2000 Opera 4.0 XML дэмждэг болсон.
2000 Netscape 6.0 нь XML дэмждэг болсон.
2000 Amaya 4.0 HTML, XHTML, MathML, SVG дэмждэг хэлбэрээр анх бүтээгдсэн.
UNU-IIST-eGov-course-XML-99
XML ерөнхий ойлголт : W3C Recommendations
2001 XML Schema
2001 XLink and XBase
2001 Scalable Vector Graphics
2001 XSL Formatting Objects
2001 XML Information Sets
Энэ нь бодит түүх юм Түүний гэрч нь өнөөдөр юм
W3C
UNU-IIST-eGov-course-XML-101
Програм
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-102
W3C-н нээлт
• W3C-г 1994 онд Тим Бернер гэдэг хүн Массажистийн сургуулийн технологын тусламжтай шинжлэх ухааны компьютер дээр хийжээ.
• 1995 онд Европын холбоо INRIA (автомат цахилгаан тооллуурыг дахин сэргээхч үндэсний сургууль) дээр W3C-н анхны үйл ажилгаа явуулсан.
• 1996 Япон улсын Кео сургууль дээр Аазын анхны үйл ажилгаа явуулсан.
• 2003онд INRIA компьютер болон математекийн дахин сэргээх үүргийг хүлээн авсан.
UNU-IIST-eGov-course-XML-103
W3C-н хуваагдал хэсэг
W3C бүрдэл:
• 24н цагын томоохон ажлын хэсэг.• Их бүрдэл нь: корпораци, удирдлагын агентлаг, сургуулиуд.
W3C-н Web технологийн удирдамж, зөвөлгөө хариуцсан мэргэжилтнүүдийн томоохон тасаг байдаг.
UNU-IIST-eGov-course-XML-104
Demo: Exploring W3C Site
> opera http://www.w3.org/
> opera http://www.w3.org/Consortium/
> opera http://www.w3.org/Consortium/Member/List
> opera http://www.w3.org/People/
UNU-IIST-eGov-course-XML-105
W3C-н зөвлөгөө
• W3C –н тодорхой хуультай бөгөөд тэрхүү хуулийн зөвлөгөө, зөвлөмжийн дагуу оруулдаг.
• Баталгааны хэсэг:
once a consensus is reached on a particular specification, there will be sufficient vendor and developer support so that compliance results from “peer pressure”
• Энэ хэсэг нь хамгын сайн болсон ба одоогоор хэрэгжиж байгаа тогтоомж.
UNU-IIST-eGov-course-XML-106
W3C зөвлөгөөний тухай
W3C –н зөвлөгөө заавар нь олон хэл дээр тодорхой, нарийн бичсэн байдаг.
• Та бүхэнд уншихад амар биш байсан болхоор W3C тайлбарлан хөгжиж XML болсон.
• 400+ XML гэдэг ном байдаг ба энэ ном нь W3C –н зөвлөгөөний тухай бүлэг бүрд нь тодорхой ойлгомжтой гаргасан болно.
UNU-IIST-eGov-course-XML-107
Demo: XML Resources
> opera http://www.w3.org/TR/
> opera www.amazon.com
> opera www.xml.org
UNU-IIST-eGov-course-XML-108
W3C Зөвлөгөөний хэсэг
W3C-с үнэлгээ нь ихэнхдээ урт хугцааны үйл явцаас гарч ирэх үр дүн юм.
1. Шинэ технологын санааны талбар нь:– гишүүн,– industry or– W3C-н бүлэг.
Гэх мэт W3C –н товчлол болон хэвлэгдэж болно.
2. Энэ хаяга нь Activity Area гарах нэмэгдхүүн болно, эсвэл хэрэв зохистой нэг ч үгүй бол шинэ Activity Area байгуулдаг.
UNU-IIST-eGov-course-XML-109
W3C Зөвлөгөөний хэсэг
3. Энэ үйл ажилгааны хувирлалт:– Ажлын нэг групп,– онцгой, тусгай групп– Coordination групп.
4. Хэрэв санал төлөвлөгөө үүсэх үед, ажлын групп эцсийн Draft ажлыг бүтээдэг.
5. W3C –н гол ажлын хэсэг буюу тэжээлийн савын гишүүн, аж үйлдвэрийн өсөлт, дэвшилийн тусгай групп байдаг.
UNU-IIST-eGov-course-XML-110
W3C Зөвлөгөөний хэсэг
6. Subsequent сэргэлт ба хэвлэлийн газар:– Өдөр бүрийн өглөө,– Хэвлэлийн ажлын групп дараагын халаагаа иртэл ажилдаг
7. The Last Working Draft can be:– зориглосон ажлын гол санааний олон ажлыг илгээгч, сэргээгч
групп – Candidate зөвөлгөө зэрэг байдаг.
UNU-IIST-eGov-course-XML-111
W3C Зөвлөгөөний хэсэг
8. Candidate зөвөлгөөний аж үйлдвэрлэлийн тухай:– Их илүү, олон үйлдвэр ба– техник тэжээлийн хэсэг
Энд хэвлэлийг гаргах зөв зохион байгуулалдтай групп үргэлж байдаг.
9. Гадаад талын туршлаг бүхий үр дүний дагвар нь:– Эцсийн дүндээ Candidate зөвөлгөөн дотор Proposed
зөвөлгөө бий болсон– Энэ нь хэвлэлийг түгээх үйл ажилгаанд тусалдаг.
UNU-IIST-eGov-course-XML-112
W3C Зөвлөгөөний хэсэг
10.Proposed зөвөлгөөний хэсгийг 3н сарын турш ажилаад сүүлийн сард нь бусад бүлгүүдэд тайлагнадаг.
11.Сонголтын гишүүн болох W3C зөвөлгөөний хэсэгт:– Техник солих бэлэн хэсэг– working draft-н буцаах ажил – Үл хүлээн авах (drop from W3C activities).
UNU-IIST-eGov-course-XML-113
Хаяга: W3C Зөвөлгөө
> opera http://www.w3.org/TR/
> opera http://www.w3.org/TR/#Recommendations
> opera http://www.w3.org/TR/#PR
> opera http://www.w3.org/TR/#PER
> opera http://www.w3.org/TR/#CR
> opera http://www.w3.org/TR/#WD
UNU-IIST-eGov-course-XML-114
W3C Domain
W3C –н үйл ажилгааны түгээлтийн 5н Domain байдаг ба үүнд:
1. Architecture Domain: хүчин чадал бага технологоор хийсэн Web (e.g. HTTP, XML, DOM, Jigsaw).
2. Document Formats Domain: тухайн сонгсон хэл дээр Web-н агуулгыг байгуулж чаддаг (e.g. SVG, XHTML, CSS) зэрэг Web-үүд.
UNU-IIST-eGov-course-XML-115
W3C Domains
3. Interaction Domain: энэ нэр нь харилцан сайжруулсан үйлдэл хийдэг Web(mobile access, multimedia, voice browsers)
4. Technology and Society Domain: төрийн хууль эрх зүй болон төрийн бодлого, олон нийтийн оролцоотой үйл ажилгаанд хамаатай Domain. (encryption).
5. Web Accessibility Initiative: тахир дутуу хүмүүсийн тэтгэлэг тусламжинд ашиглах нууцлалтай ерөнхий Web (web content guidelines).
UNU-IIST-eGov-course-XML-116
W3C XML Ажлын групп
XML үйл ажилгааны 5н групп:
1. XML гол ажлын групп: XML, ерөнхий бүтэц.
2. XML схемийн групп: схемийн хэл.
3. XML холбогч ажлын групп: XPointer, XLink, XML Base
4. XML тэмдэгт ажлын групп: байгуулгын асуулттай өгөгдлийн загвар.
5. XML зохциулагч групп: XML ажлын идвэхжилийн бүх зохциулалт.
UNU-IIST-eGov-course-XML-117
W3C XML ажлын групп
W3C XML үйл ажилгааны 3н групп:
1. XSL Ажлын групп: XML тээвэрлэлт болон гадаад асуудал.
2. DOM Ажлын групп: баримт бичгийн загвар боловсруулах.
3. Web Services Ажлын групп: XML-үндсэн протокол, урьдчилан төлөвлөлт.
UNU-IIST-eGov-course-XML-118
Хаяга: W3C Ажлын групп
opera http://www.w3.org/Consortium/Activities
opera http://www.w3.org/XML/
Unicode
UNU-IIST-eGov-course-XML-120
Program
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-121
XML болон Тэмдэгт түлхүүр үг
Түлхүүр үгний асуудал:
• XML хийсний дараа шаардагдах, энэ XML баримтанд шаардагдах хамгын сайн тэмдэгт (UCS).
• XML үйл ажилгааны хийх ёстой тулгуур UTF-8 ба UTF-16 нь UCS-н түлхүүр үгнүүд болно.
• UCS-н түлхүүр үгэнд ихэвчлэн тэмдэгтийг тулгуурлан ашигладаг, гэхдээ заавал тэмдэгт ашиглах шаардлаггүй.
Ямар утгатай бэ?
UNU-IIST-eGov-course-XML-122
Түлхүүр үгний нэр томъёо
character: Латин цагаан толгойн тэмдэгт, нэг оронтой тоонууд, тэмтэгтүүд.
character set: туайн сонголтын группын дагуу сонгох ба сонгохдоо: Латнин үсгэн тэмдэгт, Хятад дүрс зураг, тэмдэгтүүдээс сонгон.
coded character set: тэмдэгтийг ашиглах үед хаана байрлуулсанаас хамааран ASCII эсвэл Unicode гарна.
UNU-IIST-eGov-course-XML-123
Тэмдэгтийг сонгохдоо
Тэмдэгтийг сонгохдоо:
• ISO ба• Unicode Consortium .
Supports most of the existing written languages.
UNU-IIST-eGov-course-XML-124
UCS-н Scripts праграмын тэмдэгт
basic latin 0000-007F
latin supplement 0080-00FF
latin extended A 0100-017F
latin extended B 0180-024F
IPA extensions 0250-02AF
spacing modifier 02B0-02FF
diactritical 0300-036F
greek 0370-03FF
cyrillic 0400-04FF
armenian 0530-058F
hebrew 0590-05FF
arabic 0600-06FF
syriac 0700-074F
thanaa 0780-07BF
devanagari 0900-097F
bengali 0980-09FF
gurmukhi 0A00-0A7F
gujarati 0A80-0AFF
oriya 0B00-0B7F
tamil F 0B80-0BFF
…
UNU-IIST-eGov-course-XML-125
Бичиг, Хэл
Нэг бүхэл бичиг
Нэг бичигний тусламжтай нэг хэл бүтдэг
Крилээр бичэх тэмдэгт,
1. Russian,
2. Bulgarian,
3. Ukrainian.
Зарим ангид хэлэнд
Японыг сонговол:
1. Kanji
2. Hiragana
3. Katakana and
4. Romaji scripts.
UNU-IIST-eGov-course-XML-126
Demo: Greek Letters in Unicode
> cd "demos/greek letters in unicode"
> acroread U0370.pdf
> opera polish-greek.xml
> iexplore polish-greek.xml
UNU-IIST-eGov-course-XML-127
UCS Тээвэрлэлтийн хэлбэр: UTF-8
UTF-8 – 8 түлхүүр үг
• ойролцоогоор 1-4 дарааллыг тэмдэгтийн тусламжтай олно.
• UTF-8 эсвэл зарим сонголт ASCII Латин бичгээр тодохойлогдон.
• Default for XML.
UNU-IIST-eGov-course-XML-128
UCS Тээвэрлэлтийн хэлбэр: UTF-16
UTF-16 – 16 –н түлхүүр үг
• Each character дээд FFFF is encoded as a single 16-bit хэмжээ.
• Characters above FFFF are represented as pairs of 16-bit values: high- and low-surrogates.
• Starts with a single character (Byte Order Mark):
FFFE – most significant byte first
FEFF – most significant byte second
UNU-IIST-eGov-course-XML-129
Surrogates
D800-DFFF is a surrogate block:
D800-DBFF low surrogate
DC00-DFFF high surrogate
A pair of surrogate characters (L,H) represents a character:
(H - D800) * 400 + (L - DC00) + 10000
in the range 10000-10FFFF.
UNU-IIST-eGov-course-XML-130
Тэмдэгтийн битүүдийн дараалал
BOM – битүүдийн дараалал
Документийн анхны тэмдэгт төрөл :
• FFFE – документ UTF-16 аар кодлогдсон, том-endian
• FEFF – документ UTF-16 аар кодлогдсон, жижиг-endian
• бусад character – документ UTF-8 аар кодлогдсон
UNU-IIST-eGov-course-XML-131
Example: UTF-16 ба UTF-8
“Gulliver” in UTF-16 and UTF-8:
G u l l i v e r
FE FF 00 45 00 75 00 6C 00 6C 00 69 00 76 00 65 00 72
FF FE 45 00 75 00 6C 00 6C 00 69 00 76 00 65 00 72 00
45 75 6C 6C 69 76 65 72
UNU-IIST-eGov-course-XML-132
Demo: UTF-16 Encoding
> cd "demos/utf16 encoding"
> ls
doc.xml
> xvi32 doc.xml
> opera doc.xml
> iexplore doc.xml
UNU-IIST-eGov-course-XML-133
XML 1.0-н тэмдэгт хувьсахч
0001-0008 forbidden
0009 allowed – TAB
000A allowed – NEW LINE
000B-000C forbidden
000D allowed – CARRIAGE RETURN
000E-001F forbidden
0020 allowed – SPACE
0021-D7FF allowed
D800-DBFF forbidden – low surrogate
DC00-DFFF forbidden – high surrogate
E000-FFFD allowed
10000-10FFFF allowed – encoded as pairs of surrogates
XML 1.1 permits representation of arbitrary Unicode characters.
UNU-IIST-eGov-course-XML-134
XML ба UCS
XML онцлох хэсэг:
• XML зарлахын тулд UTF-8 ба UTF-16 түлхүүр үгнүүдийг хэрэглэнэ.
XML багтаамж:
• XML үйл ажилгааны сонголтын хувьсахч түхүүрийг агуулдаг.• Эдгээрийг тус тусд нь илэрхийлэх encoding чанар чанар
байдаг.
UNU-IIST-eGov-course-XML-135
UCS-н Alternative програмын түлхүүр үг
iso-8859-1 Western Europe
iso-8859-2 Central Europe
iso-8859-3 Southern Europe
iso-8859-4 Northern Europe
iso-8859-5 Cyrillic
iso-8859-6 Arabic
iso-8859-7 Greek
iso-8859-8 Hebrew
iso-8859-9 Turkish
iso-8859-10
Nordic
... ...
big5 traditional Chinese
gb2312 simplified Chinese
euc-jp Japanese (unix)
euc-kr Korean (unix)
koi8-r Russian
koi8-u Ukrainian
tis-620 Thai
windows-* Windows
cp-* IBM
us-ascii basic ASCII
… ...
XML
UNU-IIST-eGov-course-XML-137
Program
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-138
XML 1.0 – W3C зөвөлгөөний хэсэг
• history:
– 1998онд эхний хэвлэл– 2000 засаж залруулсан хэвлэл
• editors:
1. Tim Bray (Textuality and Netscape),
2. Jean Paoli (Microsoft),
3. C. M. Sperberg-McQueen (WorldWideWeb Consortium),
4. Eve Maler (Sun Microsystems).
UNU-IIST-eGov-course-XML-139
XML 1.0 – W3C зөвөлгөөний хэсэг
• abstract:
The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML has been designed for ease of implementation and for interoperability with both SGML and HTML.
• publication:
http://www.w3.org/TR/REC-xml
UNU-IIST-eGov-course-XML-140
XML 1.0 – W3C зөвөлгөөний хэсэг
The core of the document is presentation of EBNF production
rules to define the legal syntax of XML documents:
document ::= prolog element Misc*
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
XMLDecl ::= ’<?xml’ VerInfo EncodingDecl? SDDecl? S? ’?>’
VerInfo ::= S ’version’ Eq ("’" VerNum "’" | ’"’ VerNum ’"’)
VerNum ::= ([a-zA-Z0-9_.:] | ’-’)+
Eq ::= S? ’=’ S?
S ::= (#x20 | #x9 | #xD | #xA)+
There are also references to the behavior of XML processors:
Processors may signal an error if they receive documents labeled with versions they do not support.
UNU-IIST-eGov-course-XML-141
XML 1.1 – W3C Candidate зөвөлгөөний хэсэг
Reasons for the new version:
• to keep up with the changing Unicode standard• to add two more line-end characters• to permit representation of arbitrary Unicode characters
UNU-IIST-eGov-course-XML-142
XML 1.1 – W3C Candidate зөвөлгөөний хэсэг
1.1 дэвшүүлэх зөвөлгөө:
XML 1.0 тодорхойлолтын нэр нь боломж олголгүй хориглох ба бүх зүйлийг нь эс зөвшөөрөн хориглож байдаг, харин XML 1.1 нэр бол шинэ загвар хийх ба бүх зүйлийг хориглолгүй зөвшөөрч (тодорхой учир шалтгааны тухай) боломж олгож байдаг.
UNU-IIST-eGov-course-XML-143
Demo: XML W3C зөвөлгөөний хэсэг
> opera http://www.w3.org/TR/REC-xml
> opera http://www.w3.org/TR/xml11/
UNU-IIST-eGov-course-XML-144
XML загварын зорилго 1
шинэ загварын зорилгын тухай XML (XML 1.0 W3C-н зөвөлгөө):
1. XML саадгүй ашиглах Internet-тэй болох.
2. XML өргөн хүрээтэй олон зүйлийн хүсэлт гаргах.
3. XML програмыг SGML тэй холбож тааруулах
4. XML програм бичих үйл ажилгааг хялбар болгох.
UNU-IIST-eGov-course-XML-145
XML загварын зорилго 2
5. Албан бус өвөрмөц шинжүүдийн үүсгэгчийг хамгын бага болгох
6. XML хүнлэг буюу оюунлаг, өөрөө сэтгэх програмын бичлэгийг арилгах.
7. XML загварыг хурдан, урьдчилсан бэлтгэлтэй болгох.
8. XML загварыг товч бөгөөд албан ёсны хэлбэр болгох.
9. XML –н програмын бичлэгийг хялбар бүтээх.
10.XML –н чухал үнэлгээнд гарах алдааг туйлын бага болгох.
UNU-IIST-eGov-course-XML-146
Жишээ: улсад нэвтрэх карт \веез\
Оюутны ангилалын карт
• улсад нэвтрэх карт \веез\• Иргэн Jan Kowalski• XML-эр дотогш хөрвүүлнэ.
UNU-IIST-eGov-course-XML-147
улсад нэвтрэх картын тэмтэгт үг
XML програмын бичлэгийн falls into two categories:
• markup – нь XML 12 ялгаатай олон картын төрлийг бахтаадаг.
• character data – хэл зүйн ялгаатай эсвэл ялгаагүй хэсгийг тодорхойлдог
UNU-IIST-eGov-course-XML-148
Жишээ: XML-н улсад нэвтрэх карт \веез\
Тэмдэгт өгөгдөл:
• Kowalski,• 24-630 Gdask, Poland
Хамгын зөв өгөгдөл.
<?xml version="1.0"?><!DOCTYPE card SYSTEM "card.dtd"><!-- arrival card for Jan Kowalski --><card type="arrival"><visitor><name type="surname">Kowalski
</name>...
</visitor><address where="home">24-630 Gdańsk, Poland
</address>...<signature sigfile="mysig"/>
</card>
UNU-IIST-eGov-course-XML-149
XML үнэлгээ: 1-8
no нэр example
1 start tags <visitor>
2 end tags </visitor>
3 empty-element tags <signature/>
4 entity references ©right;
5 character references ń
6 comments <!-- whatever -->
7 CDATA sections <!CDATA[ whatever ]]>
8 document type declarations <!DOCTYPE ... >
UNU-IIST-eGov-course-XML-150
XML үнэлгээ: 9-12
no нэр example
9 processing instructions <?myApp ... ?>
10 XML declarations <?xml version= ... ?>
11 text declarations <?xml encoding= ... ?>
12 white space at the top level <?xml version="1.0"?>
<card>...</card>
UNU-IIST-eGov-course-XML-151
Тэмдэгтийн өгөгдлийн ялгаагүй хэсэг
Тэмдэгт өгөгдлийн ялгаагүй 2 тайлбар:
• ялгаагүй (CDATA) –өгөгдлийн толгой файлын entity/character тайлбар :
– entity Тайлбар – ©right;– character тайлбар – ń
жишээний тухай
Morska 24B, 24-630 Gdańsk, Poland
UNU-IIST-eGov-course-XML-152
Хэл зүйн өгөгдөл
• Хэл зүйн (PCDATA) – тэмдэгт өгөгдлийн entity тайлбартай буцаах хэсгийн тодорхойлолт
жишээний тухай:
Morska 24B, 24-630 Gdańsk, Poland
0144 (hexadecimal) тэмдэдгтийн тухай өгөгдлийн дүнгийн хэсэг.
UNU-IIST-eGov-course-XML-153
Demo: тэмдэдгтийн түлхүүр үг
> cd "../cdrom/unicode/Code Charts/"
> acroRd32 U0100.pdf
UNU-IIST-eGov-course-XML-154
Бичэгдэл
Бичэгдэлийн дэс дараалал:
• Эхлэл бүлэг (албан журмын)• елемэнт (албан журмын)• Олон төрлийн үнэлгээ (давталт)
document ::= prolog element Misc*
UNU-IIST-eGov-course-XML-155
Жишээ: XML бичлэгийн бүтэц
prolog ->
element ->
misc ->
<?xml version="1.0"?>
<!DOCTYPE card SYSTEM "card.dtd">
<card type="arrival">
<visitor>
<name type="surname">
Kowalski
</name>
...
</visitor>
...
</card>
<!-- end of document -->
UNU-IIST-eGov-course-XML-156
Task: Prepare a Place on Your Hard Disk
> cd ‘‘a convenient location’’
> mkdir course course/tasks course/tasks/card
> cd course/tasks/card
UNU-IIST-eGov-course-XML-157
Заавар: бичих, хадгалах, орох бичэгдэл
• Бичлэгийн сонгох засварлалын тухай бичэгдэл:
<?xml version="1.0"?>
<card type="arrival">
<visitor>
<name type="surname">your surname</name>
<name type="given">your given names</name>
</visitor>
</card>
• Save card. Xml- хадгалах карт• Open хадгалах карт.
UNU-IIST-eGov-course-XML-158
Çîðèëãî: хохирол ба засварлах бичэгдэл
• Эх хэсэг:
<xml version=2.0>
<card type=arrival>
<visitor>
<name type="surname">your surname
<name type="given">your given names</name>
</guest>
</card>
• Save ба re-open.• Алдааòàé áîë анхааруулгà ãàð÷ èðíý.
UNU-IIST-eGov-course-XML-159
Зорилт: Өөрчлөлтийн хэв шинжүүд
• Комент нэмэх:
<?xml version="1.0"?><card type="arrival">...</card><!-- the end -->
• Зөөх мэдэгдэл:
<card type="arrival">...</card><!-- the end -->
• Өөрчлөлтүүдийн дараалал:
<!-- the end --><card type="arrival">...</card>
UNU-IIST-eGov-course-XML-160
Жишээ: Тэмдэгтүүдийн товхимол
Тэмдэгтүүдийн товхимол нь доорх хэлуэрүүдээс тогтоно:
• коммент,• Технологийн зааварчиллагаа• Эсвэл хоосон зай
Misc ::= Comment | PI | S
UNU-IIST-eGov-course-XML-161
Жишээ: Тэмдэгтүүдийн товхимол
comment ->
processing instruction ->
whitespace ->
<?xml version="1.0"?>
<!-- arrival card -->
<!DOCTYPE card SYSTEM "card.dtd">
<?myApplication date="12-03-2003"?>
<card type="arrival">
...
</card>
UNU-IIST-eGov-course-XML-162
Character-ууд
D800-DBFF ба FFFE ба FFFF character-ууд:
Char ::= #x9 |
#xA |
#xD |
[#x20-#xD7FF] |
[#xE000-#xFFFD] |
[#x10000-#x10FFFF]
UNU-IIST-eGov-course-XML-163
Хоосон зай
Хоосон зай нь нэг эсвэл нэгээс илүү хоосон зайнууд, шулуун шугам, буюу табуудаас бүрддэг:
S ::= (#x20 | #x9 | #xD | #xA)+
Character-ууд нь цаашаа хуваагддаг. . .
UNU-IIST-eGov-course-XML-164
Character-ууд: Үсэгнүүд болон тоонууд
1. Үсэгнүүд
Letter ::= BaseChar | Ideographic
BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] |...
Ideographic ::= [#x4E00-#x9FA5] | #x3007 | ...
2. тоонууд
Digit ::= [#x0030-#x0039] | ...
UNU-IIST-eGov-course-XML-165
Character-уудыг нэгтгэх
3. Character-уудыг нэгтгэх– үндсэн character-ийн өмнө зураастай хослож нэгтгэж ашигладаг.
CombiningChar ::= [#x0300-#x0345] | ...
UNU-IIST-eGov-course-XML-166
Демо: Character чартын юникодыг шинжлэх
> cd "../cdrom/unicode/Code Charts/"
> acroRd32 U0000.pdf
> acroRd32 U4E00.pdf
> acroRd32 U0300.pdf
UNU-IIST-eGov-course-XML-167
XML нэрүүд
Нэр нь үсгээр эхэлдэг, онцлон тэмдэглэх эсвэл colon, ба тасралтгүй үсэг , тоон загвар зэргүүдийг доорх жишээнд өгөгдсөн хэлбэрээр тэмдэглэдэг.
NameChar ::=
Letter | Digit |
’.’ | ’-’ | ’_’ | ’:’ |
CombiningChar
Name ::= (Letter | ’_’ | ’:’) (NameChar)*
Nmtoken ::= (NameChar)+
UNU-IIST-eGov-course-XML-168
Жишээ: XML нэрүүд
wrong beginning ->
illegal character ->
reserved for namespaces ->
reserved for XML ->
->
->
strange but correct ->
1class
firstclass
first&class
first_class
first:class
first.class
xml.class
Xml.class
XML.class
class.xml
class-Xml
class_XML
_
Нэрүүд xml ээр эхэлдэг эдгээрийн дээр дүрсэлсэнээс харж болно.
UNU-IIST-eGov-course-XML-169
Task: Modify the Names
• Change all start tags into uppercase, re-open:
<?xml version="1.0"?>
<CARD type="arrival">
...
</card>
• Add the my prefix to card, re-open:
<?xml version="1.0"?>
<my:card type="arrival">
...
</my:card>
UNU-IIST-eGov-course-XML-170
Комментууд
Бичлэг:
document ::= prolog element Misc*Misc ::= Comment | PI | S
Коммент нь үгэн стрингээр зааглагдсан character-уудын дараалал юм <!-- and --> тэр нь агуулдаггүй --:
Comment ::= ’<!--’((Char - ’-’) | (’-’ (Char - ’-’)))* ’-->’
Нэг үгээр хэлбэл коммент нь тэмдэгтүүдийн гаралт юм. Тэдгээр нь character өгөгдлийн хэсэг бас биш юм.
UNU-IIST-eGov-course-XML-171
Жишээ: Комментууд
Алдаагүй Коммент->
алдаатай Коммент ->
<?xml version="1.0"?>
<!-- arrival card for Jan Kowalski -->
<card type="arrival">
...
</card>
<!-- end of document --->
UNU-IIST-eGov-course-XML-172
Зорилт: Документэд коммент нэмэх
• Таны документэд коммент нэмэх :
<?xml version="1.0"?>
HERE
<card type="arrival">
HERE
<visitor>
<name HERE type="surname">your surname</name>
<name type="given">your given names</name>
</visitor>
</card>
HERE
• Хадгалах, нээх, шалгах.
UNU-IIST-eGov-course-XML-173
Технологийн ажиллагааны заавар
бичлэг:
document ::= prolog element Misc*
Misc ::= Comment | PI | S
Технологийн ажиллагааны заавар апплекашнуудын зааварчилгаа багтдаг.
UNU-IIST-eGov-course-XML-174
Технологийн ажиллагааны заавар
PI нь дараах зүйлүүдээс тогтоно– энэ зааварчилгааны апплекашн–өгөгдөл нэвтрэх, бүгд энэ дотор байна <? and ?>:
PI ::= ’<?’ PITarget(S (Char* - (Char* ’?>’ Char*)))? ’?>’
PITarget ::=Name - ((’X’ | ’x’) (’M’ | ’m’) (’L’ | ’l’))
PIs документийн character өгөгдлийн хэсэг биш, гэвч энэ нь аппликашн руу нэвтрэх ёстой.
XML тэмдэглэд PI target-ийн зарлалтын томьёолыг ашигласан байх ёстой .
UNU-IIST-eGov-course-XML-175
Жишээ: Технологийн ажиллагааны зааварчилгаа
processing instruction ->
processing instruction ->
<?xml version="1.0"?>
<?oneApp date="12-03-2003"?>
<?anotherApp whatever?>
<card type="arrival">
...
</card>
UNU-IIST-eGov-course-XML-176
Зорилт: Технологийн ажиллагааны зааварыг нэмэх
чиний документэд хоёр боловсруулалтыг нэмдэг:
• Майл апплекашнд нэмэх
<?mail message="coming back" date="30.09.2003"?>
• stylesheet процессд нэмэх
<?xml-stylesheet type="text/css"?>
Дээрх хоёр үйл ажиллагааг нээх болон хадгалахад .
Юу тохиолдож болох вэ?
UNU-IIST-eGov-course-XML-177
Prolog
Reminder:
document ::= prolog element Misc*
пролог нь XML зарлатын сонголтыг агуулдаг, Misc*, сонголт документ төрлийн зарлатуудыг дараах байдлаар гүйцэтгэдэг
Misc*:
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
UNU-IIST-eGov-course-XML-178
Жишээ: Prolog
XML declaration ->
document type declaration ->
processing instruction ->
comment ->
<?xml version="1.0"?>
<!DOCTYPE card SYSTEM "card.dtd">
<?MyApp whatever ?>
<!-- silly comment -->
<element>
...
</element>
UNU-IIST-eGov-course-XML-179
XML зарлалт
Тэр документуудыг индексийг XML-д бичдэг.
Энэ синтакстай адил төстэй боловсруулалтыг “xml” target-аар хийдэг:
XMLDecl ::=
’<?xml’ VersionInfo EncodingDecl?
SDDecl? S? ’?>’
энэ документийн хамгийн эхэнд байх ёстой.
гурван атрибутыг зөвшөөрдөг.
UNU-IIST-eGov-course-XML-180
XML Version Declaration
1. XML –ийн хувилбарыг ашигладаг:
VersionInfo ::=
S ’version’ Eq
("’" VersionNum "’" | ’"’ VersionNum ’"’)
Eq ::= S? ’=’ S?
VersionNum ::= ([a-zA-Z0-9_.:] | ’-’)+
Одоогоор , Ирээдүйд зөвхөн 1.0 гэсэн хувилбарыг л зөвшөөрнө., автомат хувилбарыг хүлээн зөвшөөрдөг.
UNU-IIST-eGov-course-XML-181
XML Standalone Declaration
2. Документийг ганцааранг нь парсинг хийх боломж байдаг уу?
Энд гадаад зарлалтыг тооцох шаардлагатай юу
SDDecl ::=
S ’standalone’ Eq
(("’" (’yes’ | ’no’) "’") |
(’"’ (’yes’ | ’no’) ’"’))
Хоёр боломж байдаг:
– yes – Гадаад тэмдэгтийн зарлалтгүй байх
Дефаулт биш
UNU-IIST-eGov-course-XML-182
XML кодчлолын зарлалт
3. Документэд Character кодчлолыг ашигладаг:
EncodingDecl ::=
S ’encoding’ Eq
(’"’ EncName ’"’ | "’" EncName "’" )
EncName ::=
[A-Za-z] ([A-Za-z0-9._] | ’-’)*
• XML боловсруулалтууд нь зөвхөн UTF-8 ба UTF-16 дэмждэг .• Кодлох нэрийг IANA-р регистэрлэдэг , бусад тохиолдолд x-.
Ээр эхлэх ёстой• Хэрэв документ нь BOM ээр эхлээгүй, мөн кодчлолын зарлатгүй
бол , UTF-8 ийг ашиглах ёстой.
UNU-IIST-eGov-course-XML-183
Жишээ: XML зарлалт
Хамгийн бага утгаар зарлах ->
Шинэ хувилбарыг төсөөлөх ->
буруу declaration ->
standalone document ->
Зайлшгүй шаардлагатай биш ->
Зүүн европийн кодчлол ->
standalone, EE encoding ->
<?xml version="1.0"?>
<?xml version="1.1"?>
<?xml standalone="yes"?>
<?xml version="1.0" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="iso-8859-2"?>
<?xml version="1.0" encoding="iso-8859-2"
standalone="yes"?>
UNU-IIST-eGov-course-XML-184
Зорилт: Хувилбар ба кодчлолын зарлалтууд
1. Хувилбарыг 1.1 : өөрчилөх
<?xml version="1.1"?>
2. Хувилбарын атрибутыг устгах:
<?xml?>
3. UTF-8 кодыг нэмэх :
<?xml version="1.0" encoding="UTF-8"?>
4. UTF-16 кодыг өөрчлөх
UNU-IIST-eGov-course-XML-185
Task: Standalone Declaration
1. add to card.xml:
– declaration for entity text– entity reference &text;– declaration standalone="yes"
<?xml version="1.0" standalone="yes">
<!DOCTYPE card [<!ENTITY text "silly text">]>
<card type="arrival">
...
&text;
</card>
2. re-open the file
UNU-IIST-eGov-course-XML-186
Task: Play with Standalone Declaration
3. Гадаад файл үүсгэх card.dtd:
<!ENTITY text "silly text">
4. өөрчлөх card.xml энэ файланд хандаж:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE card SYSTEM "card.dtd">
<card type="arrival">
...
&text;
</card>
5. Нээх ба засварлах card.xml
UNU-IIST-eGov-course-XML-187
Документ төрлийн зарлалт
Сэргээн санах:
document ::= prolog element Misc*
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
Документ төрлийн зарлалт:
• документийн үндсэн элементийн нэрүүд• документийн классуудын дүрэм нь тэмдэгтийн зарлалтууд
болон цэгүүдийг 2 ууланг нь агуулдаг
UNU-IIST-eGov-course-XML-188
документ төрлийн зарлалт
Зарлатын горим:
doctypedecl ::=
’<!DOCTYPE’ S Name (S ExternalID)? S?
(’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’
• Name нь документийн үндсэн элемент
• ExternalId нь документийн гадаад DTD-г дүрсэлдэг
• [...] д документийн дотоод DTD агуулагддаг
UNU-IIST-eGov-course-XML-189
документ төрлийн зарлалтын тодорхойлолт
Документ төрөл:
• declaration – тэмдэгт doctypedecl -ээр холбогддог/агуулдаг документ төрлийн тодорхойлолт
• definition – документуудын класс дүрслэлийн горимууд (DTD): inside markupdecl or pointed by ExternalID
DTD = документ төрлийн тодорхойлолт
DTD нь XML ашигласан хэлний дүрмийг тодорхойлж өгдөг.
Дараагийн бүлэгт энэ тухай нарийн авч үзнэ.
UNU-IIST-eGov-course-XML-190
Гадаад документ төрлийн зарлалт
Гадаад DTD is pointed by ExternalId, which starts with the
keyword SYSTEM or PUBLIC:
ExternalID ::=
’SYSTEM’ S SystemLiteral |
’PUBLIC’ S PubidLiteral S SystemLiteral
UNU-IIST-eGov-course-XML-191
Систем документ төрлийн зарлалт
XML нь синтаксд хязгаар тогтоодоггүй
SystemLiteral ::=
(’"’ [ˆ"]* ’"’) | ("’" [ˆ’]* "’")
Файлын нэр буй замыг заадаг URL.
UNU-IIST-eGov-course-XML-192
Жишээ: Систем зарлалт
<!DOCTYPE card SYSTEM "card.dtd">
<!DOCTYPE card SYSTEM "/usr/local/dtds/card.dtd">
<!DOCTYPE card SYSTEM "http://www.w3c.org/card.dtd">
UNU-IIST-eGov-course-XML-193
Нийтлэг документ хэлбэрийн зарлалт
PubidLiteral байнга ерөнхий формал аргаар дууддаг.
PubidLiteral ::=
’"’ PubidChar* ’"’ |
"’" (PubidChar - "’")* "’"
PubidChar ::= #x20 | #xD | #xA |
[a-zA-Z0-9] | [-’()+,./:=?;!*#@$_%]
FPI нь DTD контентийн дүрслэл зохион байгуулалтыг хангадаг, энэ нь физик байрлалаас үл хамаардаг.
UNU-IIST-eGov-course-XML-194
Нийтлэг документ хэлбэрийн зарлалт
Ерөнхий хэлбэрийн синтакс:
<!DOCTYPE card PUBLIC
"-//UNUIIST//Immigration Card Language 1.0//EN"
"http://www.iist.unu.edu/dtds/card.dtd">
where:
• UNUIIST: энэ DTD хадгалж хамгаалдаг институци• -:• Immigration Card Language 1.0: товч бичлэг• EN: хэлийг ашигладаг
UNU-IIST-eGov-course-XML-195
Жишээ : XHTML DOCTYPE
XHTML документийн DOCTYPE :
<!DOCTYPE html
PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
UNU-IIST-eGov-course-XML-196
Жишээ : SVG DOCTYPE
DOCTYPE for an SVG document:
<!DOCTYPE svg
PUBLIC
"-//W3C//DTD SVG 20010904//EN“
"http://www.w3.org/TR/2001/REC-SVG-
20010904/DTD/svg10.dtd”>
UNU-IIST-eGov-course-XML-197
Жишээ: MathML DOCTYPE
DOCTYPE for a MathML document:
<!DOCTYPE math
PUBLIC
"-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">
UNU-IIST-eGov-course-XML-198
Зорилт: Гадаад DTD
1. card.dtd дээр нэмэх:
<!ENTITY text "silly text">
<!ENTITY moreText "more silly text">
2. нэгж болонн reference-уудыг хоёуланг нь оруулах:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE card SYSTEM "card.dtd">
<card type="arrival">
... &text; &moreText;
</card>
3. нээх
UNU-IIST-eGov-course-XML-199
Зорилт: Дотоод DTD
4. Дотоод зарлалтууд 2-ууланг нь оруулах:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE card [
<!ENTITY text "silly text">
<!ENTITY moreText "more silly text">
]>
<card type="arrival">
...
&text;
&moreText;
</card>
5. нээх, өөрчлөх, нээх
UNU-IIST-eGov-course-XML-200
Зорилт : : Дотоод болон гадаад DTD
6. Дотоод зарлалт, өөр гадаад зарлалтуудыг үүсгэх:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE card
SYSTEM "card.dtd" [
<!ENTITY text "silly text">
]>
<card type="arrival">
...
&text;
&moreText;
</card>
7. Буцааж нээх
UNU-IIST-eGov-course-XML-201
Зорилт : : Дотоод болон гадаад DTD хучилт
8. modify card.xml:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE card
SYSTEM "card.dtd" [
<!ENTITY text "yet another silly text">
]>
<card type="arrival">
...
&text;
&moreText;
</card>
9. Буцаж нээх
10.Аль нь илүү их мэдэгдэл авдаг : Дотоод эсвэл гадаад уу?
UNU-IIST-eGov-course-XML-202
11.copy card.dtd to your temp directory:
> copy card.dtd C:/temp
12.modify card.xml, re-open:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE card
SYSTEM "C:/temp/card.dtd" [
<!ENTITY text "yet another silly text">
]>
<card type="arrival">
...
&text;
&moreText;
</card>
Зорилт : : Локал гадаад DTD
UNU-IIST-eGov-course-XML-203
Зорилт: Алсын удирдлагатай гадаад DTD, систем
13.хуулах card.dtd to remote сервер
> ftp ftp.iist.unu.edu> put card.dtd
14.Өөрчлөлт оруулах card.xml, буцааж нээх:
<?xml version="1.0" standalone="no"?><!DOCTYPE card
SYSTEM"http:://www.iist.unu.edu/˜tj/course/card.dtd" [<!ENTITY text "yet another silly text">
]><card type="arrival">
... &text; &moreText;
</card>
UNU-IIST-eGov-course-XML-204
Зорилт: Алсын удирдлагатай гадаад DTD, нээлттэй
15.Өөрчлөлт оруулах card.xml, буцааж нээх<?xml version="1.0" standalone="no"?>
<!DOCTYPE card
PUBLIC
"-//Small Steps Ltd.//Silly DTD Version 1.0//EN"
"http:://www.iist.unu.edu/˜tj/course/card.dtd" [
<!ENTITY text "yet another silly text">
]>
<card type="arrival">
...
&text;
&moreText;
</card>
UNU-IIST-eGov-course-XML-205
Элементүүд
Сануулга:
document ::= prolog element Misc*
Элемент хоосон элементтэй таг буюу хоосон биш элемент:
element ::= EmptyElemTag | STag content ETag
Хоосон биш элемент нь сонгогдсон нэрнүүдийн хувьд нээлттэй болон хаалттай тагуудыг агуулсан контентийн бүрдэлээс тогтдог.
UNU-IIST-eGov-course-XML-206
Эхлэх болон төгсгөх тагууд
Эдгээр тагууд нь гурван төрөлтэй:
1. Эхлэх таг – нэр ба атрибутын жагсаалт нь хоосон зай болон бүх хаалт, хашилт... дотор талын бичлэгээс үл хамаардаг.
2. < and >:
STag ::= ’<’ Name (S Attribute)* S? ’>’
2. Төгсгөлийн таг –нэр нь дотор байрлана</ and >:
ETag ::= ’</’ Name S? ’>’
UNU-IIST-eGov-course-XML-207
Хоосон элементийн таг
3. Хоосон элементийн таг –нэр ба атрибутын жагсаалт нь хоосон зай болон бүх хаалт, хашилт... дотор талын бичлэгээс үл хамаардаг. < and />:
EmptyElemTag ::=
’<’ Name (S Attribute)* S? ’/>’
UNU-IIST-eGov-course-XML-208
Жишээ: Тагууд
start tag ->
end tag ->
empty element tag ->
<card type="arrival">
<address where="home">
24-630 Gdańsk, Poland
</address>
...
<signature sigfile="mysig"/>
...
</card>
UNU-IIST-eGov-course-XML-209
Aтрибутууд
атрибутын мэдэгдэл нь эхлэх болон хоосон элементийн тагуудийг ашигладаг.
Мэдэгдэлүүд нь дараах зүйлүүдээс бүрдэнэ:– нэр,– Тэнцүүгийн тэмдэг– утга
Attribute ::= Name Eq AttValue
UNU-IIST-eGov-course-XML-210
Aтрибутын утга
Утганд нь тэмдэгт дотор character-ийг ашиглахыг эс тооцвол (<, &, and " or ’) characters болон references-ийн дараалал байдаг:
AttValue ::=
’"’ ([ˆ<&"] | Reference)* ’"’ |
"’" ([ˆ<&’] | Reference)* "’"
Доорх хоёр төрлөөр хашилтыг ашиглана:
– Давхар хашилтууд (дотор нь дан хашилт зөвшөөрдөг) эсвэл– Дан хашилт (дотор нь давхар хашилт зөвшөөрдөг)
UNU-IIST-eGov-course-XML-211
Жишээ: Aтрибутууд
attribute in start tag ->
attribute with references ->
attribute in empty element tag ->
<card type="arrival">
<address
where="home"
city="Gdańsk">
...
</address>
...
<signature sigfile="mysig"/>
</card>
UNU-IIST-eGov-course-XML-212
Зорилт: Энгийн форм руу утга буцаах
1. Утга буцаах card.xml руу simple ээс:
<?xml version="1.0"?>
<card type="arrival">
<visitor>
<name type="surname">your surname</name>
<name type="given">your given names</name>
</visitor>
</card>
UNU-IIST-eGov-course-XML-213
Зорилт: Visitor-ийн элементүүдийг нэмэх
2. visitor-д зарлагдсан элементүүдийг нэмэх : sex (хоосон элемент) ба nationality (текстийн элемент)
<?xml version="1.0"?>
<card type="arrival">
<visitor>
<name type="surname">your surname</name>
<name type="given">your given names</name>
<sex type="..."/>
<nationality>...</nationality>
</visitor>
</card>
UNU-IIST-eGov-course-XML-214
Зорилт: Visitor-ийн элементүүдийг нэмэж нэмэлт хийх
3. Нэмэх date анхны буюу эхлэлийн (текст)
<date>...</date>
4. нэмэгдүүлэх date руу day, month ба year элементүүд:
<date type="birth">
<day>...</day>
<month>...</month>
<year>...</year>
</date>
UNU-IIST-eGov-course-XML-215
Зорилт: Travel документэд мэдээлэл нэмэх
5. Travel документэд мэдээлэл нэмэх :
– документын төрөл– документын тоо– Мэдээлэлийн аутор– Мэдээлэлийн огноо
<document>
<type>...</type>
<number>...</number>
<authority>...</authority>
<date>...</date>
</document>
UNU-IIST-eGov-course-XML-216
Зорилт: Travel документийн мэдээлэлийг өөрчлөх
6. Документ үүсгэх type атрибут дээр:
<document type="...">
<number>...</number>
<authority>...</authority>
<date>...</date>
</document>
7. Документ үүсгэх type ба number атрибутууд руу:
<document type="..." number="...">
<authority>...</authority>
<date>...</date>
</document>
UNU-IIST-eGov-course-XML-217
Зорилт: документийн мэдээлэлийг огноог өөрчлөх
8. анхны огноо ба документийн мэдээлэл өөрчлөх:
<card type="arrival">
...
<visitor>
<date type="birth">...</date>
</visitor>
<document type="..." number="...">
<authority>...</authority>
<date type="issue">...</date>
</document>
...
</card>
UNU-IIST-eGov-course-XML-218
Зорилт: Visitor-ийн хаягуудыг нэмэх
9. visitor-ийн home болон мак хаягыг нэмэх:
<card type="arrival">...<address>...</address><address>...</address>
</card>
10.Атрибутыг ашиглан хаягуудын хооронд өөрчлөт хийх where:
<card type="arrival">...<address where="home">...</address><address where="Macao">...</address>
</card>
UNU-IIST-eGov-course-XML-219
Зорилт: Visitor-ийн хаягны мэдээллийг нэмэх
11.хаягны мэдээллийг өргөтгөх руу: street, city, zip, state ба country.
<address where="...">
<street>...</street>
<city>...</city>
<zip>...</zip>
<state>...</state>
<country>...</country>
</address>
UNU-IIST-eGov-course-XML-220
Зорилт: Visitor-ийн гэрийн хаягны мэдээллийг нэмэгдүүлэх
12.өргөтгөх street хаяг : street, house, floor (if any) and flat (if any).
<street>
<street>...</street>
<house>...</house>
<floor>...</floor>
<flat>...</flat>
</street>
UNU-IIST-eGov-course-XML-221
зорилт: Travel-д мэдээлэл нэмэх
13.add travel information: origin (place), mode and flight (if any).
<card type="arrival">
...
<travel>
<place>...</place>
<mode>...</mode>
<flight>...</flight>
</travel>
</card>
UNU-IIST-eGov-course-XML-222
зорилт: Тоон сигнатур нэмэх
14.Нэмэх traveller-ийн тоон signature: my.sig файлаас хоосон элементийг шалгах
<card type="arrival">
...
<signature sigfile="my.sig"/>
</card>
UNU-IIST-eGov-course-XML-223
References буюу дүрслэлүүд
Ямар нэгэн дүрслэл нь дараах хэлбэрүүдтэй дүрслэгддэг:
• character дүрслэл эсвэл• entity (нэг класс буюу обьект) дүрслэл
Reference ::= CharRef | EntityRef
UNU-IIST-eGov-course-XML-224
Character References
UCS дахь character reference-ийг тодорхой character руу шилжүүлэх.
CharRef ::=
’&#’ [0-9]+ ’;’ |
’&#x’ [0-9a-fA-F]+ ’;’
Хоёр форм хувьд:
• &# – character-ийн кодыг 10-тын тооллын системээр дүрслэх• &#x –character-ийн кодыг 16-тын тооллын системээр дүрслэх
UNU-IIST-eGov-course-XML-225
Entity References
entity reference нь нэрлэсэн entity-ийн контент руу ханддаг:
EntityRef ::= ’&’ Name ’;’
Ийм нэр DTD-дээр зарлагдсан байх ёстой.
UNU-IIST-eGov-course-XML-226
Өмнө тодорхойлсон Нэгж Reference-ууд
Өмнө тодорхойлсон нэгжийн нэрнүүд эдгээр таваас тогтоно:
Тэдгээр нь тэмдэгт character-уудыг оруулж ирэхэд ашигладаг.
нэр утга
amp &
apos ‘
quot “
gt >
lt <
UNU-IIST-eGov-course-XML-227
Жишээ: Reference-ууд
Өмнө тодорхойлсон
нэгж reference ->
character reference-ууд:
Аравтын тооллын систем ->
Арван зургаатын тооллын систем ->
Хэрэглэгчийн тодорхойлсон
нэгж reference ->
<?xml version="1.0"?>
<hotel type="bed&breakfast">
...
<address>
<city name="Gdańsk"/>
<street
name="OkręŽna"/>
...
</address>
<note name="Read &legalstuff;"/>
</hotel>
UNU-IIST-eGov-course-XML-228
Зорилт: Түгээмэл References
1. Хонгконгийн Zhuhai ба Macao доорхи хэлбэрээр тодорхойлсон:
<?xml version="1.0"?>
<!DOCTYPE card [
<!ENTITY hk "Hong Kong">
<!ENTITY zh "Zhuhai">
<!ENTITY mo "Macao">
]>
<card type="arrive">
...
&hk; ...
&mo; ...
&zh; ...
</card>
UNU-IIST-eGov-course-XML-229
Зорилт: Хоёр хүйсийн Reference-г тодорхойлох
2. Хоёр хүйс нь доор үзүүлсэнээр нэгжээс хамаарах болон тодорхойлогдох нь :
<?xml version="1.0"?>
<!DOCTYPE card [
<!ENTITY male "<sex type="male"/>">
<!ENTITY female "<sex type="female"/>">
]>
<card type="arrive">
... ♀ ...
</card>
3. Буруу юу? Зөв үү ?
UNU-IIST-eGov-course-XML-230
Зорилт: Ерөнхий гарал үүсэлтэй Reference-ууд
4. Define the entities to capture two common travel origins for visitors to Macao:
• from Zhuhai (on foot) or• from Hong Kong (by ferry)
<?xml version="1.0"?>
<!DOCTYPE card [
<!ENTITY fromZhuhai "...">
<!ENTITY fromHongKong "...">
]>
<card type="arrive">
... &fromHongKong; ...
</card>
UNU-IIST-eGov-course-XML-231
Task: Reuse of Entities
5. Reuse the entities for common places when defining entities for common origins:
<?xml version="1.0"?>
<!DOCTYPE card [
<!ENTITY fromZhuhai "... &zh; ...">
<!ENTITY fromHongKong "... &hk; ...">
]>
<card type="arrive">
...
</card>
6. Any other ideas for reuse in card.xml?
UNU-IIST-eGov-course-XML-232
Контент
Эргэн санах:
document ::= prolog element Misc*
element ::= EmptyElemTag | STag content ETag
эхлэх таг төгсгөлийн таг хоорондох текст нь контент элементийг дууддаг:
content ::=
CharData?
( (element | Reference | CDSect | PI | Comment)
CharData?
)*
UNU-IIST-eGov-course-XML-233
Контентын төрлүүд
Element content дараах тоотой байдаг:
• character data CharData• elements element• references Reference• CDATA sections CDSect• processing instructions PI• comments Comment
Одоогоор аль нь тодорхойлогдоогүй байна вэ? CharData and CDSect
UNU-IIST-eGov-course-XML-234
CDATA хэсэг
CDATA хэсэг нь character-уудыг агуулж байгаа блокуудын алдагдалыг ашигладаг бусад тэмдэгтүүдийг танидаггүй:
CDSect ::= CDStart CData CDEnd
CDStart ::= ’<![CDATA[’
CData ::= (Char* - (Char* ’]]>’ Char*))
CDEnd ::= ’]]>’
CDATA-д, зөвхөн CDEnd тэмдэгт шиг танидаг .
CDATA үүргүй.
UNU-IIST-eGov-course-XML-235
Жишээ:CDATA хэсэг
CDATA дахь тэмдэгтийналдагдал ->
CDATA дахь тэмдэгтийналдагдал ->
<lecture about="XML">Here is a start-tag:<messageto="[email protected]">and an end-tag: <note/>
</lecture>
<lecture about="XML"> <![CDATA[Here is a start-tag: <message to="[email protected]"> and an end-tag: <note/>]]></lecture>
UNU-IIST-eGov-course-XML-236
Character өгөгдөл
Бүх текст тэмдэгт биш юм. Тэдгээр нь документийн сharacter өгөгдлөөс тогтдог.:
CharData ::=
[ˆ<&]* - ([ˆ<&]* ’]]>’ [ˆ<&]*)
Character өгөгдөл нь character-ийн ямар нэгэн стринг юм. Эдгээр нь дараах хэсгийг агуулдаггүй:
– Ямар нэгэн тэмдэгтийн эхлэх-өгөгдлийн хязгаарлалт, ба– CDATA-хэсгийн- ойр оршдог өгөгдлийн хязгаарлалт]]>
UNU-IIST-eGov-course-XML-237
Элементийн синтаксийн ерөнхий төсөөлөл
document ::= prolog element Misc*element ::= EmptyElemTag | STag content ETagSTag ::= ’<’ Name (S Attribute)* S? ’>’Attribute ::= Name Eq AttValueAttValue ::= ’"’ ([ˆ<&"] | Ref)* ’"’ | ...Ref ::= EntityRef | CharRefEntityRef ::= ’&’ Name ’;’CharRef ::= ’&#’ [0-9]+ ’;’ | ’&#x’ [0-9a-fA-F]+ ’;’ETag ::= ’</’ Name S? ’>’EmptyElemTag ::= ’<’ Name (S Attribute)* S? ’/>’Content ::= CharData? ((element|Ref|CDSect|PI|Comment)...)*CharData ::= [ˆ<&]* - ([ˆ<&]* ’]]>’ [ˆ<&]*)CDSect ::= ’<![CDATA[’ CData ’]]>’CData ::= (Char* - (Char* ’]]>’ Char*))PI ::= ’<?’ PITarget (S (Char*-(Char* ’?>’ Char*)))?
’?>’Comment ::= ’<!--’ ((Char - ’-’) | (’-’ (Char - ’-’)))* ’-- >’
UNU-IIST-eGov-course-XML-238
Хамгийн сайн зохион байгуулалтанд орсон XML документ
Энэ нь XML-ийн синтакийг тодорхойлсон дүрмүүдийн тайлбар шийддэг.
Хамгийн сайн зохион байгуулалтанд орсон XML документ гэж юу вэ?
1. Бүхлээр нь авч үзвэл, энэ нь дүрэмтэй зохицдог:
document ::= prolog element Misc*
2. Энэ нь бүх хамгийн сайн зохион байгуулалтанд орсон зааглалтуудтай зохицдог(?)
UNU-IIST-eGov-course-XML-239
Нэгжийг зарлах
Нэгжийг зарлах :
Мэдээллийг програмын аргаар уншиж мэдээллийг авах үйлдлийг parsing гэнэ.
• Тэмдэгт шиг сайн текстийг агуулах• Parse-д хийсэн (XML контент) эсвэл parse-д хийгээгүй (XML
биш)
• Документ дотор тодорхойлогддог (дотоод) эсвэл гадна (гадаад)
UNU-IIST-eGov-course-XML-240
Жишээ: Нэгжүүдэд парсинг хийх
entity declaration ->
contains markup ->
entity reference ->
entity declaration ->
entity reference ->
<!DOCTYPE hotel SYSTEM [
<!ENTITY legal "We reject any responsibility for damages due to errors in this
<product type=‘software’/>.
©right;">
<!ENTITY copyright "©">
]>
<hotel type="bed&breakfast">
<note name="Read &legal;"/> ...
</hotel>
UNU-IIST-eGov-course-XML-241
Сайн зохион байгуулагдсан нэгжүүдийн парсинг
Бүх нэгжүүдийн парсинг документийн body-оос шууд бус эсвэл шууд байдлаар ханддаг, иймд сайн зохион байгуулагдсан байх ёстой:
– Нэгжийн дотоод парсинг :
intParsedEnt ::= content
– Нэгжийн гадаад парсинг:
extParsedEnt ::= TextDecl? content
UNU-IIST-eGov-course-XML-242
Teкст зарлалт
Нэгжийн гадаад парсинг нь нэгжүүдийн парсингийг агуулах боломжтой:
TextDecl ::=
’<?xml’ VersionInfo? EncodingDecl S? ’?>’
Текст зарлатыг зөвшөөрдөг адилхан документ дээр хийдэг хэд хэдэн ялгаатай кодлолын аргууд байдаг..
XML зарлалтын өөр өөр аргуудыг тэмдэглэе:
– version сонголтын, – encoding хийх, – standalone хориглох.
UNU-IIST-eGov-course-XML-243
Зорилт: Муу зохион байгуулагдсан нэгжүүд
1. Өөрчлөх card.xml зарим нэгжүүд муу зохион байгуулагдсан байдаг .
<?xml version="1.0"?>
<!DOCTYPE card [
<!ENTITY male "type=’male’/>">
<!ENTITY female "type=’female’/>">
]>
<card type="arrival">
<visitor>...</visitor>
<document>...</document>
... <sex ♂ ...
</card>
2. Нээх, засах.
UNU-IIST-eGov-course-XML-244
Сайн зохион байгуулагдсан зааглалтууд
BNF гаралтын дүрэм дээр суурилсан Сайн зохион байгуулагдсан 3 компенент байдаг:
1. Эхлэлийн тагны нэр болон төгсгөлийн тагны нэрүүдийг сонгох :
element ::= EmptyElemTag | STag content ETag
STag ::= ’<’ Name (S Attribute)* S? ’>’
ETag ::= ’</’ Name S? ’>’
UNU-IIST-eGov-course-XML-245
Сайн зохион байгуулагдсан зааглалтууд
2. ижил эхлэлтэй-таг эсвэл хоосон элементтэй тагуудын хувьд атрибутын нэр нь нэгээс илүү харагддаггүй:
STag ::= ’<’ Name (S Attribute)* S? ’>’
EmptyElemTag ::= ’<’ Name (S Attribute)* S? ’/>’
Attribute ::= Name Eq AttValue
3. Атрибутын утгууд нь гадаад нэгж, нэгж reference-тэй шууд болон шууд бус байдлаар холбогдож чаддаггүй :
AttValue ::=
’"’ ([ˆ<&"] | Reference)* ’"’ |
"’" ([ˆ<&’] | Reference)* "’"
UNU-IIST-eGov-course-XML-246
Сайн зохион байгуулагдсан зааглалтууд
4. Нэгжийн текст оруулалт атрибутын утганд шууд болон шууд бусаар хандахад a <. Агуулдаггүй байна.
AttValue ::=
’"’ ([ˆ<&"] | Reference)* ’"’ |
"’" ([ˆ<&’] | Reference)* "’“
5. amp, lt, gt, apos эсвэл quot нэгж reference-д өгөгдсөн нэр , буюу Энэ нь документийн DTD дотор зарлагдсан байх ёстой.
EntityRef ::= ’&’ Name ’;’
UNU-IIST-eGov-course-XML-247
Сайн зохион байгуулагдсан зааглалтууд
6. Нэгж нь өөртөө рекурсив reference-г агуулах ёсгүй, шууд болон шууд бус нь мөн адилхан.
7. Нэгж reference парсинг хийгдээгүй нэгжийн нэрийг агуулдаггүй. Атрибутын утгуудад парсинг хийгдээгүй нэгжүүд ханддаг.
Энэ нь XML синтакийн тодорхойлолтыг төгсгөдөг.
Сайн зохион байгуулагдсан нь яг ямархуу нөлөөлтэй байгаа болон документ төрлийн тодорхойлолтуудын танилцуулгыг дараагийн бүлэгт авч үзнэ.
UNU-IIST-eGov-course-XML-248
Зорилт: Сайн зохион байгуулагдсан зөрчил
Дараах нөхцөлүүд нь сайн зохион байгуулалтыг илэрхийлнэ.
modify card.xml
алдаатай мессежийг шалгаад гарч ирсэн тохиолдолд break хийгээд , засварладаг :
1. matching names
2. no repeated attributes
3. no < in entities referenced in attribute values
4. entity names must be declared or pre-defined
5. no recursive references in entities
UNU-IIST-eGov-course-XML-249
Жишээ: Macau Arrival Card-Макаод ирэх кард
less elements? ->
<name>
Jan Kowalski
</name>
less attributes? ->
<date>
11 October 1958
</date>
<?xml version="1.0" standalone="yes"?>
<card type="arrival">
<!-- visitor information -->
<visitor>
<name type="surname">Kowalski</name>
<name type="given">Jan</name>
<sex type="male"/>
<nationality>polish</nationality>
<date type="birth">
11 October 1958
</date>
</visitor>
UNU-IIST-eGov-course-XML-250
Жишээ: Macau Arrival Card-Макаод ирэх кард
more attributes? ->
<document
type="passport"
number="AB4664279">
...
</document>
<!-- travel document information -->
<document type="passport">
<number>AB4664279</number>
<authority>
Wojewoda Pomorski
</authority>
<date type="issue">
5 April 2000
</date>
</document>
UNU-IIST-eGov-course-XML-251
Жишээ: Macau Arrival Card-Макаод ирэх кард
more elements? ->
<address where="home">
<street>Morska 24B</street>
<city>Gdańsk</city>
<zip>24-650</zip>
<country>Poland</country>
</address>
more entities? ->
&fromHongKong;
<!ENTITY fromHongKong
"<travel type="from">
<place>Hong Kong</place>
</travel>„
>
<!-- address information -->
<address where="home">
Morska 24B,
24-650 Gdańsk, Poland
</address>
<address where="Macao">
Flower Garden 12B, Taipa
</address>
<travel type="from">
<place>Hong Kong</place>
</travel>
<signature sigfile="mysig"/>
</card>
UNU-IIST-eGov-course-XML-252
Демо: Macau Arrival Card-Макаод ирэх кард
> cd "demos/macao arrival card"
> dir
card.xml
> java dom.Counter card.xml
> cp card.xml card.xml.old
> emacs card.xml
> java dom.Counter card.xml
> cp card.xml.old card.xml
DTD
UNU-IIST-eGov-course-XML-254
Програм
1) Оршил
a) Үндэслэл буюу шалтгаан
b) Ерөнхий төсөөлөл
c) Эх үүсвэр
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологууд
a) Мэдээллийг баталгаажуулах
(XML Schema)
a) хандах (XPath)
b) хувиргах (XSLT)
4) XML Java боловсруулалт
a) Модон дээр суурилсан програмчлал (DOM)
b) Event буюу үзэгдэл дээр суурилсан програмчлал (SAX)
c) Тодорхой дүрмэн дээр суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-255
Сайн зохион байгуулагдсан буюу Toast
Бүх XML документууд сайн зохион байгуулагдсан байх шаардлагтай:
• муу зохион байгуулагдсан үед документ нь XML-ийг дууддаг even нь ажилладаггүй.
• XML парсерууд require хийдэг:
– сайн биш зохион байгуулагдсан XML документууд нь боловсруулалт хийж чаддаггүй.
– аплекашнийг дуудахад асуудал гарсан гэсэн мэдээлэл өгдөг
UNU-IIST-eGov-course-XML-256
Сайн зохион байгуулагдсаныг бодит байдалтай харьцуулахад
Сайн зохион байгуулагдсан XML документ хүчин төгөлдөр нэмэгдэх боломжтой.
– XML документ нь хэрэв хүчинтэй бол:
1. Энэ нь документ төрлийн тодорхойлолттой нэгддэг
2. Энэ тодорхойлогдсон тодорхой зааглалтандаа захирагддаг
– SGML шиг биш, DTD нь XML-ийн сонголт , иймд хүчинтэй байдаг.
Энэ бүлэгт бид документ төрлийн тодорхойлолтуудын синтакийг тайлбарлах болон, тэдгээрийн гол санаануудыг нэгтгэн авч үзнэ.
UNU-IIST-eGov-course-XML-257
Демо: Validity of Macao Arrival Card-Макаод ирэх кард нэртэй жишээг авч үзье
> cd "demos/validity of macao arrival card"
> ls
card.dtd cardNoDTD.xml cardYesDTD.xml
> java dom.Counter cardNoDTD.xml
> java dom.Counter -v cardYesDTD.xml
UNU-IIST-eGov-course-XML-258
DTD хүрээ буюу боломж бололцоо
Бид DTD-г ашиглан дараах зүйлүүдийг тодорхойлж чадна:
1. Элементүүд ба тэдгээрийн атрибутууд
2. Элементүүдийн дараалал буюу үүрийг
3. Элементүүд текстийг агуулж чадах эсэхийг
4. Элементүүдболон текстийг хослох буюу нэгдэж болох эсэхийг
5. Элементүүд сонголт хийж чадах эсэхийг
6. Элементүүд давтагдах эсэхийг
7. Атрибутын дефаулт эсвэл тогтмол утгуудыг
8. Атрибутын өгөгдлийн төрлийн хязгаарлалтыг
9. Текстийн дахин ашиглах боломжтой хэсгүүдийн нэгжүүдийг дууддагыг
10.XML –ийн бус тэмдэглэлүүдийг
11.Гэх мэт.
UNU-IIST-eGov-course-XML-259
Документ төрлийн зарлалт
Бичлэг:
document ::= prolog element Misc*
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
Документ төрлийн зарлалт:
• документуудын үндсэн элементүүдийн нэрүүд (Name)• (inside [...]) эсвэл цэгүүд (ExternalID) 2 уулаа документийн төрлийн
тодорхойлолтонд харьяалагддаг.
doctypedecl ::=
’<!DOCTYPE’ S Name (S ExternalID)? S?
(’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’
UNU-IIST-eGov-course-XML-260
Гадаад дотоод DTD
DTD хоёр сабситээс бүрддэг:
1. гадаад– өмнөх хэсгээс эхлээд тайлбарласаар байгаа.
ExternalID ::=
’SYSTEM’ S SystemLiteral |
’PUBLIC’ S PubidLiteral S SystemLiteral
2. дотоод – зарласан тэмдэгтүүдийн дараалал (markupdecl) зарласан хэсгүүдээс үл хамаарна. (DeclSep):
doctypedecl ::= ...
(’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’
UNU-IIST-eGov-course-XML-261
Жишээ: Гадаад сабситтай DTD
standalone=no ->
external subset ->
root ->
<?xml version="1.0"?>
<!DOCTYPE card SYSTEM "card.dtd">
<card type="arrival">...</card>
UNU-IIST-eGov-course-XML-262
Жишээ: дотоод сабситтай DTD
standalone=yes ->
internal subset ->
root ->
<?xml version=“1.0” standalone="yes"?>
<!DOCTYPE card [
<!ELEMENT card (visitor, document, ... )>
<!ATTLIST card type (arrival | departure) ...>
<!ELEMENT visitor (name, name, sex, ... )>
<!ELEMENT name (#PCDATA)>
...
]>
<card type="arrival">...</card>
UNU-IIST-eGov-course-XML-263
Жишээ: Гадаад/дотоод сабситуудтай DTD
standalone=no ->
external subset ->
internal subset ->
root ->
<?xml version="1.0"?>
<!DOCTYPE card SYSTEM “card.dtd” [
<!ELEMENT card (visitor, document, ... )>
<!ATTLIST card type (arrival | departure)...>
<!ELEMENT visitor (name, name, sex, ... )>
<!ELEMENT name (#PCDATA)>
...
]>
<card type="arrival">
...
</card>
UNU-IIST-eGov-course-XML-264
Демо: Документийн төрөлийн зарлалтууд
> cd "demos/document type declarations"
> ls
cardExternal.xml cardInternal.xml cardMixed.xml
cardBig.dtd cardSmall.dtd cardMiddle.dtd
> emacs cardInternal.xml
> java dom.Counter -v cardInternal.xml
> emacs cardExternal.xml cardBig.dtd
> java dom.Counter -v cardInternal.xml
> emacs cardMixed.xml cardSmall.dtd
> java dom.Counter -v cardMixed.xml
UNU-IIST-eGov-course-XML-265
Зорилт: Үгсийн сантай документ үүсгэх
• Шинэ дериктор үүсгэх> mkdir course/tasks/letter
> cd course/tasks/letter
• цөөн хэдэн үгтэй хамгийн жижиг документийг үүсгэх
<letter></letter>
• Гэж нэрлэн хадгалах letter.xml, parse
UNU-IIST-eGov-course-XML-266
Зорилт : Үсэгийг өргөтгөх
• XML зарлалтанд нэмэх, parse
<?xml version="1.0"?>
<letter></letter>
• DOCTYPE-д нэмэх, parse
<?xml version="1.0"?>
<!DOCTYPE>
<letter></letter>
UNU-IIST-eGov-course-XML-267
Зорилт: документ төрлийг нэмэх
• add the root element, parse
<?xml version="1.0"?>
<!DOCTYPE letter>
<letter></letter>
• add the empty internal subset, parse
<?xml version="1.0"?>
<!DOCTYPE letter []>
<letter></letter>
• Утга олгоход, юу тохиолддог вэ?
UNU-IIST-eGov-course-XML-268
Тэмдэгтийн зарлалтууд
Тэмдэгтийн зарлалтууд дараах зүйлүүдийг оруулдаг : элемент, атрибутын жагсаалт, мөн чанар ба тэмдэглэл. Заавар болон коментуудын боловсруулалтыг бас зөвшөөрдөг.
markupdecl ::=
elementdecl |
AttlistDecl |
EntityDecl |
NotationDecl |
PI |
Comment
UNU-IIST-eGov-course-XML-269
Тэмдэгт зарлалтуудын формат
Бүх тэмдэгт зарлалтууд адил төстэй синтакд нийцдэг. :
<!TYPE ...>
where TYPE is one of:
• ELEMENT• ATTLIST• ENTITY• NOTATION
UNU-IIST-eGov-course-XML-270
Элемент төрлийн зарлалт
Элемент төрлийн зарлалт нь элементийн нэр ба тухайн контентийн шинж чанар буюу дэлгэрэнгүй мэдээллийг агуулдаг:
elementdecl ::=
’<!ELEMENT’ S Name S contentspec S? ’>’
контентийн шинж чанар нь дараах дөрвөн төрөлтэй:
contentspec ::=
’EMPTY’ |
’ANY’ |
Mixed |
children
UNU-IIST-eGov-course-XML-271
Empty элемент контент
EMPTY г ямар нэгэн элемент буюу ямар нь ч агуулж чаддаг:
• character өгөгдөл• children элементүүд биш
Гэвч энэ нь атрибутуудыг агуулж болдог.
UNU-IIST-eGov-course-XML-272
Any элемент контент
ANY зааглалтуудгүй оруулдаг. Элемент доорх зүйлүүдийг агуулдаг:
• элементүүд,• character өгөгдөл,• Хоёулангийн холимог, эсвэл аль нь ч үгүй.
DTD-ийн дизайнд анхны үе шатууд чухал хэрэгтэй байдаг.
UNU-IIST-eGov-course-XML-273
Жишээ: Empty ба Any элемент контент
empty element declaration ->
<sex type="male"/>
any element declaration ->
<test>
<test1>...</test1>
<test2>...</test2>
<test3>...</test3>
<test4>...</test4>
<test5>...</test5>
</test>
<!ELEMENT sex EMPTY>
<!ELEMENT test ANY>
<!ELEMENT test1 ...>
<!ELEMENT test2 ...>
<!ELEMENT test3 ...>
<!ELEMENT test4 ...>
<!ELEMENT test5 ...>
UNU-IIST-eGov-course-XML-274
Зорилт: Empty-гэсэн үгээр хувьсагч зарлах
• Empty-гэсэн үгээр хувьсагч зарлах, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [<!ELEMENT letter EMPTY>]>
<letter></letter>
• Зарим текстийг нэмэх, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [<!ELEMENT letter EMPTY>]>
<letter>this is a letter text</letter>
UNU-IIST-eGov-course-XML-275
Зорилт: ANY-гэсэн үгээр хувьсагч зарлах
• ANY-ээр зарлах, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [<!ELEMENT letter ANY>]>
<letter>this is a letter text</letter>
UNU-IIST-eGov-course-XML-276
Холимог элемент контент
Холимог загвар: элемент контентуудын character өгөгдөл сонголтыг child элементүүдээр төрөлжүүлэх:
Mixed ::=
’(’ S? ’#PCDATA’ (S? ’|’ S? Name)* S? ’)*’ |
’(’ S? ’#PCDATA’ S? ’)’
child элементүүдийн төрлүүд зааглагдсан байдаг, гэвч тэдгээрийн дараалал буюу байрлалуудын тоо зэрэг нь зааглагдсан биш байдаг.
UNU-IIST-eGov-course-XML-277
Жишээ: Холимог элемент контент
text-only ->
<name>Kowalski</name>
text mixed with one ->
<address>
<zip>CV4 7AL</zip>
Coventry, UK
</address>
text mixed with two ->
<address>
<zip>CV4 7AL</zip>
Coventry,
<country>UK</country>
</address>
<!ELEMENT name (#PCDATA)>
<!ELEMENT address (#PCDATA | zip)*>
<!ELEMENT address (#PCDATA|zip|country)*>
UNU-IIST-eGov-course-XML-278
Зорилт:PCDATA-ээр үсгээр тэмдэглэж зарлах
• PCDATA-дээр үсгээр тэмдэглэж зарлах, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [<!ELEMENT letter (#PCDATA)>]>
<letter>this is a letter text</letter>
UNU-IIST-eGov-course-XML-279
Зорилго: Үсгэн текстийг өргөтгөх
• Үсгэн текстийг өргөтгөх, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [<!ELEMENT letter (#PCDATA)>]>
<letter>
Dear Simon White,
We are pleased to inform you that your
credit card application has been approved.
Sincerely, Steven Rod
</letter>
UNU-IIST-eGov-course-XML-280
Зорилго: Үсгэн тэмдэгтийг нэмэх
• Зарим үсгэн тэмдэгтийг нэмэх, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [<!ELEMENT letter (#PCDATA)>]>
<letter>
Dear <customer>Simon White</customer>,
We are pleased to inform you that your
<product>credit card</product> application
has been approved. Sincerely, Steven Rod
</letter>
UNU-IIST-eGov-course-XML-281
Зорилт: Тэмдэгт зарлах
• Тэмдэгтийг зарлах, утга олгох
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT letter (customer | product | #PCDATA)*>
<!ELEMENT customer (#PCDATA)>
<!ELEMENT product (#PCDATA)>
]>
<letter>...</letter>
UNU-IIST-eGov-course-XML-282
Зорилт: Тохирсон тэмдэгт
• Дутагдлыг засах , бататгах
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT letter (#PCDATA | customer | product)*>
<!ELEMENT customer (#PCDATA)>
<!ELEMENT product (#PCDATA)>
]>
<letter>...</letter>
UNU-IIST-eGov-course-XML-283
Зорилт: Тэмдэгтийг өөрчлөх
• Өөрчлөлт оруулах болон бататгах
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT customer (#PCDATA)>
<!ELEMENT product (#PCDATA)>
<!ELEMENT letter (#PCDATA | product | customer)*>
]>
<letter>...</letter>
UNU-IIST-eGov-course-XML-284
Зорилт: Илүү тэмдэгтийг нэмэх
• Нэмж тэмдэгт, зарлалт, батлах зэргийг нэмэх
<?xml version="1.0"?>
<!DOCTYPE letter [...]>
<letter>
Dear <customer>Simon White</customer>,
We are pleased to inform you that your
<product>credit card</product> application
has been approved. Sincerely,
<manager>Steven Rod</manager>
</letter>
UNU-IIST-eGov-course-XML-285
Элемент контент
Ямар нэгэн элемент нь зөвхөн child (character өгөгдөлтэй биш) элементүүдийг агуулах ёстой , must contain only elements (no character data), сонголт нь хоосон зайнаас үл хамаарна.
choice эсвэл seq ийн build болон сонголтын байрлалын заагчууд:
children ::=
(choice | seq) (’?’ | ’*’ | ’+’)?
UNU-IIST-eGov-course-XML-286
Биелэлтийн боломжийн заагч буюу индикатор
E Яг тэнцүү буюу тохирсон E
E? тэг эсвэл E ээс илүү
E* тэг эсвэл E ээс илүү
E+ нэг эсвэл E ээс илүү
UNU-IIST-eGov-course-XML-287
Сонголтын контент
Choice буюу сонголт нь контентийн эгэл хэсгүүдийн жагсаалт юм. cp нь “|” ээс үл хамаарна.
Лист буюу жагсаалт нь хамгийн багадаа ямар хоёр эгэл хэсгийг агуулдаг :
choice ::=
’(’ S? cp ( S? ’|’ S? cp )+ S? ’)’
UNU-IIST-eGov-course-XML-288
Контентийн дараалал
seq нь контентийн эгэл хэсгүүдийн жагсаалт, cp контентийн эгэл хэсэг нь “,” ээс үл хамаарах.
Лист буюу жагсаалт нь хамгийн багадаа ямар нэгэн эгэл хэсгийг агуулдаг :
seq ::=
’(’ S? cp ( S? ’,’ S? cp )* S? ’)’
UNU-IIST-eGov-course-XML-289
Контентийн эгэл хэсэг
Контентийн эгэл хэсэг cp нь :
• элементийн нэр,• сонголт эсвэл• дараалал
сонголтын индикатор:
cp ::=
(Name | choice | seq) (’?’ | ’*’ | ’+’)?
UNU-IIST-eGov-course-XML-290
Жишээ: Элемент болон холимог контент 1
(a) a
(a?) 0,a
(a+) a,aa,...
(a*) 0,a,aa,...
(a*)* 0,a,aa,...
(a+)? 0,a,aa,...
(a,b) ab
(a,b)? 0,ab
(a,b?) a,ab
(a?,b) b,ab
(a?,b?) 0,a,b,ab
(a?,b?)? 0,a,b,ab
(a,b)* 0,ab,abab,...
(a,b*) a,ab,abb,...
(a*,b) b,ab,aab,...
UNU-IIST-eGov-course-XML-291
Жишээ: Элемент болон холимог контент 2
(a*,b*) 0,a,b,ab,aab,abb,...
(a*,b*)* 0,a,aa,b,bb,ab,abab,...
(a|b) a,b
(a|b)? 0,a,b
(a|b?) 0,a,b
(a?|b?) 0,a,b
(a|b)+ a,b,aa,ab,ba,bb,...
(a?|b)+ a,b,aa,ab,ba,bb,...
(a+|b)+ a,b,aa,ab,ba,bb,...
((a,b)|c) ab,c
(a|(b,c)) a,bc
(a,(b|c)) ab,ac
((a|b),c) ac,bc
(#PCDATA|a)* 0,t,a,ta,at,tt,aa,...
(#PCDATA|a|b)* 0,t,a,b,ta,tb,at,bt,tt,ab,...
UNU-IIST-eGov-course-XML-292
Демо: элемент контентийн загварууд
> cd "demos/element content models"
> ls
test.xml
> java dom.Counter -v test.xml
UNU-IIST-eGov-course-XML-293
Зорилго: бичиг баримтыг хуваах, ангилах
• бичиг баримтыг хуваах, ангилах, зарлах, бататгах
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT letter (opening, body, closure)>
<!ELEMENT opening (#PCDATA | customer)*>
<!ELEMENT body (#PCDATA | product)*>
<!ELEMENT closure (#PCDATA | manager)*> ...
]>
<letter>
<opening>...</opening>
<body>...</body>
<closure>...</closure>
</letter>
UNU-IIST-eGov-course-XML-294
Зорилт: анхны сонголтыг үүсгэх
• анхны сонголтыг үүсгэх, бататгах
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT letter (opening?, body, closure)>
<!ELEMENT opening (#PCDATA | customer)*>
...
]>
<letter>
<body>...</body>
<closure>...</closure>
</letter>
UNU-IIST-eGov-course-XML-295
Зорилт: хавсралтануудад нэмэх
• хавсралтануудад нэмэх, бататгах
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT letter (opening?, body, closure, enclosure*)>
<!ELEMENT enclosure (#PCDATA)>...
]>
<letter>
...
<enclosure>...</enclosure>
<enclosure>...</enclosure>
</letter>
UNU-IIST-eGov-course-XML-296
Зорилт: хуулах жагсаалтыг нэмэх (хорон цаас мэт)
• хуулах жагсаалтыг нэмэх, бататгах
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ELEMENT letter (..., cc*, enclosure*)>
<!ELEMENT enclosure (#PCDATA)>...
]>
<letter>
...
<cc>...</cc>
<cc>...</cc>
<cc>...</cc>
<enclosure>...</enclosure>
</letter>
UNU-IIST-eGov-course-XML-297
зарлах төрлүүд
Эргэн санах:
markupdecl ::=
elementdecl |
AttlistDecl |
EntityDecl |
NotationDecl |
PI | Comment
атрибут мэдэгдэлийн жагсаалт нь дараах хуудасанд байгаа. . .
UNU-IIST-eGov-course-XML-298
Атрибутын зарлалтын жагсаалт
Атрибутын мэдэгдэлийн жагсаалт :
• Өгөгдсөн элемент дахь атрибутуудын олонлогоор тодорхойлогдоно.
• Эдгээр атрибутуудын зааглалтуудын төрлийг тодорхойлох.• Атрибутуудын дефаулт утгуудыг олгох.
AttlistDecl ::=
’<!ATTLIST’ S Name AttDef* S? ’>’
UNU-IIST-eGov-course-XML-299
Атрибутын тодорхойлолт
Атрибутын тодорхойлолт нь дараах хэсгүүдээс бүрдэнэ:
• атрибутын нэр,• түүний төрөл • дефаулт мэдэгдэл.
Бүгд шаардлагатай.
AttDef ::= S Name S AttType S DefaultDecl
UNU-IIST-eGov-course-XML-300
Атрибутын төрлүүд
Атрибут нь 3 төрөлтэй:
• Стринг төрөл• tokenize төрөл (нүд хуурсан төрөл)• Тоочсон төрөл
AttType ::=
StringType |
TokenizedType |
EnumeratedType
UNU-IIST-eGov-course-XML-301
Шинж тэмдгийн хэлбэр
Гурван төрлийн шинж тэмдэгтэд:• холбоосон хэлбэр• Тэмдэгжсэн хэлбэр• Тоологдсон хэлбэрийн нэг
UNU-IIST-eGov-course-XML-302
Шинж тэмдгийн холбоосон хэлбэр
Холбоосоон хэлбэр нь ямар нэгэн хэмжээгээр таарах холбоосыг
Оруулж болох талтай.
Холбоосон хэлбэр ::= ’CDATA’
UNU-IIST-eGov-course-XML-303
Шинж тэмдгийн тэмдэгтийн хэлбэрүүд
Энд 7 төрлийн тэмдэгтийн хэлбэрүүд байна.
Тэмдэгжсэн хэлбэр ::=
’ID’ |
’IDREF’ | ’IDREFS’ |
’БОДИТ ЧАНАР’ | ’БОДИТ ЧАНАРУУД’ |
’NMТЭМДЭГТ’ | ’NMТЭМДЭГТҮҮД’
Ийм төрлийн хэлбэрүүд нь шинж чанарын хязгаарт хэмжээний
Хяналтыг олгодог.
UNU-IIST-eGov-course-XML-304
Шинж чанарын тэмдэгжсэн хэлбэрүүд
Сануулагч:
Name ::= (Letter | ’_’ | ’:’) (NameChar)*
1. ID:• Энэ шинж чанарын хэмжээ нэртэйгээ тохирч байх ёстой
Name• Бүх бичилтэнд хэмжээ арай өөрөөр байна. • Зөвхөн ийм шинж тэмдэг аль ч элементэнд оршино.
• IDREF – Энэ шинж тэмдгийн хэмжээ зарим ID шинж тэмдгийн хэмжээтэй тохирч байх ёстой. (in Name).
• ENTITY – Энэ шинж чанарын хэмжээ DTD дэх хэлзүйн задлалгүй бодит чанарт тодорхойлогдсон нэртэй байна (in Name).
UNU-IIST-eGov-course-XML-305
Tokenized Types of Attributes
Сануулагч:
Names ::= Name (S Name)*
4. IDREFS – Нэрэнд хэмжээ байх бөгөөд нэр бүхэн баримтан дахь зарим хэсгийн ID шинж тэмдгийн хэмжээтэй тохирч байх ёстой.
5. Бие даасан чанар-нэрэнд хэмжээ байх бөгөөд нэр бүхэн DTD дэх тогтоогдсон хэлзүйн задлалгүй нэр байна.
UNU-IIST-eGov-course-XML-306
Tokenized Types of Attributes
Сануулагч:
Nmtoken ::= (NameChar)+
Nmtokens ::= Nmtoken (S Nmtoken)*
6. NMTOKEN – хэмжээ заавал байх ёстой Nmtoken.
7. NMTOKENS – хэмжээ заавал байх ёстой Nmtokens.
UNU-IIST-eGov-course-XML-307
Enumeration Types of Attributes
Энд хоёр төрлийн тоологдсон хэлбэр байна:
EnumeratedType ::=
NotationType |
Enumeration
UNU-IIST-eGov-course-XML-308
Enumeration Type of Attributes
Тоологдох төрлийн шинж тэмдгийн хэмжээ нь nmtoken
тодорхойлолт дохь тэмдэгжилтийн нэгтэй таарч байна
Enumeration ::=
’(’ S? Nmtoken (S? ’|’ S? Nmtoken)* S? ’)’
Адил nmtoken нэг элементийн төрөл дэх тоологдох шинж тэмдгийн шинж чанарт нэгээс илүүтэй тохиолдоод байх хэрэггүй.
UNU-IIST-eGov-course-XML-309
Notation Type of Attributes
Тэмдэглэл хэлбэрийн шинж тэмдгийн хэмжээ нь DTD дэх тодорхойлогдсон тэмдэглэлийн нэр байна.
NotationType ::=
’NOTATION’ S
’(’ S? Name (S? ’|’ S? Name)* S? ’)’
UNU-IIST-eGov-course-XML-310
Тэмдэглэлүүд
Тэмдэглэлүүд нь шинж чанарт хавсрагдах элементийн тайлбарлагдах агуулагад ашиглагддаг. / ихэвчлэн XML-гүйгээр /
– Илэрхийлэгдэх хэсэг дэх тэмдэглэлийн нэрнүүд нь илэрхийлэгдэх
– Нэг тэмдэглэлтэй шинж чанартайгаар элемент байхгүй
UNU-IIST-eGov-course-XML-311
Илэрхийлэлт
Сануулагч:
AttDef ::= S Name S AttType S DefaultDecl
Илэрхийлэгчийг сануулах:
• Шинж чанарын оролцоо шаардлагатай үгүйгээр• Хэрэв үгүй бол, баримтанд илэрхийлэлтийн шинж чанар байхгүй
бол яаж XML просесорт нөлөөлөх вэ?
UNU-IIST-eGov-course-XML-312
Default Declarations
Өгүүлбэр зүй:
DefaultDecl ::=
’#REQUIRED’ | ’#IMPLIED’ |
((’#FIXED’ S)? AttValue)
Боломжууд:
1. #шаардлагатай – Шинж чанар үргэлж хангагдсан байх
2. #IMPLIED – Шинж чанар нь туслах чанарын, тогтмол байдал шаардлагагүй.
UNU-IIST-eGov-course-XML-313
Default Declarations
3. #FIXED – шинж чанар нь туслах чанарын байна. If present, its value must equal the default value
4. Хэрэв одоо бол хэмжээ нь үндсэн хэмжээтэй тэнцүү байх ёстой. AttValue:
AttValue ::=’"’ ([ˆ<&"] | Reference)* ’"’ |"’" ([ˆ<&’] | Reference)* "’“
4. Нөгөөтэйгүүр – Шинж чанар нь туслах чанарын байдаг :
• Хэрэв байвал энэ хэмжээ нь өгөгдсөн байна. • Хэрэв байхгүй бол default-r олгогдсон байна.
UNU-IIST-eGov-course-XML-314
Example: Attribute Declarations
<document number="AB45673"/>
<document number="999 999"/>
<document/>
<document number="c999999"/>
<document/>
<document type="passport"/>
<document/>
<document type="id"/>
<document number="AB45673"
children="CD32567 GH12658"/>
<!ATTLIST document
number CDATA #REQUIRED>
<!ATTLIST document number ID #IMPLIED>
<!ATTLIST document type
(passport | id) "id">
<!ATTLIST document type
(passport | id) #FIXED "id">
<!ATTLIST document number
ID #REQUIRED children IDREFS "">
UNU-IIST-eGov-course-XML-315
Demo: Attribute Declarations
> cd "demos/attribute declarations"
> ls
documents.xml
> java dom.Counter -v documents.xml
UNU-IIST-eGov-course-XML-316
Task: Add Product’s Name Attribute
<!DOCTYPE letter [ ...
<!ELEMENT product EMPTY>
<!ATTLIST product name CDATA #REQUIRED>
]>
<letter>
...
<body>
We are pleased to inform you that your
<product name="credit card"/>
application has been approved.
</body>
</letter>
UNU-IIST-eGov-course-XML-317
Task: Add Product’s ID Attribute
<!DOCTYPE letter [ ...
<!ATTLIST product
name CDATA #REQUIRED
id ID #REQUIRED>
]>
<letter>
...
<body>
We are pleased to inform you that your
<product name="credit card" id="ab2345"/>
application has been approved.
</body>
</letter>
UNU-IIST-eGov-course-XML-318
Task: Add a Reference to Product’s ID
<!DOCTYPE letter [ ...
<!ELEMENT enclosure (#PCDATA)>
<!ATTLIST enclosure idref IDREF #IMPLIED>
]>
<letter>
...
<body>
... <product name="credit card" id="ab2345"/> ...
</body>
<enclosure idref="ab2345">credit card</enclosure>
</letter>
UNU-IIST-eGov-course-XML-319
Task: Add the Officer’s Level
<!DOCTYPE letter [ ...
<!ELEMENT officer (#PCDATA)>
<!ATTLIST officer level
(clerk | assistant | manager) #IMPLIED "clerk">
]>
<letter>
...
<closure>
Sincerely,
<officer level="manager">Steven Rod</officer>
</closure>
</letter>
UNU-IIST-eGov-course-XML-320
Next Declaration Type
Сануулга:
markupdecl ::=
elementdecl |
AttlistDecl |
EntityDecl |
NotationDecl |
PI | Comment
Дараагийн бодит чанарын илэрхийлэл. . .
UNU-IIST-eGov-course-XML-321
Бодит чанар /ангид чанар /
Ангид чанар нь мэдээллийг төлөөлөхөд тохиромжтой арга юм.
• Хоёулаа давталттайгаар тохиолдоно• Солигдох
Мэдээлэл нь XML, DTDs –д оршин байж болдог.
UNU-IIST-eGov-course-XML-322
Role of Entities
Entity эдгээрийг үзүүлнэ:
1. Давтагдсан техтийг блок
2. Тусгай тэмдэгт
3. Тогтмол (хольсон) холбоос
4. Бүх XML баримт
5. XML баримтын хэсэг
6. их хэмжээтэй DTD-н хэсэг
7. DTD дэх хэлбэрийн агуулга
8. DTD дэх шинж чанарын байршил
9. Хос хэлбэр
10.Гэх мэт.
UNU-IIST-eGov-course-XML-323
Урьдчилан тодорхойлсон ангид чанар
Бид 2 төрлийн ангид чанарыг үзсэн билээ:
• Урьдчилан тодорхойлсон ангид чанар: amp, apos, quot, gt, lt эдгээр тэмдэгтүүдийг төлөөлнө &, ’, ", > бас <.
• Тэмдэгтийн ангид чанар: #x0144 (hexadecimal) and #324 (аравтын бутархай ) юникодын тэмдэгжилт, энэ тохиолдолд
Хоёр төрлийн тусгай урьдчилан тодорхойлсон ангид чанар байна.
UNU-IIST-eGov-course-XML-324
Ангид чанарын илэрхийлэл
Бусад чанарууд DTD хэсэгт илэрхийлэгдэх ёстой.
Бүр идэвхижүүлэлтэд анхаарал хандуулахгүй ч гэсэн танд DTD хэрэглэгчийн тодорхойлсон ангид чанар хэрэгтэй.
Хэрэв нэгээс илүү адил ангид чанар байвал эхнийх нь бичигдэнэ. XML просесор асуудлыг анхааруулж эхэлэнэ.
UNU-IIST-eGov-course-XML-325
Бодит чанарын хэлбэр
Бодит чанарын 2 төрөл байна:
1. Ерөнхий чанар – DTD-т тодорхойлсон боловч XML-д ашиглагддаг.
2. Параметр чанар – тодорхойлсон ба DTD-д ашиглагдсан
EntityDecl ::= GEDecl | PEDecl
Параметр ангид чанар ба ерөнхий чанар нь адил нэртэй 2 өөр төрлийн чанар юм. Тэд өөр төрлийн нэрийн зай ашиглана.
UNU-IIST-eGov-course-XML-326
Ерөнхий ангид чанар
DTD-д илэрхийлэгдсэн дотоод гадаад нийлэмжүүд нь
GEDecl ::=
’<!ENTITY’ S Name S EntityDef S? ’>’
Ерөнхий ангид чанар нь гадаад дотоод гэж 2 хуваагдана.
EntityDef ::=
EntityValue | (ExternalID NDataDecl?)
UNU-IIST-eGov-course-XML-327
Дотоод ангид чанар
Дотоод чанар: replacement text defined within a document and referenced from one or more locations in this document
• Илэрхийлэгдсэн байдал:
EntityDef ::= EntityValue
EntityValue ::=
’"’ ([ˆ%&"] | PEReference | Reference)* ’"’ |
"’" ([ˆ%&’] | PEReference | Reference)* "’"
• урьсан байдал: &name;
PEReference is a reference to parameter entity.
UNU-IIST-eGov-course-XML-328
Example: Declaration of Internal Entities
text replacement ->
markup replacement ->
’ used instead of " ->
replacement text with:
1.entity reference ->
2.predefined entity ->
3.character entity ->
<!ENTITY type "XML editor">
<!ENTITY product "
<product type=’&type;’>
XML Typewriter
</product>
">
<!ENTITY disclaimer
"&company; accepts no responsibility
for damages due to corruption or loss of your data caused by &product;."
>
<!ENTITY company "First&Best">
<!ENTITY copyright "Copyright © 2003">
UNU-IIST-eGov-course-XML-329
Example: Replacement of Internal Entities
&product; is the best
&type; available on
the market. It helps
writing XML without
worrying about those
silly syntax rules.
However, &disclaimer.
©right
<product type="XML editor"> XML
Typewriter </product> is the best
XML editor available on the market.
It helps writing XML without worrying
about those silly syntax rules.
However, First&Best accepts no
responsibility for damages due to
corruption or loss of your data
caused by <product type="XML editor">
XML Typewriter </product>.
Copyright © 2003
UNU-IIST-eGov-course-XML-330
Example: Validation of Internal Entities
Бодит чанарын мэдэгдэл ->
Элементийн мэдэгдэл ->
Суурь элемент ->
<!DOCTYPE advert [
<!ENTITY type "...">
<!ENTITY product "...">
<!ENTITY disclaimer "...">
<!ENTITY copyright "...">
<!ELEMENT advert (#PCDATA | product)*>
<!ELEMENT product (#PCDATA)>
<!ATTLIST product type CDATA #REQUIRED>
]>
<advert>
&product; is the best &type; available on the market. It helps writing XML without worrying about those silly syntax rules.
However, &disclaimer;. ©right;
</advert>
UNU-IIST-eGov-course-XML-331
Demo: Internal Entities
> cd "demos/internal entities"
> ls
advert.xml
> emacs advert.xml
> java dom.Counter -v advert.xml
UNU-IIST-eGov-course-XML-332
Сайн зохион байгуулсан дотоод бодит чанарууд
Хэрэв текстийн орлуулалт агуулагатай тохирч байвал дотоод ерөнхий хэл зүйн бодит чанар нь сайн зохион байгуулагдсан байна.
content ::= CharData?
( (element | Reference | CDSect | PI | Comment)
CharData?
)*
Орлуулалтын текст нь бодит чанарын агуулга бол шинж чанарын тодорхойлол болоод параметр бодит чанарын тодорхойлолт
UNU-IIST-eGov-course-XML-333
Example: Well-Formed Internal Entities
parameter entity ->general entity ->general entity ->
character reference ->parameter reference ->
general reference ->
replacement text forthe entity ‘‘book’’ ->
<!ENTITY % pub "O’Reilly & Associates" ><!ENTITY rights "All rights reserved" ><!ENTITY book
"Learning XML: Erik T. Ray,© 1947%pub;.&rights;" >
Learning XML: Erik T.Ray, © 2001O’Reilly & Associates. &rights;
UNU-IIST-eGov-course-XML-334
Pre-Defined Entities Revisited
Character entities are instances of internal general entities, so are the predefined entities amp, quot, apos, lt and gt.
Шинж чанарын тодорхойлолт нь дотоод ерөнхий шинж чанарын оронд байна, тиймээс эдгээр нь урьдчилан тодорхойлсон шинж чанар болно.
Бүх XML просесор мэдэгдсэн ч бай үгүй ч бай танигдах ёстой байдаг. Хэрэв тогтоогдсон бол доорх байдалтай хэрэглэдэнэ.
<!ENTITY lt "&#60;">
<!ENTITY gt ">">
<!ENTITY amp "&#38;">
<!ENTITY apos "'">
<!ENTITY quot """>
Давхар зайг ажиглаlt and amp:lt -> &#60; -> < -> <
UNU-IIST-eGov-course-XML-335
Task: Customize Decision – Approved
<!DOCTYPE letter [ ...
<!ENTITY polite "are pleased">
<!ENTITY decision "approved">
]>
<letter decision="reject">
...
<body>
We &polite; to inform you that your
<product>credit card</product>
application has been &decision;.
</body>
</letter>
UNU-IIST-eGov-course-XML-336
Task: Customize Decision – Rejected
<!DOCTYPE letter [ ...
<!ENTITY polite "regret">
<!ENTITY decision "rejected">
]>
<letter decision="reject">
...
<body>
We &polite; to inform you that your
<product>credit card</product>
application has been &decision;.
</body>
</letter>
UNU-IIST-eGov-course-XML-337
External Entities
Сануулагч:
EntityDef ::= EntityValue | (ExternalID NDataDecl?)
ExternalID ::=
’SYSTEM’ S SystemLiteral |
’PUBLIC’ S PubidLiteral S SystemLiteral
Гадаад ангид чанарын таарамж ExternalID NDataDecl?.
UNU-IIST-eGov-course-XML-338
Гаднах бодит чанарын хэлбэрүүд
They refer to the data (XML or non-XML) stored in an external file:
Тэдгээр нь гадаад файлд агуулагдах өгөгдөлтэй хамаатай байна / XML эсвэл XML биш /
• Дотоод хэл зүйн задлалтай ангид чанар – гүйгээр NDataDecl
EntityDef ::= ExternalID
• Гадаад хэл зүйн задлалгүй ангид чанар – тэй хамт NDataDecl
EntityDef ::= ExternalID NDataDecl?
UNU-IIST-eGov-course-XML-339
External Parsed Entities
External parsed entity is used to include fragments of XML from an external file into the current XML document.
Гадаад хэл зүйн бодит чанар нь гадаад файлаас XML-н хэсгийг агуулах байдлаар тухайн XML баримтруу ашиглагдана.
Тэдгээр хэсгүүд нь :– Сайн зохион байгуулагдаагүй хэсэгт хэрэгтэй– Диклараци төрлийн баримтыг агуулж чадахгүй
Багавтар файлын оршилоос том XML баримтуудыг бүтээхэд хэрэгтэй техникүүд бөгөөд олон XML баримтанд агуулгаа хуваадаг.
UNU-IIST-eGov-course-XML-340
Well-Formed External Parsed Entities
An external parsed entity is well-formed if the content of its replacement file matches the production extParsedEnt:
Хэрэв орлуулалтын агуулга файл бүтээгдэхүүнтэй тохирч байвал гадаад хэл зүйн шинж чанар сайн зохион байгуулалтай байна.
extParsedEnt ::= TextDecl? Content
Ийм файлууд нь текстэн мэдүүлгээр эхлэж болох юм.
TextDecl ::=
’<?xml’ VersionInfo? EncodingDecl S? ’?>’
XML мэдүүлэгтэй адил боловч мэдүүлгийн хэлбэр нь гол биш standalone илрэц нь хориотой байдаг.
UNU-IIST-eGov-course-XML-341
Example: External Parsed Entities
external ->parsed ->entity ->
declarations ->
external ->parsed ->entity ->
references ->
<?xml version="1.0"?><!DOCTYPE card SYSTEM "card.dtd" [ <!ENTITY visitor SYSTEM "visitor.xml"> <!ENTITY document SYSTEM "document.xml"> <!ENTITY addresses SYSTEM "addresses.xml"> <!ENTITY travel SYSTEM "travel.xml">]><card type="arrival">
&visitor;&document;&addresses;&travel;<signature sigfile="mysig"/>
</card>
UNU-IIST-eGov-course-XML-342
Example: External Parsed Entities Fragments
visitor.xml ->well-formedtext declaration:UTF-8 encoding
addresses.xml ->ill-formedtext declaration:UTF-16 encoding
<?xml encoding="UTF-8"?><visitor> <name type="surname">Kowalski</name> <name type="given">Jan</name> ...</visitor>
<?xml encoding="UTF-16"?><address where="home"> Morska 24B, 24-650 Gdańsk, Poland</address><address where="Macao"> Flower Garden 12B, Taipa</address>
UNU-IIST-eGov-course-XML-343
Demo: External Parsed Entities
> cd "demos/external parsed entities"
> ls
card.xml card.dtd visitor.xml
document.xml addresses.xml travel.xml
> emacs *.xml
> java dom.Counter -v card.xml
> java dom.Counter visitor.xml
> java dom.Counter document.xml
> java dom.Counter addresses.xml
> java dom.Counter travel.xml
UNU-IIST-eGov-course-XML-344
Task: Letter Body as External Parsed Entity
<!DOCTYPE letter [
...
<!ELEMENT body (#PCDATA | product)*>
<!ENTITY body SYSTEM "body.xml">
]>
<letter>
<opening>...</opening>
&body;
<closure>...</closure>
</letter>
UNU-IIST-eGov-course-XML-345
Next Declaration Type
хэлзүйн бус шинж чанарыг XML тэмдэглэлд хүргэх замаас өмнө бид танилцуулна.
Сануулга:
markupdecl ::=
elementdecl |
AttlistDecl |
EntityDecl |
NotationDecl |
PI | Comment
UNU-IIST-eGov-course-XML-346
Notations
Тэмдэглэл нэрээр тодорхойлно:
• Хэлзүйн бус шинж чанарын формат
• the format of elements which bear a notation attribute, or• Шинж чанарын тэмдэглэлтэй холбоотой элементийн форфмат
эсвэл• Зааврын дагуух программ харъяалагдсанаар
UNU-IIST-eGov-course-XML-347
Тэмдэглэлийн илэрхийлэл
Тэмдэглэл дараах байдлаар илэрхийлэгдэнэ:
NotationDecl ::=
’<!NOTATION’ S
Name S (ExternalID | PublicID) S? ’>’
UNU-IIST-eGov-course-XML-348
Notation Declarations
Үсэгчилсэн систем (ердийн URL or MIME type), нийтлэг хэсэг
(-//org//desc//lang), or хоёулаа:
ExternalID ::=
’SYSTEM’ S SystemLiteral |
’PUBLIC’ S PubidLiteral S SystemLiteral
PublicID ::= ’PUBLIC’ S PubidLiteral
Өгөгдсөн нэрэнд зөвхөн нэг тэмдэглэл тодорхойлогдоно.
UNU-IIST-eGov-course-XML-349
Notations and XML Processors
XML процесорууд
– must provide applications with the name and external identifiers of any notation used
– Нэртэй, ямар нэгэн тэмдэглэл гадаад тодорхойлогч программаар хангах
– Тэмдэглэлийн тодорхойлолт дахь гадаад тодорхойлогчийг өгөгдөлд зориулж дахин шийдэх
It is not an error if an XML document declares a notation for which no notation-specific processor is available on the system.
UNU-IIST-eGov-course-XML-350
Example: Notation Declarations
1. MIME type for jpg
2. MIME type for
troff-encoded text
3. application to
process data
4. URL to a technical
document about formats
5. A formal public
identifier to an
online resource
<!NOTATION jpeg SYSTEM "image/jpg">
<!NOTATION troff
SYSTEM "application/x-troff">
<!NOTATION gif
SYSTEM "/usr/local/bin/xv">
<!NOTATION date
SYSTEM "http://www.w3.org/TR/date.pdf">
<!NOTATION date
PUBLIC "-//W3C//Date Format//EN"
SYSTEM "http://www.w3.org/TR/date">
UNU-IIST-eGov-course-XML-351
External Unparsed Entities
Сануулагч:
EntityDef ::= EntityValue | (ExternalID NDataDecl?)
ExternalID ::=
’SYSTEM’ S SystemLiteral |
’PUBLIC’ S PubidLiteral S SystemLiteral
Гадаад хэл зүйн задлалгүй ангид чанарын илэрхийлэл нь гадаадID агуулдаг бөгөөд мөн NdataDecl, тэмдэглэлийн нэрийн
NDataDecl ::= S ’NDATA’ S Name
UNU-IIST-eGov-course-XML-352
External Unparsed Entities: Declaration
Гадаад хэлзүйн бус шинж чанар нь XML биш нэгдэх байдлаар хэрэглэгдэнэ. Ердийнөөр XML баримт руу давхар мэдээлэл дамжих
<!ENTITY view SYSTEM "view.jpg" NDATA jpeg>
It is declared in conjunction with a declared notation:
Илэрхийлэгдсэн холбоос нь илэрхийлэгдсэн тэмдэглэлтэй байна.
<!NOTATION jpeg SYSTEM "image/jpg">
UNU-IIST-eGov-course-XML-353
External Unparsed Entities: Use
<!ELEMENT product (#PCDATA)>
<!ATTLIST product
img ENTITY #IMPLIED>
<product img=’view’ ...>
XML Typewriter
</product>
Энэ нь бодит шинжийн шинж тэмдэгтийн хэмжээгээр ашиглагдах ба эсвэл бодит чанар view –р биш
UNU-IIST-eGov-course-XML-354
Example: External Unparsed Entities
root element ->
’product’ child ->
attributes of product:
text attribute ->
entity attribute ->
notation declaration ->
unparsed entity ->
unparsed entity
reference as value
of ’img’ attribute ->
<!DOCTYPE advert [
<!ELEMENT advert (#PCDATA | product)*>
<!ELEMENT product (#PCDATA)>
<!ATTLIST product
type CDATA #REQUIRED
img ENTITY #IMPLIED>
<!NOTATION jpeg SYSTEM "image/jpg">
<!ENTITY view SYSTEM
"view.jpg" NDATA jpeg>
...
]>
<advert>
<product img=’view’ ...>
XML Typewriter
</product> is the best &type; ...
</advert>
UNU-IIST-eGov-course-XML-355
Demo: External Unparsed Entities
> cd "demos/external unparsed entities"
> ls
advert.xml
> emacs advert.xml
> java dom.Counter -v advert.xml
UNU-IIST-eGov-course-XML-356
Task: Signature as External Unparsed Entity
<!DOCTYPE letter [ ...
<!ATTLIST officer
level (clerk | assistant | manager) "clerk"
signature ENTITY #IMPLIED>
<!ENTITY rod SYSTEM "rod.jpeg" NDATA jpeg>
<!NOTATION jpeg SYSTEM "image/jpg">
]>
<letter> ...
Sincerely,
<officer level="manager" signature="rod">
Steven Rod
</officer> ...
</letter>
UNU-IIST-eGov-course-XML-357
Parameter Entities
Сануулагч:
EntityDecl ::= GEDecl | PEDecl
Параметр бодит шинж нь DTD-д зориулж дахин ашиглагдах механизм байна.
UNU-IIST-eGov-course-XML-358
Parameter Entities
Тэдгээр нь илэрхийлэгдсэн байх ба зөвхөн DTD –д ашиглагдана.
• Илэрхийлэл:
PEDecl ::= ’<!ENTITY’ S ’%’ S Name S PEDef S? ’>’
PEDef ::= EntityValue | ExternalID
• Заалт: %name;
Параметр бодит шинж /ангид шинж /-н өөрчлөлтийн текст нь илэрхийлэлтэд тодорхой байрших
UNU-IIST-eGov-course-XML-359
Parameter versus General Entities
Ерөнхий бодит чанартай харьцуул
• Бодит чанарын дараа параметр бодит чанарын илэрхийлэл хэрэглэгдэнэ.
1. Параметр бодит чанарын илэрхийлэл нь ndatadecl-гүй ба тэнд хэлзүйн бус гадаад параметр бодит шинжүүд байна.
2. Параметр бодит чанар нь нэртэй нэргүй гэсэн тодорхойлолттой байна.
3. Параметр бодит чанарын тодорхойлолт нь зөвхөн DTD –р танигдана.
UNU-IIST-eGov-course-XML-360
Internal and External Parameter Entities
• Дотоод бодит шинж ахин ашиглагдах хэсгээс DTD хэлбэрт өөрчлөлтийн текстээр тодорхойлно.
PEDecl ::=
’<!ENTITY’ S ’%’ S Name S EntityValue S? ’>’
• Гадаад бодит шинжүүд-гадаад файлаас DTD агуулга авчирна.
PEDecl ::=
’<!ENTITY’ S ’%’ S Name S ExternalID S? ’>’
UNU-IIST-eGov-course-XML-361
Internal Parameter Entity Usage
Түгээмэл хэрэглэгдэх шинж:
1. to serve as documentation of an intended specific datatype for an attribute that is actually declared as CDATA or NMToken:
<!ENTITY % Margin "CDATA">
<!ENTITY % Color "CDATA">
<!ENTITY % URI "CDATA">
UNU-IIST-eGov-course-XML-362
Internal Parameter Entity Usage
1. DTD-д түгээмэл элементийн агуулгын хэлбэрийг тодорхойлох
<!ENTITY % fontstyle "tt | i | b | big | small">
<!ENTITY % phrase "em | strong | code | cite | code">
<!ENTITY % inline "a | %fontstyle; | %phrase;">
UNU-IIST-eGov-course-XML-363
Internal Parameter Entity Usage
3. DTD-д олон төрлийн контентоор давтан хэрэглэгдэх холбоотой шинж тэмдгийн илэрхийллийн группийг цуглуулах
<!ATTLIST frame %standard; %color; %margins;>
<!ENTITY % standard "
id ID #IMPLIED
xml:base %URI; #IMPLIED">
<!ENTITY % color "
background %Color; #IMPLIED
foreground %Color; #IMPLIED">
<!ENTITY % margins "
left %Margin; #IMPLIED
right %Margin; #IMPLIED">
UNU-IIST-eGov-course-XML-364
Parameter Entity References
Бодит шинжийн илэрхийлэл, бодит шинжийн хэмжээгээр
EntityValue ::=
’"’ ([ˆ%&"] | PEReference | Reference)* ’"’ |
"’" ([ˆ%&’] | PEReference | Reference)* "’"
Энэ тохиолдолд зөвхөн гадаад DTD-т л зөвшөөрөгдөнө.
doctypedecl ::=
’<!DOCTYPE’ S Name (S ExternalID)? S?
(’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’
UNU-IIST-eGov-course-XML-365
Parameter Entity References
Баримтын хэлбэрийн илэрхийлэл, тусгаарлагчууд
doctypedecl ::=
’<!DOCTYPE’ S Name (S ExternalID)? S?
’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’
DeclSep ::= PEReference | S
This case is allowed in both internal and external DTD subsets.
Энэ тохиолдолд гадаад дотоод DTD subsets-г хоёуланг нь зөвшөөрнө.
UNU-IIST-eGov-course-XML-366
Example: External Parameter Entities
external general ->
entity references ->
->
->
<?xml version="1.0"?>
<!DOCTYPE card SYSTEM "card.dtd">
<card type="arrival">
&visitor;
&document;
&addresses;
&travel;
<signature sigfile="mysig"/>
</card>
UNU-IIST-eGov-course-XML-367
Example: External Parameter Entities
internal parameter entity
declaration ->
reference ->
external parameter entity
declaration ->
->
->
->
reference ->
->
->
->
external general entity
declaration ->
->
->
<!ENTITY % details "document, address, ...">
<!ELEMENT card (visitor, %details;, ...)>
<!ENTITY % visitor SYSTEM "visitor.dtd">
<!ENTITY % document SYSTEM "document.dtd">
<!ENTITY % address SYSTEM "address.dtd">
<!ENTITY % travel SYSTEM "travel.dtd">
%visitor;
%document;
%address;
%travel;
<!ENTITY visitor SYSTEM "visitor.xml">
<!ENTITY document SYSTEM "document.xml">
<!ENTITY addresses SYSTEM "addresses.xml">
<!ENTITY travel SYSTEM "travel.xml">
UNU-IIST-eGov-course-XML-368
Demo: Parameter Entities
> cd "demos/parameter entities"
> ls
card.xml visitor.xml document.xml
addresses.xml travel.xml
card.dtd date.dtd visitor.dtd document.dtd
address.dtd travel.dtd signature.dtd
> java dom.Counter -v card.xml
UNU-IIST-eGov-course-XML-369
Task: Officer Level as Parameter Entity
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ENTITY % levels "clerk | assistant | manager">
<!ATTLIST officer level (%levels;) "clerk">
]>
<letter>...</letter>
Ажиллахгүй гэж үү?
UNU-IIST-eGov-course-XML-370
Task: Officer Level as Parameter Entity
XML баримт:
<?xml version="1.0"?>
<!DOCTYPE letter SYSTEM "letter.dtd">
<letter>...</letter>
DTD баримт:
...
<!ENTITY % levels "clerk | assistant | manager">
<!ATTLIST officer level (%levels;) "clerk">
UNU-IIST-eGov-course-XML-371
Task: Entity Declarations in External File
DTD баримт :
<!ENTITY % entities SYSTEM "entities.dtd">
%entities;
...
Өөр DTD баримт:
<!ENTITY % levels "clerk | assistant | manager">
<!ENTITY polite "are sorry">
<!ENTITY decision "rejected">
UNU-IIST-eGov-course-XML-372
Well-Formed Entities
• Дотоод ерөнхий бодит шинж-орлуулах текст / параметр жагсаалт болоод төрхийн тэлэлтийн дараах текст /агуулгатайгаа тохирох
content ::=
CharData?
(
( element |
Reference |
CDSect |
PI |
Comment)
CharData?
)*
UNU-IIST-eGov-course-XML-373
More Well-Formed Entities
• Гадаад ерөнхий бодит шинж нь extParsedEnt-тай таарах
extParsedEnt ::= TextDecl? Content
• Параметр бодит шинжүүд нь тодорхойлолтоор сайн хэлбэржсэн байх.
UNU-IIST-eGov-course-XML-374
Nesting of Logical and Physical Structures
Сайн хэлбэржсний улмаас логикийн болоод физикийн бүтэц нь XML баримтанд тодорхой байршина.
None of:
Нэг бодит шинжээр эхэлж нөгөөгөөр дуусгах
Эхлэл - хаяг Тайлбар
Төгсгөл-хаяг Процессын заавар
Хоосон элементийн хаяг
Шинжийн тодорхойлолт
Элемент Бодит шинжийн жагсаалт
UNU-IIST-eGov-course-XML-375
External DTD Fragments
Гадаад DTD хэсгүүд нь XML баримтын хоёр аргаас холбогдоно.
• Гадаад параметр шинж чанарын тодорхойлолтын орлуулт текст нь илэрхийллийн тусгаарлагчид тохиолдоно. Тохирно.
extSubsetDecl ::=
(markupdecl | conditionalSect | DeclSep)*
A list of markup declarations, conditional sections and declaration separators.
UNU-IIST-eGov-course-XML-376
External DTD Fragments
• as ExternalID in the document type declaration:• Илэрхийллийн баримтан дахь гадаад id
doctypedecl ::=
’<!DOCTYPE’ S Name (S ExternalID)? S?
(’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’
DeclSep ::= PEReference | S
Энэ нь гадаад багцаар нэрлэгдэнэ. Таарч тохирох ёстой.
extSubset ::= TextDecl? extSubsetDecl
A replacement text for external parameter references, with an optional text declaration.
UNU-IIST-eGov-course-XML-377
Conditional Sections
DTD, агуулагдаагүй хэсгээс болоод агуулагдсан хэсэг дэхь илэрхийллийн гадаад хэсгийн хувь
conditionalSect ::=
’<![’ S? conditionTest S? ’[’ extSubsetDecl ’]]>’
UNU-IIST-eGov-course-XML-378
Conditional Sections Tests
Нэгээр тестлэхэд:
• INCLUDE• IGNORE or• a parameter entity reference who may be either of them• Хоёланг нь параметр бодит шинжийн тодорхойлолт
conditionTest ::=
’INCLUDE’ |
’IGNORE’ |
PEReference
UNU-IIST-eGov-course-XML-379
Example: Conditional Sections
always include ->
always ignore ->
parameter entity ->
include or ignore ->
<![INCLUDE[
<!ELEMENT travel (place, flight?)>
<!ATTLIST travel type (from) #IMPLIED>
]]>
<![IGNORE[
<!ELEMENT travel (place, flight?)>
<!ATTLIST travel type (to) #IMPLIED>
]]>
<!ENTITY % direction "IGNORE">
<![%direction;[
<!ELEMENT travel (place, flight?)>
<!ATTLIST travel type (to) #IMPLIED>
]]>
UNU-IIST-eGov-course-XML-380
Task: Conditional Acceptance/Rejection
<!ENTITY % accept "INCLUDE">
<!ENTITY % reject "IGNORE">
<![%accept;[
<!ENTITY polite "are pleased">
<!ENTITY decision "approved">
]]>
<![%reject;[
<!ENTITY polite "are sorry">
<!ENTITY decision "rejected">
]]>
UNU-IIST-eGov-course-XML-381
XML Processors
XML просесор: хүчинтэй болоод хүчингүй.
Гол баримтанд сайн зохион хэлбэржсэнд зөрчил тулгарах, уншигдахаар бусад үгзүйн бодит шинжүүд
– validating processors must report violations of the constraints expressed by the declarations in the DTD. They must read and process the entire DTD and all external parsed entities referenced in the document.
– Хүчинтэй просесорууд DTD дэх илэрхийллээр зөрчилдөх хариу
– Сайн зохион байгуулагдсан бүх дотоод DTD хэсэг, гол баримтанд хүчинтэй процессоор шалгахгүй байх.
Namespaces
UNU-IIST-eGov-course-XML-383
Program
1) Танилцуулга
a) идэвхижүүлэгч
b) давтлага
c) үндэс
d) W3C
2) XML хэл
a) Кодек
b) XML
c) DTD
d) namespaces
3) XML технологи
a) Хүчинтэй байдал (XML Schema)
b) Нэвтрэлт (Xзам)
c) хувиралт (XSLT)
4) XML Java үйл явц
a) Суурь програмчлал (DOM)
b) Үйлдэл дээрх програмчлал (SAX)
c) Дүрмэн програмчлал (XSLT)
UNU-IIST-eGov-course-XML-384
Холимог үгсийн сан
Бид SVG хэлбэрийг Docbook материалд орууллаа гэж бодъё.
•SVG, Docbook хоёр хоёул гарчигийн элементтэй
Тэднийг яаж ялгаж вэ?
<book>
<title>SVG Manual</title>
<chapter>
...
<mediaobject>
<imageobject>
<svg>
<title>SVG Example</title>
...
</svg>
</imageobject>
</mediaobject>
</chapter>
</book>
Ерөнхийдөө нэр зөрчилдөхгүй яаж өөр үгийг XML д холих вэ?
UNU-IIST-eGov-course-XML-385
Name Disambiguation with URI references
Шийдэл: leverage the uniqueness of Universal Resource
Төгс эх үндсийн
Identifiers (URI) ensured by the DNS (Domain Name System):
Тодорхойлогч , домэйн нэр
• SVG – http://www.w3.org/TR/SVG• DocBook – http://www.oasis-open.org/docbook• XML Schema - http://www.w3.org/2001/XMLSchema• etc.
Apply URI as a prefix to element/attribute names.
UNU-IIST-eGov-course-XML-386
URI as Name Prefixes
Үүнийг бод:
<book>
<http://www.oasis-open.org/docbook:title>
SVG Manual
</http://www.oasis-open.org/docbook:title>
...
<http://www.w3.org/TR/SVG:title>
SVG Example
</http://www.w3.org/TR/SVG:title>
</book>
Шийдэлд хоёр асуудал байна:• Элементийн нэрнүүд урт болж байна.• URIs нь XML нэрэнд зөвшөөрөгдөөгүй хэлбэрийг агуулсан байна
UNU-IIST-eGov-course-XML-387
XML Namespaces
Instead, associate URI with a short name – namespace – then use this namespace as a prefix to qualify element/attribute names.
<book
xmlns:docbook="http://www.oasis-open.org/docbook"
xmlns:svg="http://www.w3.org/TR/SVG">
...
<docbook:title>SVG Manual</docbook:title>
...
<svg:title>SVG Example</svg:title>
...
</book>
UNU-IIST-eGov-course-XML-388
Namespace Declaration
•Нэрний зай нь нөөц шинж тэмдгийн бүлгэмд илэрхийлэгдэнэ. Ийм төрлийн шинж тэмдэг нь xmlns or xmlns: префекстэй байна.
NSAttName ::= PrefixedAttName | DefaultAttName
2 төрлийн нэрнийзайн илэрхийлэл байна:
– энгийн – префикс агуулах
PrefixedAttName ::= ’xmlns:’ NCName
– үндсэн – префиксгүйгээр
DefaultAttName ::= ’xmlns’
UNU-IIST-eGov-course-XML-389
Namespace Prefix
NCName is the namespace prefix - any legal XML name without a colon:
NCName ::= (Letter | ’_’) (NCNameChar)*
NCNameChar ::=
Letter | Digit | ’.’ | ’-’ | ’_’ |
CombiningChar | Extender
Prefixes beginning with the sequence xml in any case combination, are reserved by XML and XML-related specification.
UNU-IIST-eGov-course-XML-390
Namespace Value
Нэрний зайн шинж тэмдгийн хэмжээ нь нэрний зайн нэр байна. • Энэ нь URI тодорхойлолттой байх• Хоосон холбоос нь зөвшөөрөгдсөн, гэхдээ зөвхөн үндсэн
нэрний зайнд хамаарагдана • URI байж болох, гэхдээ хэрэггүй ч, байгаа хаяганд чиглэх• Ердийнөөр үгсийн сангийн албан тодорхойлолтод нэрнийзай
чиглэгдэнэ. W3C зөвлөмж, DTD буюу XML бүдүүвч
Example: Namespace declarations
xmlns:docbook="http://www.oasis-open.org/docbook"xmlns:svg="http://www.w3.org/TR/SVG"xmlns="http://www.w3.org/TR/REC-xml-names"xmlns=""
UNU-IIST-eGov-course-XML-391
Example: Namespace Declarations
xmlns:docbook="http://www.oasis-open.org/docbook“
xmlns:svg="http://www.w3.org/TR/SVG"
xmlns="http://www.w3.org/TR/REC-xml-names"
xmlns=""
UNU-IIST-eGov-course-XML-392
Qualified Names
A qualified name is an XML name without “:”, or with one “:” separating the prefix and the local part:
Чанаржсан нэр нь “:” тэмдэггүйгээр эсэл нэг “:” салангид префикс ба дотоод хэсэгт XML нэрээр байна.
QName ::= (Prefix ’:’)? LocalPart
Prefix ::= NCName
LocalPart ::= NCName
The prefix must be declared in a namespace declaration.
Префикс нь нэрнийзайн илэрхийлэлд дурдагдсан байна.
UNU-IIST-eGov-course-XML-393
Example: Qualified Names
<book xmlns:docbook="http://www.oasis-open.org/docbook"> <docbook:title>
…</docbook:title>…
</book>
UNU-IIST-eGov-course-XML-394
Element and Attributes Revisited
Start tags, end tags and empty element tags with qualified names:
Эхлэлийн хаяг, төгсгөлийн хаяг, чанаржсан нэрний хоосон элементийн хаягнууд
STag ::= ’<’ QName (S Attribute)* S? ’>’
ETag ::= ’</’ QName S? ’>’
EmptyElemTag ::= ’<’ QName (S Attribute)* S? ’/>’
Шинж тэмдгүүд нь нэрний зайн илэрхийлэл эсвэл чанаржсан нэрний өгөгдсөн нэр дээр байна.
Attribute ::=
NSAttName Eq AttValue | QName Eq AttValue
UNU-IIST-eGov-course-XML-395
Нэрнийзайн шаардлага
Нэрний зай префикс элементэнд ашиглагдаж мөн шинж тэмдгийн нэрс байна.
• xmlns нэрний зайн хэсэгт зөвхөн хэрэглэгд эсвэл өөр төрлийн нэрийн зайтай хязгаарлахгүй.
• xml хязгаарын тэмдэглэлhttp://www.w3.org/XML/1998/namespace
• Өөр префиксүүд илэрхийлэгдсэн байх. – Префекс хэрэглэгдсэн үед элементийн эхлэлийн хаяг байна– Мэдрэгч элемент
UNU-IIST-eGov-course-XML-396
DTDs Revisited 1
Чанаржсан нэрсийн харагдац
1) Баримтын хэлбэрийн илэрхийлэл, үндсэн элемент рүү:
doctypedecl ::= ’<!DOCTYPE’ S
QName (S ExternalID)? S?
(’[’ (markupdecl | PEReference | S)* ’]’ S?)? ’>’
UNU-IIST-eGov-course-XML-397
DTDs Revisited 2
2) Элементийн илэрхийлэл, агуулгын хэсэг ба холимог хэлбэр:
elementdecl ::=
’<!ELEMENT’ S QName S contentspec S? ’>’
cp ::= (QName | choice | seq) (’?’ | ’*’ | ’+’)?
Mixed ::=
’(’ S? ’#PCDATA’ S? ’)’ |
’(’ S? ’#PCDATA’ (S? ’|’ S? QName)* S? ’)*’
UNU-IIST-eGov-course-XML-398
DTDs Revisited 3
3) in attribute list declarations and attribute definitions:
4) Шинж тэмдгийн жагсаалтын илэрхийлэл ба шинж тэмдгийн тодорхойлолтууд:
AttlistDecl ::=
’<!ATTLIST’ S QName AttDef* S? ’>’
AttDef ::=
S (QName | NSAttName) S AttType S DefaultDecl
UNU-IIST-eGov-course-XML-399
Location of Namespace Declarations
XML баримтан дахь баримтын илэрхийллийн нэрний зайн шаардлагаас шалтгаалж, нэрний зайн илэрхийлэл гарна.
– directly in the XML document– XML баримтын даруй – via a default attribute declared in the internal DTD subset– Дотоод DTD дахь үндсэн шинж тэмдгээр илэрхийлэгдэх
UNU-IIST-eGov-course-XML-400
Namespace Scoping
The namespace declaration applies to:
Нэрний зайн илэрхийллийн хандалт:
• the element where it is specified and• Элемент тодорхойлогдох • to descendants of this element, unless overridded by another namespace declaration with the same NSAttName part.• Элементийн
Multiple namespace can be declared within a single element.
Олон төрлийн нэрнийзай нэг элементийн дотор илэрхийлэгдэнэ.
UNU-IIST-eGov-course-XML-401
Жишээ: Нэрний зайны цар хүрээ
http://www.nul1.org ->
none ->
none ->
http://www.nul2.org ->
http://www.nul1.org ->
<nul:book xmlns:nul="http://www.nul1.org">…<title>
…</title>
<chap xmlns:nul="http://www.nul2.org">…
<nul:title>…
</nul:title></chap><nul:chap>
…</nul:chap>
</nul:book>
UNU-IIST-eGov-course-XML-402
Жишээ: Олон нэрний зай
none ->
http://www.nul1.org ->http://www.nul2.org ->http://www.nul2.org ->
ERROR ->->
<book xmlns:ns1="http://www.nul1.org" xmlns:ns2="http://www.nul2.org"> <ns1:title>...</ns1:title> <ns2:title>...</ns2:title> <ns3:chap xmlns:ns3="http://www.nul2.org"> <title ns2:status=... ns3:status=... > ... </title> </ns3:chap></book>
UNU-IIST-eGov-course-XML-403
Үндсэн нэрний зай
A default namespace applies to:
Үндсэн нэрний зай нь дараахыг илтгэнэ– the element where it is declared, provided it has no prefix– Элемент илэрхийлэгдсэн үед прифексгүй байна– to all its descendants with no prefix– Хойших бүх зүйл прифексгүй байна
If the URI reference is empty, then un-prefixed elements within its scope are considered not to be in any namespace.
Хэрэв URI тодорхойлолт хоосон байвал, прифексгүй элементүүдийн хэмжээ нэрнийзайгүйгээр төлөвлөгдөх
Үндсэн нэрнийзайг шинж тэмдгээр тодорхойлохгүй байх
UNU-IIST-eGov-course-XML-404
Example: Default Namespace
http://www.nul.org ->
http://www.nul.org ->http://www.nul1.org ->http://www.nul2.org ->
none ->
<book xmlns="http://www.nul.org" xmlns:ns1="http://www.nul1.org" xmlns:ns2="http://www.nul2.org"> <title>...</title> <ns1:title>...</ns1:title> <ns2:chap xmlns=""> <title>...</title> ... </ns2:chap></book>
UNU-IIST-eGov-course-XML-405
Task: Arrival Card with Namespaces
Retype a simple arrival card:Энгийн эргэлтийн картын дахин бичилт
<?xml version="1.0"?><card>
<visitor><name>Jan Kowalski</name>
</visitor><document>passport</document>
</card>
1. Үндсэн нэрний зайн http://www.macau.gov.mo баримтын бүх илэрхийлэл
2. Нэрний зайг зочлогчийн элементэнд илэрхийлэх 3. Make sure that name does not belong to any namespace.4. Нэрээ ямар нэгэн нэрний зайнаас хамааралгүйгээр хийх
UNU-IIST-eGov-course-XML-406
XML Namespace Recommendation
Namespaces in XML:
XML дэх нэрний зай– W3C Recommendation published in January 1999– 1999 оны нэг сард хэвлэгдсэн W3C зөвлөмж
– Editors: Tim Bray (Textuality), Dave Hollander (Hewlett-Packard), Andrew Layman (Microsoft)
– Редактор: – Хийсвэрлэл:
XML namespaces provide a simple method for qualifying element and attribute names used in Extensible Markup Language documents by associating them with namespaces identified by URI references.
UNU-IIST-eGov-course-XML-407
XML нэрний зайны адилшил
Conformance to the XML namespace specification:
XML нэрний зайн тодорхойлолтын нийцэл
• Элемент ба шинж тэмдгийн нэрнүүд нь тэг буюу нэг тодорхойлолх цэгийг агуулдаг.
• no entity name, PI target or notation name contains any colon• Бодит шинж тэмдэг, PI зорилго буюу тэмдэглэлийн нэр нь
тодорхойлолт цэгийг агуулдаг.
• ID, IDREF, IDREFS, ENTITY, ENTITIES хэлбэрийн шинж тэмдгийн хэмжээ нь ба тэмдэглэл тодорхойлолтын цэгийг агуулахгүй.
XML төлөвлөгөө
UNU-IIST-eGov-course-XML-409
Program
1) Танилцуулга
a) идэвхижүүлэлт
b) давтлага
c) Үндэс
d) W3C
2) XML хэл
a) Кодек
b) XML
c) DTD
d) Нэрнийзай
3) XML технологи
a) идэвхижүүлэлт (XML Schema)
b) гарц (Xзам)
c) хувиргалт (XSLT)
4) XML Java процесс
a) Суурь програмчлал (DOM)
b) Хөдөлгөөний суурь програмчлал (SAX)
c) Дүрмийн програмчлал (XSLT)
UNU-IIST-eGov-course-XML-410
DTD Limitations 1-2
1. Баримтын-төвийн-SGML DTDs-н хялбаршил баримтын чиглэлийн DTD болно.
Үр дүнгээр, DTDs үүд нь баримтын агуулгын тодорхойлолтод илүү тохирно.
2. no meta-өгөгдлийн хандалт - applications cannot access the content of the DTD, once the document is processed by an XML parser, e.g. via DOM.
3. DTD –н агуулгад програмчлал хандалт хийж чадахгүй. XML хэлзүйгээр баримт нь процеслогдох DOM-р
Grouping, sharing and reuse of markup declarations and all metadata information (data about data) in a DTD are lost.
UNU-IIST-eGov-course-XML-411
DTD Limitations 3
элементүүд Шинж тэмдгүүд
EMPTY CDATA
PCDATA ID NOTATION
element IDREF IDREFS
mixed NMTOKEN
NMTOKENS
ANY ENTITY ENTITIES
3. limited datatyping – DTDs provide very limited datatyping
DTDs маш хязгаарлагдмал өгөгдлийн хэлбэр олгогдох
UNU-IIST-eGov-course-XML-412
DTD Limitations 4-5
4. ranges or sets are hard to define - DTD enable enumeration of legal values for attributes and this is helpful for only very small sets – but not element content.
5. Хэмжээ буюу тодорхойлохолд хэцүү-
<!ATTLIST date dayofweek (monday | tuesday | wednesday | thursday | friday | saturday | sunday) #IMPLIED
>
5. no subclassing - DTD does not permit describing common data structures in a class definition, and capturing all variations in subclasses.
6. Дэд хуваагдалгүй-ангилалын тодорхойлолтод DTD нь ерөнхий өгөгдлийн бүтцийг тодорхойлохыг зөвшөөрөхгүй ба бүх дэд ангилалын хэлбэрийг хадгална.
UNU-IIST-eGov-course-XML-413
DTD Limitations 6-7
6. order of children is too rigid - DTD require us either:
• list all children elements (optional or not) in the order in which they must occur
<!ELEMENT P (A, B+, C?)>
• or use a mixed model where no order constraints are imposed
<!ELEMENT P (#PCDATA| A, B, C)*>
7. no namespace support – to check validity, we must keep prefixes in XML in synch with the DTD: if you change one, you have to change the other.
UNU-IIST-eGov-course-XML-414
DTD Limitations 8-9
8. Давталтыг илэрхийлэх цөөн аргууд
Элемент В яг 15 удаа тохиолдох ёстой:
<!ELEMENT P (A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,C)>
Элемент В 13-15удаа тохиолдож болно:
<!ELEMENT P(A,B,B,B,B,B,B,B,B,B,B,B,B,B,C)(A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,C)(A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,C)>
9. DTDs нь үндсэн гарлаараа бичигдсэн ба XML-г хэрэглээгүй бөгөөд DTD баримтанд XML түүлүүд ашиглагдахгүй юм.
UNU-IIST-eGov-course-XML-415
XML Schema – W3C Recommendation 1
W3C Recommendation May 2001.
Гурван хэсэг:
1. Primer - A non-normative document intended to provide an easily readable description of the XML Schema language. XML Schema Part 1: Structures and XML Schema Part 2: Datatypes provide the complete normative description of the XML Schema language.
UNU-IIST-eGov-course-XML-416
XML Schema – W3C Recommendation 2
2. Structures - XML Schema language offers facilities for describing the structure and constraining the contents of XML 1.0 documents, including those which exploit the XML Namespaces. The schema language, which is itself represented in XML 1.0 and uses namespaces, considerably extends the capabilities found in DTDs.
3. Datatypes - Defines facilities for defining datatypes to be used in XML Schemas as well as other XML specifications. The datatype language, which is itself represented in XML 1.0, provides a superset of the capabilities found in XML 1.0 DTDs for specifying datatypes on elements and attributes.
UNU-IIST-eGov-course-XML-417
Example: XML versus DTD
XML instance ->document ->
->->->->->->
Document Type ->Definition ->
->->->
<?xml version="1.0"?><!DOCTYPE date SYSTEM "date.dtd"><date> <day>14</day> <month>September</month> <year>2003</year> <weekday>Sunday</weekday></date>
<!ELEMENT date (day, month, year, weekday?)><!ELEMENT day (#PCDATA)><!ELEMENT month (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT weekday (#PCDATA)>
UNU-IIST-eGov-course-XML-418
Example: XML Schema
schema element ->schema namespace ->
date element ->complex type ->sequence of ->
day ->month ->year ->
weekday ->is optional ->
<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="date"> <xsd:complexType> <xsd:sequence> <xsd:element name="day" type="xsd:string"/> <xsd:element name="month" type="xsd:string"/> <xsd:element name="year" type="xsd:string"/> <xsd:element name="weekday" minOccur="0" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element></xsd:schema>
UNU-IIST-eGov-course-XML-419
Example: XML Referring Schema
Location ofthe schemadocument ->Namespace ->declarationfor XMLinstancedocuments
<?xml version="1.0"?><date xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:noNamespaceSchemaLocation="date.xsd"> <day>14</day> <month>September</month> <year>2003</year> <weekday>Sunday</weekday></date>
UNU-IIST-eGov-course-XML-420
Example: XML Referring Schema and DTD
external DTD ->internal DTD ->
attribute ->declarations ->
schema location ->
namespace ->declaration
<?xml version="1.0"?><!DOCTYPE date SYSTEM "date.dtd"[ <!ATTLIST date xsi:noNamespaceSchemaLocation CDATA #IMPLIED xmlns:xsi CDATA #FIXED "...XMLSchema-instance">]><date xsi:noNamespaceSchemaLocation="date.xsd" xmlns:xsi="...XMLSchema-instance"> <day>14</day> <month>September</month> <year>2003</year> <weekday>Monday</weekday></date>
UNU-IIST-eGov-course-XML-421
Demo: DTD versus Schema Validation
> cd "demos/dtd versus schema validation"
> ls
date.xml date.dtd date.xsd
dateDTD.xml dateSchema.xml dateDTDSchema.xml
> java dom.Counter date.xml
> java dom.Counter -v dateDTD.xml
> java dom.Counter -s dateSchema.xml
> java dom.Counter -v dateDTDSchema.xml
> java dom.Counter -v -s dateDTDSchema.xml
UNU-IIST-eGov-course-XML-422
What Have Been Gained?
5 шугамын DTD-г 14 шугамын XML хэлбэрээр солих
Юу олж авсан бэ?
Сайн суурь босгохын тулд сайн бүдүүвчэй байх.
• илүү нарийн өгөгдлийнхэлбэр• мэдээллийн баазын бүтцийн дахин ашиглалт • илүү утга агуулгатай хэлбэр• XML syntax reused XML өгүүлбэрзүйн дахин ашиглал• XML хэрэглүүрийн хүсэлт• хувийн тодорхойлолт болоод хүчин төгөлдөр болох г.м• etc.
UNU-IIST-eGov-course-XML-423
Schema Document Structure
<schema …>
<include …/>
<import>…</import>
<redefine>…</redefine>
<annotation>…</annotation>
<simpleType>…</simpleType>
<complexType>…</complexType>
<element>…</element>
<attribute …/>
<attributeGroup>…</attributeGroup>
<group>…</group>
<annotation>…</annotation>
</schema>
root element ->
any number of ->
any number of ->
UNU-IIST-eGov-course-XML-424
Schema Namespace
XML schema standards is namespace-sensitive:
XML бүдүүвчийн стандарт нь нэрний зайн мэдрэмтгий
1. Энэ ньь өөр төрлийн нэрний зайн элемент, шинж тэмдэгүүдийн баримтыг тодорхойлдог.
2. namespaces distinguish between references to built-in data types and other types defined by the schema author
Schema belongs to http://www.w3.org/2001/XMLSchema namespace:
<schema xmlns=“http://www.w3.org/2001/XMLSchema”>
…
</schema>
UNU-IIST-eGov-course-XML-425
Referring to Schema: No Namespace 1
XML тохиолдлын баримт нь нэрийнзайгүй байна. <elem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schemaNoNamespace.xsd">this is text
</elem>
The attribute noNamespaceSchemaLocation determines the schema location for those elements that do not belong to any namespace.
Шинж тэмдэг нь noNamespaceSchemaLocation элементийн ямар нэгэн нэрний зайтай хамаарахгүй бүдүүвчийн байршилыг тодорхойлно.
The attribute belongs itself to the namespace Шинж тэмдэг нь нэрийнзайтай хамааралтай байна. http://www.w3.org/2001/XMLSchema-instance.
UNU-IIST-eGov-course-XML-426
Referring to Schema: No Namespace 2
XML Schema file schemaNoNamespace.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="elem" type="xsd:string"/></xsd:schema>
UNU-IIST-eGov-course-XML-427
Demo: No Namespace Validation
> cd “demos/schema no namespace“> dirschemaNoNamespace.xsd noNamespace.xml> java dom.Counter –v –s noNamespace.xml
UNU-IIST-eGov-course-XML-428
Comments
In addition to the normal XML comments, annotation elements distinguish between human- and software-aimed comments:
Нэмэлтээр энгийн XML тайлбарт, элементийн нэмэлт програмын
<annotation>
<documentation source=“…”>
this is documentation
</documentation>
<appinfo source=“…”>processing instruction</appinfo>
</annotation>
The source element includes a URL to the document with further information about the issue.
Асуудлын талаарх мэдээллийн баримтанд эх үүсвэрийн элемент URL-г агуулна.
UNU-IIST-eGov-course-XML-429
Element Declarations
Element declaration requires that there exists an element in the instance document:
Шаардах баримтан дахь элемень байгаа үед элементийн илэрхийлэл шаардагана.
– whose name is given by the name attribute and– Шинж тэмдгийн нэрээр өгөгдсөн нэр – whose content is of the type specified– Тодорхойлсон хэлбэрийн агуулга
<xsd:element name="date">
<xsd:complexType>...</xsd:complexType>
</xsd:element>
UNU-IIST-eGov-course-XML-430
Named and Anonymous Types
The type of the component may be given:
Бүрэлдэхүүн хэлбэр өгөгдвөл:
• as anonymous type embedded directly inside element:• Нэр нь үл мэдэгдэх хэлбэр нь элементэд шууд суугдана
<xsd:element name="date">
<xsd:complexType>...</xsd:complexType>
</xsd:element>
• as the named type referred by element via its type attribute
<xsd:element name="date" type="Date"/>
<xsd:complexType name="Data">
...
</xsd:complexType>
UNU-IIST-eGov-course-XML-431
Нэршсэн хэлбэрийн дахин ашиглалт
Нэршсэн хэлбэр нь зарим элементийн илэрхийлэлтэд дахин ашиглагддаг. <xsd:element name="date" type="Date"/>
<xsd:element name="mydate" type="Date"/>
<xsd:complexType name="Data">
...
</xsd:complexType>
Нэр нь үл мэдэгдэх хэлбэрүүд нь нэг элементийн илэрхийлэлтэнд ашиглагддаг.
UNU-IIST-eGov-course-XML-432
Top-Level Elements
Element declaration can occur at:
Элемент илэрхийлэмжийн
• top level – element must exist in the instance document\• Дээд түвшин - Элемент нь жишээ баримтын хэсэгт байрших
ёстой.
<xsd:element name="date" type="Date"/>
Зарим дээд түвшиний элементийн илэрхийлэмж өгөгдсөн тохиолдолд баримтанд элементийн нэг хэсэг байрших ёстой.
UNU-IIST-eGov-course-XML-433
Local-Level Elements
• Дотоод түвшин – хэв шинжийн тодорхойлолтын хэсэг
<xsd:complexType name="Data">
...
<xsd:element name="day" type="xsd:string">
...
</xsd:complexType>
UNU-IIST-eGov-course-XML-434
Task: Schema for Arrival Card
Return the arrival card to the no-namespace version:
Нэрийн зайгүй хэлбэрийн эргэлтийн картанд шилжих <?xml version="1.0"?>
<card>
<visitor>
<name>Jan Kowalski</name>
</visitor>
<document>passport</document>
</card>
Картанд зориулсан дизайны скиз
XML баримтаас скиз хамаарах
Schema-validate the document.
Скиз – баримтыг хүчин төгөлдөр болгох
UNU-IIST-eGov-course-XML-435
Element Repetition
Local-level elements can contain repetition attributes:
Дотоод түвшиний элемент нь давталтын шинж тэмдгийг агуулах
• minOccurs – minimal number of occurrences, default 1• Үндсэн 1, тохиолдлын хамгийн баг тоо
<xsd:element name="elem" minOccurs="0"/>
• maxOccurs – maximum number of occurrences, default 1• Үндсэн 1, тохиолдлын хамгийн их тоо
<xsd:element name="elem“
minOccurs="2“ maxOccurs="unbounded"/>
UNU-IIST-eGov-course-XML-436
Task: Repeated Names
In the schema allow the visitor to have from one to three names.
Скизэнд зочинд нэгээс гурван нэрэнд зөвшөөрөл өгдөг.
XML баримтыг өөрчлөх
Хүчин төгөлдөр болгох
UNU-IIST-eGov-course-XML-437
Element Reference
Top-level elements can be referred when declaring local-level elements; no name and type attributes are needed.
Дотоод түвшиний элементийг илэрхийлэхэд дээд түвшиний элемент хамаарагдана, нэр хэлбэргүй шинж тэмдгүүд хэрэгтэй.
<xsd:element name="day" type="xsd:string"/>
<xsd:complexType name="Date">
...
</xsd:element ref="day"/>
...
</xsd:complexType>
UNU-IIST-eGov-course-XML-438
Task: Top-Level Visitor Element
In the schema define the visitor element on the top-level.
Дээд түвшинд зочин элементийн скизд тодорхойлно.
Refer to the visitor from the card type.
Картны төрөлөөс зочинд хамаарагдах
Хүчин төгөлдөр болгох
UNU-IIST-eGov-course-XML-439
Simple and Complex Types
Хэлбэрүүд энгийн бөгөөд комплекс байна.
• Энгийн хэлбэрүүд нь шинж тэмдгийн хэмжээг тодорхойлно. Мөн элемент нь текст болоод шинж тэмдгийг агуулна. / гэхдээ хүүхэдгүй / <xsd:simpleType name="productNumber">
...
</xsd:simpleType>
• complex types describe elements with text, attributes and children• Комплекс хэлбэрүүд текстэн элементүүд мөн шинж тэмдэг, хүүхдүүдийг
тодорхойлно.
<xsd:complexType name="productSpecification">
...
</xsd:complexType>
UNU-IIST-eGov-course-XML-440
Pre-Defined and User-Defined Types
XML Schema provides 44 pre-defined simple types, usually referred to with a prefix. Other types have to be declared:
XML скиз нь 44 урьдчилан тодорхойлсон энгийн хэлбэрүүдийг тодорхойлох бөгөөд ихэвчлэн префекст хамааралтай байна. Бусад хэлбэрүүд нь илэрхийлэгдсэн байх ёстой.
• pre-defined type xsd:string•Урьдчилан тодорхойлсон хэлбэр
<xsd:element name="day" type="xsd:string"/>
• user-defined type Date хэрэглэгчийн тодорхойлсон хэлбэр <xsd:element name="date" type="Date"/>
<xsd:complexType name="Data">
...
</xsd:complexType>
UNU-IIST-eGov-course-XML-441
Pre-Defined Types: DTD and String
DTD type Schema type example
ID string a practical guide
IDREF normalizedString a practical guide
IDREFS token a practical guide
ENTITY Name my:book, book
ENTITIES NCName book
NMTOKEN QName my:book
NMTOKENS language de, en
NOTATION anyURI http://www.iist.unu.edu
UNU-IIST-eGov-course-XML-442
Pre-Defined Types: Numeric
Schema type Schema type
boolean byte
float short
double int
decimal long
integer unsignedByte
nonNegativeInteger unsignedShort
positiveInteger unsignedInt
negativeInteger unsignedLong
nonPositiveInteger base64Binary
hexBinary
UNU-IIST-eGov-course-XML-443
Pre-Defined Types: Date and Time
Schema type example
duration P2Y4M7DT10H30M17.5S
date 2003-09-15
time 15:07:01
dateTime 2003-09-15T15:07:00
gYear 2003
gMonth --02
gYearMonth 2003-09
gDay ---15
gMonthDay --09-15
UNU-IIST-eGov-course-XML-444
Task: Predefined Versus User-Defined Date
In the schema for the arrival card, define date of birth as:
1. Урьдчилан тодорхойлсон хэлбэр
2. Тусгаарлагдсан элементүүдийн тодорхойлогдсон хэлбэрийг ашиглах
a) Өдөр
b) Сар
c) Жил
UNU-IIST-eGov-course-XML-445
User-Defined Simple Types: Restriction
Given pre-defined simple types, we can derive new simple types.
This can be done by:
• restriction
<xsd:simpleType name="myType">
<xsd:restriction base="simpleType">
<facet1 value="..."/>
<facet2 value="..."/>
<facet3 value="..."/>
</xsd:restriction>
</xsd:simpleType>
UNU-IIST-eGov-course-XML-446
User-Defined Simple Types: List and Union
• Дараалал
<xsd:simpleType name="myType">
<xsd:list itemType="simpleType">
</xsd:simpleType>
• Нэгдэл
<xsd:simpleType name="myType">
<xsd:union memberTypes="simpleType1 simpleType2">
</xsd:simpleType>
UNU-IIST-eGov-course-XML-447
Facets for Simple Type Restriction
XML Schema defines 12 constraining facets:XML скиз 12
string types numeric types
length minInclusive
minLength maxInclusive
maxLength minExclusive
pattern maxExclusive
enumeration totalDigits
whiteSpace fractionDigits
UNU-IIST-eGov-course-XML-448
Facets: MinLength and MaxLength
Strings of 5 to 10 characters:
5 холбоосоос 10 шинж тэмдэгт
<xsd:simpleType name="string5to10">
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
UNU-IIST-eGov-course-XML-449
Task: Restricted String Types
In the schema for the arrival card, define the travel document element with the number element.
Define the number element as the string of exactly 10 characters.
UNU-IIST-eGov-course-XML-450
Facets: MinInclusive and MaxInclusive
Numbers in the range from 1 to 31:
<xsd:simpleType name="days">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="31"/>
</xsd:restriction>
</xsd:simpleType>
UNU-IIST-eGov-course-XML-451
Task: Restricted Numerical Types
In the schema for the arrival card, define
Ирэлтийн карт, тодорхойлох
a) Өдөр
b) Сар
c) Жил
Хязгаарлалтын тоон хэлбэрүүд.
UNU-IIST-eGov-course-XML-452
Facets: Enumeration
<xsd:simpleType name="weekDays">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Monday"/>
<xsd:enumeration value="Tuesday"/>
<xsd:enumeration value="Wednesday"/>
<xsd:enumeration value="Thursday"/>
<xsd:enumeration value="Friday"/>
<xsd:enumeration value="Saturday"/>
<xsd:enumeration value="Sunday"/>
</xsd:restriction>
</xsd:simpleType>
Only enumeration and pattern can appear many times.
UNU-IIST-eGov-course-XML-453
Task: Enumerated String Types
Inside schema for the arrival card, define the sex element inside the visitor element using string enumeration.
UNU-IIST-eGov-course-XML-454
Facets: TotalDigits and FractionDigits
Price type with 2 fraction digits and 8 in total:
2 хуваагдалт үнийн хэлбэр, нийт 8
<xsd:simpleType name="Price">
<xsd:restriction base="xsd:float">
<xsd:totalDigits value="8"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
UNU-IIST-eGov-course-XML-455
Facets: Pattern
Strings of upper-case or lower-case letters (холигдоогүй):
<xsd:simpleType name="myName">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]+"/>
<xsd:pattern value="[a-z]+"/>
</xsd:restriction>
</xsd:simpleType>
The value of a pattern is a regular expression.
Хэв загварын хэмжээ нь энгийн тайлбартай.
UNU-IIST-eGov-course-XML-456
Facets: Regular Expressions for Patterns
* zero or more
+ one or more
? zero or one
. any character
(a|b) a or b
(abc) sequence of a, b and c
[abc] any or a, b or c
[ˆa-z] not a letter in the range
(expr){n} expr repeated exactly n times
(expr){m,n} expr repeated from m to n times
\p{X} one character from the Unicode character class X
UNU-IIST-eGov-course-XML-457
Task: Patterns for String Types
Inside schema for the arrival card, define the travel document identifier following three constraints:
Ирэх карта доторхи скиз болоод аялалын баримтын тодорхойлогч нь доорх гурван бичилттэй.
1. the identifier consists of 10 characters
2.Тодотгогч нь 10 бүрдлээс тогтоно
3. the first two characters are letters
4.Эхний хоёр шинж нь үсэгнүүд
5. the last eight characters are digits
6.Сүүлийн найман шинж нь тоонууд
UNU-IIST-eGov-course-XML-458
Declarations with Simple Types
• Элементүүд нь энгийн болоод комплекс хэлбэрүүдтэй байна
<xsd:element name="price" type="Price"/>
<xsd:simpleType name="Price">
...
</xsd:simpleType>
• Шинж тэмдэг нь үргэлж энгийн хэлбэрүүдэй байна. <xsd:attribute name="price">
<xsd:simpleType>
...
</xsd:simpleType>
</xsd:attribute>
UNU-IIST-eGov-course-XML-459
Attribute Declarations
Similar to element declarations, with name, type and ref attributes.
Элементийн илэрхийлэл нь адил байна.
Attribute declaration is related to the parent element, it must follow the declarations of the element’s children:
<xsd:complexType name="Collection">
...
<xsd:element ref="book"/>
<xsd:element ref="CD"/>
<xsd:attribute name="version" type="xsd:string"/>
</xsd:complexType>
Only elements with complex types may contain attributes!
Зөвхөн комплекс төрөлтэй элемент нь шинж тэмдгийг агуулж болох юм.
UNU-IIST-eGov-course-XML-460
Top- and Local-Level Attributes
Like elements, attributes can be defined at top and local levels:
Элемент шиг, шинж тэмдэг нь дээд, дотоод түвшинээр тодорхойлогдоно.
• top level attribute – referred by local-level attributes• Дээд түвшины шинж тэмдэг –дотоод түвшиний шинж тэмдгээр
тодорхойлогдох <xsd:attribute name="version" type="xsd:string"/>
• local level attribute – content of its parent element:• Дотоод түвшины шинж тэмдэг-гарал элементийн агуулга
<xsd:complexType name="Collection">
...
<xsd:element ref="CD"/>
<xsd:attribute ref="version"/>
</xsd:complexType>
UNU-IIST-eGov-course-XML-461
Attributes and Types
• Нэршсэн хэлбэрийн шинж тэмдэг <xsd:attribute name="version" type="xsd:string"/>
• Нэр нь үл мэдэгдэх хэлбэрийн шинж тэмдэг
<xsd:attribute name="versions">
<xsd:simpleType>
<xsd:list itemType="Version"/>
</xsd:simpleType>
</xsd:attribute>
• Дотоод түвшиний шинж тэмдэг дээд түвшины шинж тэмдэгтэй хамааралтай болох нь <xsd:attribute ref="version"/>
UNU-IIST-eGov-course-XML-462
Attribute Occurrence
Шинж тэмдгийн хэрэглээ нь шинж тэмдгийн тохиолдлыг тодорхойлно.
• Шинж тэмдэг шаардлагатай
<xsd:attribute name="version" use="required" .../>
• Шинж тэдэг түр биш байнгын
<xsd:attribute name="version" use="optional" .../>
• Шинж тэмдэг нь хориглогдсон
<xsd:attribute name="version" use="prohibited" .../>
UNU-IIST-eGov-course-XML-463
Attribute Default and Fixed Values
Хоёроос илүү шинж тэмдгүүд:
•Шинж тэмдэгт байх холигдсон хэмжээ
<xsd:attribute name="version" fixed="1.0" .../>
• default – шинж тэмдэгт байх үндсэн хэмжээ
<xsd:attribute name="version" default="1.0" .../>
Хэрэв элемент дутвал шинж тэмдэгт байх тогтмол хэрэгжихгүй
UNU-IIST-eGov-course-XML-464
Complex Type Definition
Consists of element declarations/references embedded inside a content model, and attribute declarations:
<xsd:complexType name="...">
<xsd:sequence>
<xsd:element .../>
<xsd:element .../>
</xsd:sequence>
<xsd:attribute .../>
<xsd:attribute .../>
</xsd:complexType>
UNU-IIST-eGov-course-XML-465
Content Models
Гурван агуулгын хэлбэрүүд
• sequence – адилтгах a,b) in DTD• choice – адилтгах a|b in DTD• all – DTD-д тохиолдохгүй.
They can be nested within each other to any level, and may have minOccurs and maxOccurs attributes.
Тэд ямарч түвинд хоорондоо байршдаг, шинж тэмдгийн minOccurs ба maxOccurs -тай.
UNU-IIST-eGov-course-XML-466
Sequence Content Model
Elements must occur exactly in the order indicated, and they all must occur (unless minOccurs="0" for individual elements):
Элементүүд яг дарааллаар заагдана. Мөн тэд заавал тохиолдох бөгөөд minOccurs="0" –гүйгээр тусдаа элемент
<xsd:complexType>
<xsd:sequence>
<xsd:element name="day" type="day"/>
<xsd:element name="month" type="month"/>
<xsd:element name="year" type="xsd:integer"/>
<xsd:element name="weekeday“
minOccurs="0" type="weekDay"/>
</xsd:sequence>
</xsd:complexType>
UNU-IIST-eGov-course-XML-467
Choice Content Model
Exactly one of elements may occur; elements are mutually exclusive:
Элементийн яг нэг нь тохиолдох ба элемент бүр хамааралтай бус
<xsd:complexType name="address">
<xsd:sequence>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:choice minOccurs="0">
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="province" type="xsd:string"/>
</xsd:choice>
<xsd:element ref="zip"/>
</xsd:sequence>
</xsd:complexType>
UNU-IIST-eGov-course-XML-468
All Content Model
This model does not occur in DTD, but it does occur in SGML.
DTD-д загвар тохиолдохгүй боловч SGML –д байна.
All of the element may appear, in any order.
Бүх элемент харагдаж болох ба яман нэгэн дарааллаар
Хязгаарлалт:• each element may occur no more than once: minOccurs is zero or
one, maxOccurs is one• Агуулагдаагүй sequence and choice загварууд • must occur as the only immediate child at the beginning of the
content model, and occur no more than once• Агуулга хэлбэрийн эхлэлд зөвхөн хүүхэд байх ба нэгээс илүүгүй
байна.
UNU-IIST-eGov-course-XML-469
All Content Model
Хаяг заавал байх нөхцөлд: гудамж, хот, улс, улсын код, мөн аймаг хот байх. Ямар ч элементийн дарааллыг зөвшөөрнө.
<xsd:complexType name="address">
<xsd:all>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state"
minOccurs="0" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
<xsd:element ref="zip"/>
</xsd:all>
</xsd:complexType>
UNU-IIST-eGov-course-XML-470
Complex Types Again
Formally, there are two ways to define complex types:
Албан ёсоор, комплекс төрлийг тодорхойлох хоёр арга байдаг.
• simpleContent – Мэдээллийн баазын шинж тэмдгийн зөвшөөрөл ба шинж тэмдэг
<xsd:complexType>
<xsd:simpleContent>...</xsd:simpleContent>
</xsd:complexType>• complexContent – Хүүхдийн элементийн зөвөөршрөл ба шинж
тэмдгүүд, энэ нь үндсэн, тиймээс хасагдана.
<xsd:complexType>
<xsd:complexContent>...</xsd:complexContent>
</xsd:complexType>
UNU-IIST-eGov-course-XML-471
Derivation of Complex Types
Four ways to derive a complex type from another type:
Бусад хэлбэрээс комплекс хэлбэрийг 4 аргаар үүслийг тогтооно
1. Энгийн хэлбэрийн өргөтгөл
2. Өөр комплексийн төрлийн өргөтгөл
3. restriction of another complex type
4. Өөр комплексын төрлийн хязгаарлалт
1. Ямар нэгэн хэлбэрийн ерөнхий хязгаарлал
UNU-IIST-eGov-course-XML-472
Adding Attributes
Adding version and status attributes (both string) to an element with simple content (integer):
Хувилбар нэмэх ба энгийн агуулгаар элементэд байх шинж тэмдгийн статус
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:integer">
<xsd:attribute name="version" type="xsd:string"/>
<xsd:attribute name="status" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
UNU-IIST-eGov-course-XML-473
Adding Elements
Adding new and more elements to an existing myType, at the
end of its children list:myType-т new ба more элементүүдийг нэмэх
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="myType">
<xsd:sequence>
<xsd:element name="new" type="xsd:string"/>
<xsd:element name="more" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
UNU-IIST-eGov-course-XML-474
Removing Children Elements
When removing elements of an existing myType, we have to repeat all its children (modified or not), except those that are being removed:
myType –н орших элементийн устгалд, бид
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base="myType">
<xsd:sequence>
<xsd:element name="old" type="xsd:string"/>
<xsd:element name="modified" type="xsd:integer"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
UNU-IIST-eGov-course-XML-475
Empty Elements
• element without content/attributes:• Агуулага/шинж тэмдэг-гүй элемент
<xsd:complexType name="empty"/>
• element without content but with attributes:• Агууллагүй элемент боловч шинж тэмдэг
<xsd:complexType name="empty">
<xsd:attribute name="price" type="xsd:integer"/>
<xsd:attribute name="version" type="xsd:string"/>
</xsd:complexType>
UNU-IIST-eGov-course-XML-476
Limiting Derivation
We can limit the derivation of types with the final attribute:
Бид сүүлийн шинж тэмдгийн үүсэлд хязгаарлалт хийж болно. • extended but not restricted• Тэлэгдсэн боловч хязгаарлагдаагүй
<xsd:complexType final="extension">...<xsd:complexType
• restricted but not extended• Хязгаарласан боловч тэлэгдээгүй
<xsd:complexType final="restriction">...<xsd:complexType>
• Бүхэлдээ үүсэхгүй байх<xsd:complexType final="#all">...<xsd:complexType>
UNU-IIST-eGov-course-XML-477
Mixed Content Model
• element content consists of either sub-elements or character data, but not both (default):
<xsd:complexType mixed="false">...<xsd:complexType>
• element content is a mixture of sub-elements and character data:
<xsd:complexType mixed="true">...<xsd:complexType>
The order and number of elements in the mixed model is constrained
by the schema, like in the non-mixed case; not possible for DTD.
UNU-IIST-eGov-course-XML-478
Any Content Model
Бүх энгийн ба комплеркс төрлүүд нь xsd:anyType.-с эх үүсвэрийн ялгалтаа тодорхойлно.
Ямар нэгэн хэлбэрийн хязгаарлалт нь комплекс агуулгаар үндсэн байна.
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element name="..." .../>
<xsd:element name="..." .../>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
UNU-IIST-eGov-course-XML-479
Element Groups: Declaration
Element group – a set of elements defined with a name:
Элементийн групп-элементийн нэрээр тодорхойлогдох
<xsd:group name="myGroup">
<xsd:sequence>
<xsd:element ref="name"/>
<xsd:element ref="scope"/>
</xsd:sequence>
</xsd:group>
Must be the immediate child of schema, and may contain sequence, choice or all only.
UNU-IIST-eGov-course-XML-480
Element Groups: Reference
Комплекс төрлийн тодорхойлолтод элементийн групп хамаарагдах
<xsd:complexType name="myType">
<xsd:sequence>
<xsd:group ref="myGroup"/>
<xsd:element ref="price"/>
</xsd:sequence>
</xsd:complexType>
Element groups play a similar role as parameter entities in DTD.
Элемент групп нь DTD-д параметрийн бодит шинжээр тэгш оролцох
UNU-IIST-eGov-course-XML-481
Attribute Groups: Declaration
Grouping attributes with attributeGroup:
<xsd:attributeGroup name="margins">
<xsd:attribute name="top" type="xsd:float"/>
<xsd:attribute name="bottom" type="xsd:float"/>
<xsd:attribute name="left" type="xsd:float"/>
<xsd:attribute name="right" type="xsd:float"/>
</xsd:attributeGroup>
Like group, attributeGroup is an immediate child of schema.
UNU-IIST-eGov-course-XML-482
Attribute Groups: Reference
Referencing an attribute group by its name:
Нэрсээр шинж тэмдгийн групп хамааралтай байх
<xsd:complexType name="myType">
<xsd:sequence>
<xsd:group ref="myGroup"/>
<xsd:element ref="price"/>
</xsd:sequence>
<xsd:attributeGroup ref="margins"/>
</xsd:complexType>
They also play the role similar to DTD’s parameter entities.
Тэд мөн DTD-н параметрийн бодит шинжид адил оролцоог үзүүлэх
UNU-IIST-eGov-course-XML-483
Referring to Schema: One Namespace 1
XML instance document with the default namespace http://www.w3c.org for all its elements:
<elem xmlns="http://www.w3c.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3c.org schemaNamespace.xsd"> text</elem>
The attribute SchemaLocation determines the schema location for the elements that belong to the specified namespace:
xsi:schemaLocation=“ namespace schema”
UNU-IIST-eGov-course-XML-484
Referring to Schema: One Namespace 2
XML Schema file schemaNamespace.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3c.org"> <xsd:element name="elem" type="xsd:string"/></xsd:schema>
The TargetNamespace attribute of schema determines the namespace this schema is used to validate.
Every schema is used to validate a single namespace!
UNU-IIST-eGov-course-XML-485
Demo: One Namespace Validation
> cd “demos/schema one namespace“> dirschemaNamespace.xsd namespace.xml> java dom.Counter –v –s namespace.xml
UNU-IIST-eGov-course-XML-486
Referring to Schema: Two Namespaces 1
XML instance document with two namespaces
XML тохиолдолд 2 нэрнийзайтай баримтын
http://www.w3c.org/1 and http://www.w3c.org/2:
<ns1:outside xmlns:ns1="http://www.w3c.org/1" xmlns:ns2="http://www.w3c.org/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.w3c.org/1 schemaNamespace1.xsd http://www.w3c.org/2 schemaNamespace2.xsd">
<ns2:inside>text</ns2:inside>
</ns1:outside>
UNU-IIST-eGov-course-XML-487
Referring to Schema: Two Namespaces 2
The attribute SchemaLocation determines the schema locations for the elements that belong to specified namespaces:
xsi:schemaLocation=“namespace1 schema1namespace2 schema2namespace3 schema3…”
UNU-IIST-eGov-course-XML-488
Referring to Schema: Two Namespaces 3
The file schemaNamespace1.xsd used to validate the elements from the namespace http://www.w3c.org/1:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.iist.unu.edu/1">
<xsd:element name="outside"> <xsd:complexType> <xsd:sequence> <xsd:any namespace="http://www.iist.unu.edu/2"/> </xsd:sequence> </xsd:complexType> </xsd:element>
</xsd:schema>
UNU-IIST-eGov-course-XML-489
Referring to Schema: Two Namespaces 4
The file schemaNamespace2.xsd used to validate the elements from the namespace http://www.w3c.org/2:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.iist.unu.edu/2">
<xsd:element name="inside" type="xsd:string"/>
</xsd:schema>
UNU-IIST-eGov-course-XML-490
Demo: Two Namespace Validation
> cd “demos/schema two namespaces“> dirschemaNamespace1.xsd schemaNamespace1.xsd namespaces.xml> java dom.Counter –v –s namespaces.xml
UNU-IIST-eGov-course-XML-491
Instance Documents and Qualification
Should elements/attributes in an instance document be qualified?
Элементүүд баримтын шинж тэмдэгт чанаржих уу
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.iist.unu.edu/xml"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xsd:element name="top">...</xsd:element>
...
</xsd:schema>
• qualified – Тэд байх ёстой нэрнийзайнд байна• unqualified – Тэд ямар нэгэн нэрний зайнд байх хэрэггүй,
үндсэн
UNU-IIST-eGov-course-XML-492
Schema Modularisation
Two top-level elements permit the inclusion of an external schema:
Гадаад бүдүүвчийн хамааралд хоёр дээд түвшиний элемент зөвөөрөгдөнө
• Элментрүү хандалтыг зөвшөөрөхг, өөр нэрний зайнаа хэлбэрийн тодорхойлол
• include – the target namespace of the included schema must be the same as the target namespace of the including schema
• Хамааралтай бүдүүвчийн зорилтот нэрний зай нь хамаарагдах бүдүүвчийн зорилтот нэрний зайтай адил байна.
Тэд бүдүүвч дэх ямар нэгэн бусад тодорхойлолтод урьдчилан тохиолдоно.
UNU-IIST-eGov-course-XML-493
DTD for XML Schema
namespace prefix ->
namespace sufix ->
namespace declaration ->
schema qualified name ->
schema element declaration ->
->
->
schema attributes
version ->
schema namespace ->
default namespace ->
unique identifier ->
other attributes ->
<!ENTITY % p ’xs:’>
<!ENTITY % s ’:xs’>
<!ENTITY % nds ’xmlns%s;’>
<!ENTITY % schema "%p;schema">
<!ELEMENT %schema;
(%simpleType; | %complexType; |
%element; | %attribute; | ...)*>
<!ATTLIST %schema;
version CDATA #IMPLIED
%nds; %URIref; #FIXED ’...XMLSchema’
xmlns CDATA #IMPLIED
id ID #IMPLIED
%schemaAttrs;>
XML төслийн баримтын XML өгүүлбэрзүй хандалтыг үндэслэлд шалгагдах. Албан XML төслийн DTD хэсэгчлэл
UNU-IIST-eGov-course-XML-494
DTD Validation of XML Schema Documents
Идэвхижүүлэх баримт:
Any XML document which is not valid per this DTD given redefinitions in its internal subset of the ’p’ and ’s’ parameter entities appropriate to its namespace declaration of the XML Schema namespace is almost certainly not a valid schema.
XPath
UNU-IIST-eGov-course-XML-496
Program
1) Танилцуулга
a) идэвхижүүлэл
b) давталт
c) үндсэн
d) W3C
2) XML хэл
a) юникод
b) XML
c) DTD
d) нэрнийзай
3) XML технологи
a) идэвхижилт (XML Schema)
b) хандалт (XPath)
c) Хувиралт (XSLT)
4) XML Java процесс
a) Суурь програмчлал (DOM)
b) Үйлдлийн програмчлал (SAX)
c) Дүрмийн програмчлал (XSLT)
UNU-IIST-eGov-course-XML-497
XPath
XML баримтын хаягжилтын хэсэгт хүрэх хэл
Apart from this main goal, Энэ гол хэсгээс гадна, нэмэлт боломжуудаар хангагдана.
1. Текстийн нарийвчлал, тоо, логиг дэс дараа
2. Баримтын тэмдэглэлд хэвжилт хийгдэх
3. Хэвжилт хангалттай үед шалгах
XSLT-н хэрэглээнд XЗаагч.
W3C Recommendation November 1999.
UNU-IIST-eGov-course-XML-498
XPath Features
X зам XML тэмдэглэл бишээр зохицуулагдах
Xзам XML баримтын логик бүтцэнд үйлдэгдэнэ.
Its name originates from the path notation to navigate the hierarchical tree structures of XML documents.
UNU-IIST-eGov-course-XML-499
Evaluating XPath Expressions
Evaluating an XPath expression returns one of four kinds of objects:
Xзамын үнэлэлтийн тайлбар объетын 4 төрлийн нэгээр эргэнэ.
1. set of nodes
2. boolean (true or false) буруу зөв
3. number (floating point) тоо, урсах чиг
4. string (list of UCS characters) холбос / UCS шинжийн жагсаалт /
UNU-IIST-eGov-course-XML-500
Evaluation Context
Expression is evaluated with respect to the context:
1. context node
2. Зөв тооны хослол: контекстийн хэмжээ байрлал
3. Тогтмол бишийн үнэлэмж; 4 төрлийн нэг
4. function library with arguments are results of the four types
5. Нэрний зайн илэрхийлэл
Үнэлгээний явцад:– variables, functions and namespaces remain unchanged– Тогтмол биш, үйл хөдлөл, нэрнийзайн байдал үл өөрчлөгдөх – Байрлал хэмжээ өөрчлөгдөх
UNU-IIST-eGov-course-XML-501
Task: Create XML Document
collection.xml: бүтээх
<?xml version="1.0"?>
<collection>
<book>
<title>Learning XML</title>
<review>4</review>
</book>
<book id=“abc”>
<title>Java and XML</title>
</book>
<article>
<title>XML and Semantic Web</title>
<journal><title>CACM</title></journal>
</article>
</collection>
UNU-IIST-eGov-course-XML-502
Task: Create XSLT Document
Create collection.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match=“/">
<xsl:for-each select=“CONTEXT">
<xsl:value-of select="XPATH"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-503
Task: XPath Experiments
Use the values of CONTEXT and XPATH to test XPath expressions.
Сэдвийн хэмжээ ба Xзам тайлбар.
Ж нь:
CONTEXT = /
XPATH = .
Run:
> java org.apache.xalan.xslt.Process
-in collection.xml
-xsl collection.xsl
UNU-IIST-eGov-course-XML-504
Relative Paths
The simplest path is the reference to an element name.
Хамгийн энгийн зам нь элементийн нэрэнд хүрэх тодорхойлолт юм.
Let:
CONTEXT = collection
XPATH = .
UNU-IIST-eGov-course-XML-505
Multiple Steps
Зам нь хоёр алхамтай:
collection/article
Let:
CONTEXT = collection/article
XPATH = .
UNU-IIST-eGov-course-XML-506
Wildcard Steps
Any element may occur between collection and title:
Ямар нэгэн элемент цуглуулга болоод гарчигийн хооронд тохиолдолж болно.
collection/*/title
Let:
CONTEXT = collection/*/title
XPATH = .
UNU-IIST-eGov-course-XML-507
Descendants Selection
Any number of elements may occur between collection and title:
Элементийн тоо нь багц гарчигийн хооронд тохиолдож болно.
collection//title
Let:
CONTEXT = collection//title
XPATH = .
UNU-IIST-eGov-course-XML-508
Self, Parents and Grandparents
Өөрөө: .
Эцэг эх: ..
Өвөг эцэг: ../..
Let:
CONTEXT = collection/article
XPATH = .
XPATH = ../book
XPATH = ../..
UNU-IIST-eGov-course-XML-509
Absolute Path
/collection/article selects article from every context node.
Let:
CONTEXT = collection/book
XPATH = /collection/article
//title selects all title elements in the document:
Let:
CONTEXT = //title
XPATH = .
UNU-IIST-eGov-course-XML-510
Predicates
Location paths are indiscriminate in node selection.
Байршлын зам нь гол сонголтонд цэцгцгүй байна.
Баталгаа:
book[…]/title
can be used to quality any step in the path.
Зам дахь ямар нэгэн алхам чанарт хэрэглэгдэнэ.
UNU-IIST-eGov-course-XML-511
Position Tests
2-р номыг сонгох:
para[position()=2]
Let:
CONTEXT = collection/book[position()=2]
XPATH = .
UNU-IIST-eGov-course-XML-512
Presence Tests
Selects a books with a review element:
Элементийн давтлагад сонгох ном.
collection/book[review]
Let:
CONTEXT = collection/book[review]
XPATH = .
UNU-IIST-eGov-course-XML-513
Value Tests
Selects a books with a given title:
Өгөгдсөн сэдвээр ном сонгох
collection/book[title='Java and XML']
Let:
CONTEXT = collection/book[title='Java and XML']
XPATH = .
UNU-IIST-eGov-course-XML-514
Attribute Presence Test
Selects book if it contains an attribute id:
Хэрэв шинж тэмдгийн ID багтсан бол түүнийг сонгох
book[@id]
Let:
CONTEXT = //book[@id]
XPATH = .
UNU-IIST-eGov-course-XML-515
Attribute Value Test
Abc гэсэн үнэлэмжтэй шинж тэмдгийн id багтаасан бол сонгох
book[@id=“abc”]
Let:
CONTEXT = //book[@id=“abc”]
XPATH = .
UNU-IIST-eGov-course-XML-516
Boolean Tests: Negation
Selects book if it does not contain an attribute id:
Шинж тэмдгийн iD агуулаагүй бол сонгох
book[not(@id)]
Let:
CONTEXT = //book[not(@id)]
XPATH = .
UNU-IIST-eGov-course-XML-517
Boolean Tests: Disjunction
Хэрэв өнгөрсөн хэсэгт тохиолдоогүй болон шинж тэмдгийн id агуулаагүй бол элементийн ном сонгох
book[not(@id) or position()=2]
Let:
CONTEXT = //book[not(@id) or position()=last()]
XPATH = .
UNU-IIST-eGov-course-XML-518
String Calculation: Contains
Selects the element book which title contains ‘Java’:
Java сэдэв агуулсан ном сонгох
//book/title[contains(text(),'Java')]
Let:
CONTEXT = //book/title[contains(text(),'Java')]
XPATH = .
UNU-IIST-eGov-course-XML-519
String Calculation: Substring
Selects the element book which title contains ‘Java’:
Java сэдэв агуулсан элементийн ном сонгох
//book/title[contains(text(),'Java')]
Сэдэвийн эхний дөрвөн шинжийг илтгэх
substring(.,1,4)
Let:
CONTEXT = //book/title[contains(text(),'Java')]
XPATH = substring(.,1,4)
UNU-IIST-eGov-course-XML-520
Multiple Predicates
Predicates can be combined.Таамаглал дэвшигдсэн байх.
First select all books with the id attribute, then among them all books with the “Java and XML” title:Шинж тэмдгийн id –тай бүх ном эхлээд сонгох тэгээд java xml сэдэвтэй бүх
номнуудыг сонгох
//book[@id][title='Java and XML']
Let:
CONTEXT = //book[@id][title='Java and XML']XPATH = .
XSLT
UNU-IIST-eGov-course-XML-522
Program
1) Introduction
a) motivation
b) overview
c) origin
d) W3C
2) XML Language
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML Technologies
a) validation (XML Schema)
b) access (XPath)
c) transformation (XSLT)
4) XML Java Processing
a) tree-based programming (DOM)
b) event-based programming (SAX)
c) rule-based programming (XSLT)
UNU-IIST-eGov-course-XML-523
XSL
XSL = eXtensible Stylesheet Langugage
Гурван хэсгээс бүдэнэ:
• XSLT – an XML хэл for XML баримтын хувиргалт
• XSL-FO – an XML language for formatting semantics• XML хэл өгүүлбэр зүйн форматанд хэрэглэнэ.
• XML баримтын хаягийн хэсэгт XML –гүй өгүүлбэр зүй. Мөн Xхолбоос ашиглагдана, Xхэсэг, Xасуулт
UNU-IIST-eGov-course-XML-524
XSLT
• XSLT = eXtensible Stylesheet Language Transformations• XSLT=өргөтгөлийн загвархуудасны хэлний хувиргалт
• XSLT is a fully-fledged declarative programming language specializing in XML transformations
• XSLT нь XML хувиргалтанд зориулагдсан програмчлалын зөвшөөрөгдсөн хэл юм
• XSLT programs are themselves written in XML• XSLT програм нь XML –д бичигдэнэ.
UNU-IIST-eGov-course-XML-525
XSLT
• XSLT = eXtensible Stylesheet Language Transformations
• XSLT is a fully-fledged declarative programming language specializing in XML transformations
• XSLT • XSLT программууд өөрсдөө XML дээр бичигдсэн
UNU-IIST-eGov-course-XML-526
Example: XML Input
<?xml version=“1.0”?>
<greeting>
Hello World!
</greeting>
UNU-IIST-eGov-course-XML-527
Example: XSLT Program
<xsl:stylesheet version=“1.0”
xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>
<xsl:output method=“html”/>
<xsl:template match=“/”>
<xsl:apply-templates select=“greeting”/>
</xsl:template>
<xsl:template match=“greeting”>
<html>
<body>
<h1><xsl:value-of select=“.”/></h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-528
Example: Invocation
java org.apache.xalan.xslt.Process
-in greeting.xml
-xsl greeting.xsl
-out greeting.html
UNU-IIST-eGov-course-XML-529
Example: HTML Output
<html>
<body>
<h1>
Hello World!
</h1>
</body>
</html>
UNU-IIST-eGov-course-XML-530
XSLT Document Structure
Үндсэн элемент ба нэрнийзайн илэрхийлэл
<xsl:stylesheet
version=“1.0”
xmlns:xsl=http://www.w3.org/1999/XSL/Transform>
…
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-531
Гаралтын формат 1
Гаралтын баримтын формат гэж юу вэ?
<xsl:stylesheet version=“1.0”
xmlns:xsl=http://www.w3.org/1999/XSL/Transform>
<xsl:output method=“html”/>
…
</xsl:stylesheet>
Боломжууд: text, HTML, XML.
UNU-IIST-eGov-course-XML-532
Бүтээмжийн формат2
Бүтээмж бүр өөрийн шинж чанарын форматын аргыг дэмждэг
Жнь:
<xsl:stylesheet version=“1.0”
xmlns:xsl=http://www.w3.org/1999/XSL/Transform>
<xsl:output method=“html” ident=“yes”/>
…
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-533
XSLT Processing
XSLT программ нь оролтын баримтаас гаралтын баримт руу хувиргалт хийх юм.
Хувиргалт нь доорх байдлаар
1.Оролтын элементийн эсрэг тохирсон загварууд
2.Гаралтын баримтын хэсгийг тодорхойлох
UNU-IIST-eGov-course-XML-534
XSLT загварууд
Загварын гол формат:
<xsl:template match=“xpath-expr”>
…
</xsl:template>
Тохирох шинж тэмдгийн нөлөөлөл нь Xзамын илэрхийлэл
Загвар зөвхөн суурь элементийг тохируулна:
<xsl:template match=“/”>
…
</xsl:template>
UNU-IIST-eGov-course-XML-535
Applying XSLT Templates
Тухайн элементийн өгөгдсөн мэндчилгээгээр бусад загварыг идэвхижүүлэх
<xsl:template match=“/”>
<xsl:apply-templates select=“greeting”/>
</xsl:template>
UNU-IIST-eGov-course-XML-536
Templates with Text
Таарч байгаа загвар:
<xsl:template match=“greeting”>
<html>
<body>
<h1>
<xsl:value-of select=“.”/>
</h1>
</body>
</html>
</xsl:template>
Гадагшаа текст явуул (HTML markup).
UNU-IIST-eGov-course-XML-537
Referring to the Current Element
Тухайн элементийн агуулга гадагшаа илгээгдсэн (мэндчилгээ)
<xsl:template match=“greeting”>
<html>
<body>
<h1>
<xsl:value-of select=“.”/>
</h1>
</body>
</html>
</xsl:template>
UNU-IIST-eGov-course-XML-538
Template Processing
Let the current context contain the root element.тухайн нөхцөлд агуулагдах үндсэн элементэнд
1) are there any nodes to process in the current context?2) Тухайн нөхцөлд ямар нэгэн цөм процесс явагдах уу?
3) for every node in the context:
a) Уулзвар цэгт тохирох загвар байна уу? i. Хэрэв зарим загвар байгаа бол нарийнийг нь сонгоii. Хэрэв загваргүй бол, үндсэн загварыг сонго
b) invoke the template recursively for the next context
UNU-IIST-eGov-course-XML-539
Default Templates 1
Тодорхой загвар дутсанд идэвхижүүлэх
1. Хэрэв өгөгдсөн элементэнд загваргүй бол үргэлжилсэн процес батлагдах
<xsl:template match=“*|/”>
<xsl:apply-templates/>
</xsl:template>
UNU-IIST-eGov-course-XML-540
Default Templates 2
2. Нөхцлөөс шалтгаалахгүйээр элемент хэрэгжих
<xsl:template match="*|/" mode="x">
<xsl:apply-templates mode="x"/>
</xsl:template>
3. Сонгогдсон шинж чанар, текст нь гадагшаа илгээгдэнэ.
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
UNU-IIST-eGov-course-XML-541
Default Templates 3
4. Тайлбар, процессн заавар хэрэгжихгүй.
<xsl:template
match="comment() |
processing-instruction()"/>
5. Нэрний зайн цөм хэрэгжихгүй. /үйлдэгдэхгүй/
<xsl:template match="namespace()"/>
UNU-IIST-eGov-course-XML-542
Template Attributes
Загвар нь доорх шинж тэмдгүүний нэгийг агуулсан байх ёстой.
1. match – Тохирох элемент байгаа тохиолдолд загварыг идэвхижүүлнэ.
<xsl:template match="...">...</xsl:template>
2. name – Нэрээр дуудагдсан загвар:
<xsl:template name="...">...</xsl:template>
UNU-IIST-eGov-course-XML-543
Calling Template by Name
Нэршсэн загварын тодорхойлолт:
<xsl:template name=“myName">...</xsl:template>
Загвар байршуулах:
<xsl:template ...>
<xsl:call-template name=“myName"/>
</xsl:template>
UNU-IIST-eGov-course-XML-544
Example: Named Template
<xsl:template match="root">
<xsl:call-template name=“myName"/>
<xsl:call-template name=“myName"/>
</xsl:template>
<xsl:template name=“myName">
<xsl:text>text</xsl:text>
</xsl:template>
UNU-IIST-eGov-course-XML-545
Matched Template
Тохирсон загварын тодорхойлолт:
<xsl:template match="elem">...</xsl:template>
Загвар идэвхижүүлэх:
1. Тухайн нөхцлийн бүх хүүхдийг идэвхижүүлэх
<xsl:apply-templates/>
2. Гол хэсгийг сонгох загварын идэвхижилт
<xsl:apply-templates select="..."/>
UNU-IIST-eGov-course-XML-546
Example: Matched Template
<xsl:template match="root">
<xsl:apply-templates/>
<xsl:apply-templates select="@att"/>
</xsl:template>
<xsl:template match="elem">
<xsl:text>elementy</xsl:text>
</xsl:template>
<xsl:template name="@att">
<xsl:text>atrybuty</xsl:text>
</xsl:template>
UNU-IIST-eGov-course-XML-547
Templates with Mode
Загвар хэлбэрийн шинж тэмдгийг агуулах зарим хэсгийн төвд ижил олгогдсон байна.
Хэлбэрийн загварын тодорхойлолт
<xsl:template match="..." mode="...">
...
</xsl:template>
Загварчлалыг хэрэгжүүлэх
<xsl:apply-templates select="..." mode="...">
UNU-IIST-eGov-course-XML-548
Example: Templates with Mode
<xsl:template match="root">
<xsl:apply-templates mode=“mode1"/>
<xsl:apply-templates mode=“mode2"/>
</xsl:template>
<xsl:template match="elem" mode=“mode1">
<xsl:text>mode1:</xsl:text>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="elem" mode=“mode2">
<xsl:text>mode2:</xsl:text>
<xsl:value-of select="."/>
</xsl:template>
UNU-IIST-eGov-course-XML-549
Task: Simplify Credit Card Letter
Баримт байрласан хэсгээс XML байршсан өгөгдөлд
<?xml version="1.0"?>
<letter>
<customer>Simon White</customer>
<product>credit card</product>
<officer level="manager">Steven Rod</officer>
<enclosure>credit card</enclosure>
<enclosure>initial PIN</enclosure>
</letter>
UNU-IIST-eGov-course-XML-550
Task: Create the Transformation Stylesheet
Хүлээн авах захианы өөрчөлтийг үүсгэх
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="letter">
Dear <xsl:value-of select="customer"/>,
We are pleased to inform you that your
<xsl:value-of select="product"/> application
has been accepted.
Sincerely, <xsl:value-of select="officer"/>
</xsl:template>
</xsl:stylesheet>
UNU-IIST-eGov-course-XML-551
Task: Run the Transformation
Гүйцэтгэ xalan:
> xalan letter.xml letter.xsl output
Үр дүн нь юу вэ?
UNU-IIST-eGov-course-XML-552
Task: Change Default Output Format
<?xml version="1.0"?>
<xsl:stylesheet ...>
<xsl:output method="text"/>
<xsl:template match="letter">...</xsl:template>
</xsl:stylesheet>
Run xalan. Өөрчлөлтийг анхаарах.
UNU-IIST-eGov-course-XML-553
Task: Modify the Stylesheet
Захианы загвар:
<xsl:template match="letter">
Dear <xsl:value-of select="customer"/>,
<xsl:apply-templates select="product"/>
Sincerely, <xsl:value-of select="officer"/>
</xsl:template>
Бүтээгдэхүүний загвар:
<xsl:template match="product">
We are pleased to inform you that your
<xsl:value-of select="."/> application
has been accepted.
</xsl:template>
UNU-IIST-eGov-course-XML-554
Task: Run the Transformation
Гүйцэтгэх xalan:
> xalan letter.xml letter.xsl output
Өөр өөрчлөлт?
UNU-IIST-eGov-course-XML-555
Task: Add Officer’s Level
Хэрэглэгчийн шинж чанарын түвшинг харгалзах
<xsl:template match="letter">
Dear <xsl:value-of select="customer"/>,
<xsl:apply-templates select="product"/>
Sincerely, <xsl:value-of select="officer"/>
(<xsl:value-of select="officer/@level"/>)
</xsl:template>
Run xalan.
UNU-IIST-eGov-course-XML-556
Which Template?
Өгөгдсөн нөхцөлд загвар байхгүй.
<xsl:template match="root">...</xsl:template>
<xsl:template match="sub">...</xsl:template>
<root att=“value">
<elem><sub>text1</sub></elem>
</root>
Үндсэн загварыг ашигла.
UNU-IIST-eGov-course-XML-557
Which Template?
Өгөгдсөн нөхцөлд яг нэг загвар байна.
<xsl:template match="root">...</xsl:template>
<xsl:template match="elem">...</xsl:template>
<root att=“value">
<elem><sub>text1</sub></elem>
</root>
Энэ загварыг идэвхижүүл
UNU-IIST-eGov-course-XML-558
Which Template?
Өгөгдсөн нөхцөлд 2 загвар байна.
<xsl:template match="root">...</xsl:template>
<xsl:template match="sub">...</xsl:template>
<xsl:template match="elem/sub">...</xsl:template>
<root att=“value">
<elem><sub>text1</sub></elem>
</root>
Тодорхой илүү загваруудыг идэвхижүүлэх
UNU-IIST-eGov-course-XML-559
Which Template?
Энд хоёр тэнцүү тодорхой загвар өгөгдсөн нөхцөлд тааруулна.
<xsl:template match="elem" priority="1">
<xsl:text>first</xsl:text>
</xsl:template>
<xsl:template match="elem" priority="0">
<xsl:text>second</xsl:text>
</xsl:template>
Загварыг өндөр зэргээр идэвхижүүлнэ.
UNU-IIST-eGov-course-XML-560
Which Template?
Энд хоёр тэнцүү тодорхой загвар өгөгдсөн нөхцөл адил чанарт чиглэгдэнэ. <xsl:template match="elem" priority="0">
<xsl:text>pierwszy</xsl:text>
</xsl:template>
<xsl:template match="elem" priority="0">
<xsl:text>drugi</xsl:text>
</xsl:template>
Загварын хуудсанд сүүлд тохиолдох загварыг идэвхижүүлэх
UNU-IIST-eGov-course-XML-561
Template with Parameters
Хоёр параметртэй загварын тодорхойлолт
<xsl:template name=“area">
<xsl:param name=“height"/>
<xsl:param name=“width"/>
<xsl:value-of select="$height * $width"/>
</xsl:template>
Бодит шалтгааны загварыг нэрлэх:
<xsl:call-template name=“area">
<xsl:with-param name=“height" select="10"/>
<xsl:with-param name=“width" select="20"/>
</xsl:call-template>
UNU-IIST-eGov-course-XML-562
Default Parameters
Параметрийн үндсэн хэмжигдэхүүнт загвар
<xsl:template name=“area">
<xsl:param name=“height">10</xsl:param>
<xsl:param name=“width">20</xsl:param>
<xsl:value-of select="$height * $width"/>
</xsl:template>
Нэг параметртэй загварыг дуудах
<xsl:call-template name=“area">
<xsl:with-param name=“height" select="30"/>
</xsl:call-template>
UNU-IIST-eGov-course-XML-563
Default Parameters with Choice
Параметртэй загвар оролтын баримттай үндсэн хэмжигдэхүүн байна.
<xsl:template name=“area">
<xsl:param name=“height" select=“hi"/>
<xsl:param name=“width" select=“wi"/>
<xsl:value-of select="$height * $width"/>
</xsl:template>
Параметргүй загвар нэршил:
<xsl:call-template name=“area"/>
UNU-IIST-eGov-course-XML-564
Global Parameters
Параметрын бүхэл загвархуудасны цар хүрээний өргөжилт
Загвар хуудасны элементийн хүүхдүүдээр тохиолдох
<xsl:stylesheet ...>
<xsl:param name=“depth">30</xsl:param>
...
</xsl:stylesheet>
Дотоод параметрт үндсэн хэмжигдэхүүн
UNU-IIST-eGov-course-XML-565
Use of Global Parameters
Загвар дахь тал бүрийн параметрын ашиглалт
<xsl:template name=“volume">
<xsl:param name=“height" select=“height"/>
<xsl:param name=“width" select=“width"/>
<xsl:value-of select="$height * $width* $depth"/>
</xsl:template>
UNU-IIST-eGov-course-XML-566
Global Parameter Assignment
Гадаад параметр гүйцэтгэлийн шугамд шийдэгдэнэ.
Жнь:
java org.apache.xalan.xslt.Process
-in file.xml
-xsl file.xsl
-out file.out
-param depth 50
Гүнзгий параметрт:
<xsl:param name="gleb"/>
UNU-IIST-eGov-course-XML-567
Variables
Хувьсах илэрхийлэмж:
1. нэр x хоосон хэмжигдэхүүн :
<xsl:variable name="x"/>
2. нэр x хэмжээtest:
<xsl:variable name="x" select="'test'"/>
3. нэр x тест элементийн хэмжээ:
<xsl:variable name="x" select="test"/>
UNU-IIST-eGov-course-XML-568
Example: Variables
The value of the depth variable depends on the choice expression that refers to the depth element:
<xsl:template name=“depth">
<xsl:param name=“heigth" select=“height"/>
<xsl:param name=“width" select=“width"/>
<xsl:variable name=“depth">
<xsl:choose>
<xsl:when test=“depth = ‘one'">1</xsl:when>
<xsl:when test=“depth = ‘two'">2</xsl:when>
<xsl:otherwise>3</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$height * $width * $depth"/>
</xsl:template>
UNU-IIST-eGov-course-XML-569
Variable Scope
Үзэгдэхгүй элементүүд илэрхийлэгдсэн байна:
1. Дотоод хувирал
<xsl:template name="...">
<xsl:variable name="...">...</xsl:variable>
</xsl:template>
2. Гадаад хувирамтгай
<xsl:stylesheet ...>
<xsl:variable name="...">...</xsl:variable>
...
</xsl:template>
UNU-IIST-eGov-course-XML-570
Variable or Constant?
Тогтмол.
Хувьсагчийн хэмжээ өөрчлөгдөхгүй.
UNU-IIST-eGov-course-XML-571
Conditional Execution
Элемент if:
<xsl:if test="...">
...
</xsl:if>
Тест шинж тэмдгийн хэмжээ тооцоологдсон бол:
1. true –Элементийн агуулга үйлдэгдэнэ.
2. false –Элементийн агуулга хэрэгсэхгүй
UNU-IIST-eGov-course-XML-572
Value of the test Attribute
Хэмжээ boolean:-руу хөрвөгдөнө.
1. Тоо – хэрэв тэг эсвэл NaN (тоогүй) тэгдээд худал, бусад нь үнэн
2. Цөм -байх – хэрэв хоосон тэгээд худал бол, бусад нь үнэн
3. Холбоос – хэрэв хоосон тэгээд худал бол, бусад нь үнэн
UNU-IIST-eGov-course-XML-573
Example: test Attributes
<xsl:if test="count(elem) >=2">
<xsl:if test="$x">
<xsl:if test="true()">
<xsl:if test="true">
<xsl:if test="'true'">
<xsl:if test="'false'">
<xsl:if test="not(3)">
<xsl:if test="section/section">
UNU-IIST-eGov-course-XML-574
Example: Conditional Execution
<xsl:if test="count(elem) = 2 and @att">
<xsl:text>condition fulfilled</xsl:text>
</xsl:if>
<root att="wartosc">
<elem>text1</elem>
<elem>text2</elem>
</root>
UNU-IIST-eGov-course-XML-575
Choice Execution
Дор хаяж нэг when, туслах чанарын otherwise:
<xsl:choose><xsl:when test="...">...</xsl:when>...<xsl:when test="...">...</xsl:when><xsl:otherwise>...</xsl:otherwise>
</xsl:choose>
The first element with the test attribute returning true is processed. Тестэн дэх эхний элемент шинж тэмдгийн үнэнд буцаагдах процесс
Хэрэв нэг нь байхгүй бол нөгөө агуулга үйлдэгдэнэ.
UNU-IIST-eGov-course-XML-576
Example: Choice Execution
<xsl:choose>
<xsl:when test="not(@att)">wybor 1</xsl:when>
<xsl:when test="contains(elem[1],elem[2])">
wybor 2
</xsl:when>
<xsl:otherwise>wybor 3</xsl:otherwise>
</xsl:choose>
<root att="wartosc">
<elem>maly przyklad</elem>
<elem>przyklad</elem>
</root>
UNU-IIST-eGov-course-XML-577
Task: Make Decision Explicit
Өөрчлөх XML:
<?xml version="1.0"?>
<letter decision="accepted">...</letter>
UNU-IIST-eGov-course-XML-578
Task: One Template for Each Decision
Хүлээж авах:
<xsl:template name="accepted">
We are pleased to inform you that your
<xsl:value-of select="product"/> application
has been accepted.
</xsl:template>
Түтгэлзэх:
<xsl:template name="rejected">
We are sorry to inform you that your
<xsl:value-of select="product"/> application
has been rejected.
</xsl:template>
UNU-IIST-eGov-course-XML-579
Task: Conditionally Call Templates
Шинж тэмдгийн шийдвэрээс үүдэн загварыг сонгох
<xsl:choose>
<xsl:when test="@decision=’accepted’">
<xsl:call-template name="accepted"/>
</xsl:when>
<xsl:when test="@decision=’rejected’">
<xsl:call-template name="rejected"/>
</xsl:when>
</xsl:choose>
UNU-IIST-eGov-course-XML-580
Task: Run Xalan for Each Case
• Хүлээж авах
<?xml version="1.0"?>
<letter decision="accepted">...</letter>
• Түтгэлзэх
<?xml version="1.0"?>
<letter decision="rejected">...</letter>
UNU-IIST-eGov-course-XML-581
Task: Modify Decision Templates
Тодорхой шийдвэр гаргах:
• Хүлээн зөвшөөрөгдсөн загвар
<xsl:template name="accepted">
We are pleased ... application has been
<xsl:value-of select="@decision"/>.
</xsl:template>
• Татгалзсан загвар
<xsl:template name="rejected">
We are sorry ... application has been
<xsl:value-of select="@decision"/>.
</xsl:template>
UNU-IIST-eGov-course-XML-582
Task: Unify Decision Templates
Дээд параметрээр биеийн бүтэц зохиох
<xsl:template name="body">
<xsl:param name="polite"/>
We are <xsl:value-of select="polite"/>
to inform you that your
<xsl:value-of select="product"/> application
has been <xsl:value-of select="@decision"/>.
</xsl:template>
UNU-IIST-eGov-course-XML-583
Task: Call Template with Parameter
<xsl:choose>
<xsl:when test="@decision=’accepted’">
<xsl:call-template name="body">
<xsl:with-param name="polite">pleased</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="@decision=’rejected’">
<xsl:call-template name="body">
<xsl:with-param name="polite">sorry</xsl:with-param>
</xsl:call-template>
</xsl:when>
</xsl:choose>
Run xalan хоёр тохиолдолд.
UNU-IIST-eGov-course-XML-584
Task: Remove Second Test
<xsl:choose>
<xsl:when test="@decision=’accepted’">
...
</xsl:when>
<xsl:otherwise>
...
</xsl:otherwise>
</xsl:choose>
Run xalan хоёуланд нь .
UNU-IIST-eGov-course-XML-585
Iterative Execution
Selects the set of node, then processes each of them in order selecting every time the new current node:
<xsl:for-each select="...">
...
</xsl:for-each>
Процессын өмнө дараалагдахаар анхлан зарим элемент агуулагдах
UNU-IIST-eGov-course-XML-586
Example: Iterative Execution
<xsl:for-each select="elem">
<xsl:value-of select="substring(.,1,5)"/>
</xsl:for-each>
<root att="wartosc">
<elem>small example</elem>
<elem>big example</elem>
</root>
UNU-IIST-eGov-course-XML-587
Sorting
Sorting the set of node after selection by apply-templates:<xsl:template match="root"> <xsl:apply-templates select="elem"> <xsl:sort/> </xsl:apply-templates></xsl:template>
<xsl:template match="elem"> <xsl:value-of select="."/></xsl:template>
Мөн хүүхдийн for-each.
UNU-IIST-eGov-course-XML-588
Sorting Order
Эсрэг ангилалын дараалал:
<xsl:template match="root">
<xsl:apply-templates select="elem">
<xsl:sort order="descending"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="elem">
<xsl:value-of select="."/>
</xsl:template>
UNU-IIST-eGov-course-XML-589
Task: Generate a List of Enclosures
Процесс бүр ба хавсралтын элементийг ашиглах <xsl:template match="letter">
...Enclosures:<xsl:for-each select="enclosure">
<xsl:sort/><xsl:value-of select="position()"/>.<xsl:value-of select="."/><xsl:text> </xsl:text>
</xsl:for-each></xsl:template>
Run xalan.
UNU-IIST-eGov-course-XML-590
Task: Sort the Enclosures
Use a sort element to sort the enclosures in ascending
lexicographic order:
<xsl:template match="letter">
...
Enclosures:
<xsl:for-each select="enclosure">
<xsl:sort/>
...
</xsl:for-each>
</xsl:template>
Run xalan.
UNU-IIST-eGov-course-XML-591
Task: Calculate the Number of Enclosures
Тоон үйлдлийн Xзам ашиглах:
<xsl:template match="letter">
...
Attached, please see
<xsl:value-of select="count(enclosure)"/>
enclosures.
...
</xsl:template>
Run xalan.
UNU-IIST-eGov-course-XML-592
Creating New Nodes
1. Элементүүд
2. Шинж тэмдгүүд
3. Текст
4. Процессын заавар
UNU-IIST-eGov-course-XML-593
Creating Elements 1
Elem нэрний элемент загварыг бүтээх, шинж тэмдгийн хэмжээний тэнцэтгэл
<xsl:template match="root">
<xsl:element name="elem">
<xsl:value-of select="@att"/>
</xsl:element>
</xsl:template>
UNU-IIST-eGov-course-XML-594
Creating Elements 2
Шинж тэмдгийн хэмжээнд загварын элемент тэнцүү нэршил бүтээх мөн шинж тэмдгийн нэр хэмжээтэй адил байх
<xsl:template match="root">
<xsl:element name="{@att}">
<xsl:value-of select="name(@att)"/>
</xsl:element>
</xsl:template>
UNU-IIST-eGov-course-XML-595
Creating Attributes
Элементийн агуулга загварын элементийн үндсийг шинж чанараар бүрдүүлэх
<xsl:template match="root">
<root>
<xsl:attribute name="att">
<xsl:value-of select="elem"/>
</xsl:attribute>
</root>
</xsl:template>
SAX
UNU-IIST-eGov-course-XML-597
Program
1) Танилцуулга
a) Идэвхижүүлэл
b) давтлага
c) үндэс
d) W3C
2) XML хэл
a) Кодек
b) XML
c) DTD
d) Нэрзай
3) XML технологи
a) Хүчинтэй байх (XML бүдүүвч)
b) нэвтрэлт (Xзам)
c) хувиргалт(XSLT)
4) XML Java процесс
a) Үйлдэлд үндэслэгдэх про(SAX)
b) Суурь програмчлал (DOM)
c) Дүрэмд суурилсан програмчлал (XSLT)
UNU-IIST-eGov-course-XML-598
XML Programming Models
Гурван програмын хэсэг:
• Үйлдэл дээр үндэслэгдсэн – SAX• Модон дээр үндэслэгдсэн – DOM• Загварт үндэслэгдсэн – XSLT
XML өгүүлбэрзүйг ашиглан хэрэхн программ бичих вэ?
UNU-IIST-eGov-course-XML-599
XML Processing Applications
The application has a built-in XML parser:
– the parser is rarely implemented, more often used off-the-shelf – the parser processes XML syntax in various phases of the
application’s execution
The application and the parser are both using the same model (API) and representation of the input XML file.
Here we concentrate on the XML API for Java.
UNU-IIST-eGov-course-XML-600
Java APIs for XML 1
Five different interfaces:
5 өөр интерфейс
• JAXP – Java API for XML Processing
Programming XML applications in Java using SAX, DOM and XSLT programming models.
2) JAXB – Java Architecture for XML Binding
Writing Java objects in XML (marshalling), converting XML back to Java (unmarshalling)
3) JAXR – Java API for XML Registries
Recording available services in an external registry, looking up the services in the registry.
UNU-IIST-eGov-course-XML-601
Java APIs for XML 2
4) JAXM – Java API for XML Messaging
Нэг зэрэг солилцооны бүтэц (send and forget) нь XML мэссеж солилцоон дундах програм юи.
5) JAX-RPC – Java API for XML RPC
Нэг зэрэг солилцооны бүтэц (send and wait for reply) нь XML мэссеж солилцоо явагдаж дууссаны дараах програм юи.
Here we describe JAXP – Java API for XML Processing.
UNU-IIST-eGov-course-XML-602
Java API for XML Processing
JAXP is available in the package javax.xml.parsers.
Хоёр хийсвэрлэлийн бүлэг дараах байдлаар хуваагдана:
1) SAXParserFactory – SAX parser ийг нээх ба тохируулах
2) DocumentBuilderFactory –DOM parser нээх ба тохируулах
UNU-IIST-eGov-course-XML-603
Replacing API Implementations
Factory classes allow to replace parser implementations without the need to change the application’s source code.
The implementation used depends on the setting of the properties:
Хэрэглэгдэх байдал дараах тохиргооноос хамаарна
1) javax.xml.parsers.SAXParserFactory
2) javax.xml.parsers.DocumentBuilderFactory
UNU-IIST-eGov-course-XML-604
SAX API
Simple API for XML.
A mechanism for processing XML documents element after element - serial and event-driven.
Most often used in server applications which are subject to the high performance requirements.
Серверийн програм нь ихэнхдээ өндөр хүчин чадал шаарддаг
UNU-IIST-eGov-course-XML-605
SAX API Architecture
UNU-IIST-eGov-course-XML-606
SAX API – Operation
1) the object of the factory class SAXParserFactory class creates the parser – object of the SAXParser class
2) the parser encapsulates the SAXReader object which is used to read the input XML document
3) during parsing, SAXReader invokes the methods that belong to the following four interfaces:
a) ContentHandler
b) ErrorHandler
c) DTDHandler
d) EntityResolver
4) Those methods are realized by the application.
UNU-IIST-eGov-course-XML-607
Create a SAX Parser Factory
Create an object of the SAX parser factory class:
SAXParserFactory factory =
SAXParserFactory.newInstance();
newInstance() арга нь:
public static SAXParserFactory newInstance()
throws FactoryConfigurationError
Үр дүн байхгүй бол алдааг харуулдаг
UNU-IIST-eGov-course-XML-608
Create a SAX Parser
Create the SAX parser through the new factory object:
SAXParser saxParser = factory.newSAXParser();
according to the current parameters set for the factory object.
newSAXParser() үр дүн нь:
public abstract SAXParser newSAXParser()
throws ParserConfigurationException, SAXException
Нэгтгэлийг дэмжихгүй
UNU-IIST-eGov-course-XML-609
Configuring the SAX Parser Factory
1. the parser handles namespaces
void setNamespaceAware(boolean awareness)
boolean isNamespaceAware()
2. the parser validates documents
void setValidating(boolean validating)
boolean isValidating()
UNU-IIST-eGov-course-XML-610
Parsing XML Documents
The SAXParser class enables parsing of XML documents that originate from different sources:
void parse(java.io.File f, ...)
void parse(java.io.InputStream is, ...)
void parse(java.lang.String uri, ...)
void parse(InputSource is, ...)
InputSource helps decide how the XML document should be read by the parser: as character stream, byte stream or the URL-addressed file.
UNU-IIST-eGov-course-XML-611
Handling SAX Events
The second argument of the parse method is the object for handling events generated during parsing:
void parse(..., DefaultHandler dh)
The DefaultHandler class includes default implementations for the event-handling methods, declared by the interfaces:
1. EntityResolver
2. DTDHandler
3. ContentHandler
4. ErrorHandler
UNU-IIST-eGov-course-XML-612
Entity-Resolving Events
Interface EntityResolver.
The parser will invoke this method before opening any external entity:
public InputSource
resolveEntity(String publicId, String systemId)
throws SAXException, java.io.IOException
where:
1. publicId is the Formal Public Identifier of the external entity, if one exists, otherwise null
2. systemId – is the system identifier of the external entity
UNU-IIST-eGov-course-XML-613
Error-Handling Events
Interface ErrorHandler. Алдааг мэдээлнэ:
1. Сануулга мэдэгдэхvoid warning(SAXParseException exc)
2. алдааг мэдэгдэхvoid error(SAXParseException exc)
3. fatal error мэдэгдэхvoid fatalError(SAXParseException exc)
This limitation does not apply to applications.
UNU-IIST-eGov-course-XML-614
DTD-Handling Events
Interface DTDHandler. Events related to DTD processing:
Encountering notation declaration:
void notationDecl(
String name, String publicId, String systemId)
Encountering unparsed entity declaration:
void unparsedEntityDecl(
String name, String publicId, String systemId,
java.lang.String notationName)
UNU-IIST-eGov-course-XML-615
Content-Handling Events
Interface ContentHandler.
logical content of the document ийг мэдүүлж удирдах
The main interface implemented by SAX applications.
If an application wants to be informed about events generated during document parsing, then it:
1. implements this interface
2. registers the implementation with the SAX parser using the setContentHandler method
UNU-IIST-eGov-course-XML-616
Types of Content-Handling Events
Events informing about various kinds of content:
• Уншиж эхлэхийг мэдэгдэх• Уншиж дууссаныг мэдэгдэх• Тэмдэгтийн мэдээлэлийг мэдэгдэх• informing about ignorable white characters• элемент эхлэхийг мэдэгдэх• элемент төгсөхийг мэдэгдэх• informing about the entry to and exit from a new namespace• Явцын зааврыг мэдэгдэх• Тооцогдоогүй зүйлийг мэдэгдэх
UNU-IIST-eGov-course-XML-617
Content-Handling: Document Start/End
Уншиж эхлэхийг мэдэгдэх:
void startDocument()
Уншиж дууссаныг мэдэгдэх:
void endDocument()
UNU-IIST-eGov-course-XML-618
Content-Handling: Character Data
Тэмдэгтийн мэдээлэлийг мэдэгдэх:
void characters(char[] ch, int start, int length)
Үүнд
1. ch – character data of the document
2. start – initial table index
3. length – table length
UNU-IIST-eGov-course-XML-619
Content-Handling: Ignorable Whitespace
Informing about encountered ignorable whitespaces:
void ignorableWhitespace(
char[] ch, int start, int length)
where
1. ch – character data of the document
2. start – initial table index
3. length – table length
UNU-IIST-eGov-course-XML-620
Content-Handling: Element Start 1
элемент эхлэхийг мэдэгдэх:
public void startElement(
String namespaceURI, String localName,
String qName, Attributes atts)
Үүнд
1. String namespaceURI – URI of the element’s namespace
2. String localName – local name (without prefix)
Required when http://xml.org/sax/features/namespaces
(system property) is true; default case.
UNU-IIST-eGov-course-XML-621
Content-Handling: Element Start 2
Бусад параметр:
3. String qName – the element’s qualified name (with prefix).
Optional when http://xml.org/sax/features/namespace-prefixes (system property) is false; default case.
4. atts – the attributes of the element; only the attributes with values given directly (not #IMPLIED) are included.
This includes namespace declarations (xmlns:*) given the system property http://xml.org/sax/features/namespace-prefixes.
UNU-IIST-eGov-course-XML-622
Content-Handling: Element End
элемент төгсөхийг мэдэгдэх:
void endElement(
String namespaceURI, String localName, String qName)
The end-tag event is also called for the empty element.
UNU-IIST-eGov-course-XML-623
Content-Handling: Namespace Begin/End
Informing about the beginning of the namespace, occurs just before the corresponding startElement:
public void startPrefixMapping(
String prefix, String uri)
Informing about the end of the namespace, occurs just after the corresponding endElement:
public void startPrefixMapping(
String prefix, String uri)
UNU-IIST-eGov-course-XML-624
Content-Handling: Processing Instruction
Явцын зааврыг мэдэгдэх:
public void processingInstruction(
String target, String data)
UNU-IIST-eGov-course-XML-625
Content-Handling: Ignorable Entity
Тооцогдоогүй зүйлийг мэдэгдэх:
public void skippedEntity(String name)
Non-validating parsers are allowed to ignore entities when they did not see their declarations (e.g. in external DTD).
Both validating and non-validating parsers may ignore external entities depending on the system properties:
http://xml.org/sax/features/external-general-entities
http://xml.org/sax/features/external-parameter-entities
UNU-IIST-eGov-course-XML-626
Registering Event Handlers 1
Бүртгэлийг удирдах арга:
• content handler:
ContentHandler getContentHandler()
void setContentHandler(ContentHandler handler)
2. DTD handler
DTDHandler getDTDHandler()
void setDTDHandler(DTDHandler handler)
UNU-IIST-eGov-course-XML-627
Registering Event Handlers 2
3. entity resolver
EntityResolver getEntityResolver()
void setEntityResolver(EntityResolver resolver)
4. error handler
ErrorHandler getErrorHandler()
void setErrorHandler(ErrorHandler handler)
An application may register a new event handler in the middle of
parsing a document. The parser would switch immediately.
UNU-IIST-eGov-course-XML-628
Packages for SAX
Эдгээр нь хаана хамаардаг вэ?
• input and output:
import java.io.*;
2. all interfaces of SAX parsers:
import org.xml.sax.*;
3. handling of parser-generated events:
import org.xml.sax.helpers.DefaultHandler;
UNU-IIST-eGov-course-XML-629
Packages 2
4. creating the SAX parser:
import javax.xml.parsers.SAXParserFactory;
5. parser-generation exception:
import javax.xml.parsers.ParserConfigurationException;
6. the SAX parser:
import javax.xml.parsers.SAXParser
UNU-IIST-eGov-course-XML-630
Application Skeleton
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser
public class App {
public static void main(String argv[]) {
…
}
}
UNU-IIST-eGov-course-XML-631
Event Handling
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser
public class Echo {
public static void main(String argv[]) {
…
}
}
UNU-IIST-eGov-course-XML-632
Application Skeleton Revisited
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser
public class App extends DefaultHandler {
public static void main(String argv[]) {…}
…
public void startElement(…){…}
public void endElement(…){…}
public void characters(…){…}
…
}
}
UNU-IIST-eGov-course-XML-633
Main Method 1
public static void main(String argv[]) {
Мөрийн шалтгааныг шалгах:
if (argv.length != 1) {
System.err.println("Usage: cmd filename");
System.exit(1);
}
UNU-IIST-eGov-course-XML-634
Main Method 2
The current class provides handling of the SAX events:
DefaultHandler handler = new App();
Create the SAX parser factory object:
SAXParserFactory factory =
SAXParserFactory.newInstance();
UNU-IIST-eGov-course-XML-635
Main Method 3
try {
Obtain the parser from the factory object:
SAXParser saxParser = factory.newSAXParser();
Invoke the parser passing on the input document and the object of the current class to handle the events:
saxParser.parse(new File(argv[0]), handler);
} catch (Throwable t) { t.printStackTrace(); }
System.exit(0);
}
UNU-IIST-eGov-course-XML-636
Demo: Empty SAX Application
> cd “sax empty”
> dir
date.xml App.java
> javac App.java
> java App date.xml
UNU-IIST-eGov-course-XML-637
Example: Element Counter 1
public class App extends DefaultHandler {
Тоологч хувьсагч зарлах:
int counter;
public static void main(String argv[]) {
…
}
UNU-IIST-eGov-course-XML-638
Example: Element Counter 2
Шинэ елемэнт бүрд тоолуурыг нэмэх нь:
public void startElement(
String namespaceURI, String sName,
String qName, Attributes attrs) throws SAXException {
counter++;
}
Тоолуур дууссаны дараа хэвлэж харуулах:
public void endDocument() throws SAXException {
System.out.println(counter);
}
}
UNU-IIST-eGov-course-XML-639
Demo: Element Counter
> cd “sax counter”
> dir
date.xml App.java
> javac App.java
> java App date.xml
UNU-IIST-eGov-course-XML-640
Task: Document Depth
Design a SAX application to calculate the depth of an XML document, that is the longest nesting of element within each other.
Implement event handlers startElement, endElement and endDocument.
UNU-IIST-eGov-course-XML-641
Attribute Interface
Хянах:
public void startElement(
String namespaceURI, String sName,
String qName, Attributes attrs) throws SAXException {
…
}
What is Attributes? An interface for a list of XML attributes.
1. int getLength()
2. String getLocalName(int index)
3. String getValue(int index)
4. etc.
UNU-IIST-eGov-course-XML-642
Task: Document Statistics
Write a SAX application to print the names of all elements encountered and the number of attributes for each of them.
DOM
UNU-IIST-eGov-course-XML-644
Program
1) Заавар
a) сонирхол
b) тойм
c) Уг үндэс
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологи
a) батлах (XML Schema)
b) нэвтрэх (XPath)
c) хөрвүүлэх (XSLT)
4) XML Java процесс
a) event-based programming (SAX)
b) tree-based programming (DOM)
c) rule-based programming (XSLT)
UNU-IIST-eGov-course-XML-645
DOM
Баримтийн обьект загвар:
• Document – written with HTML, XML and others• Object – баримтийн хэсгийг дахин үзүүлэх• Model – document modeled as a tree
UNU-IIST-eGov-course-XML-646
DOM Standard
A standard application programming interface (API) to access and
update the structure of a document:
• standard method to access and update XML• widely used in all major programming languages• very useful in web browsers
UNU-IIST-eGov-course-XML-647
DOM Components
DOM гэж юу вэ:
1) API
2) W3C Recommendation
3) document represented as a tree
UNU-IIST-eGov-course-XML-648
DOM Components: API
DOM is a tree-based API - a set of interface definitions to access and
update the tree representation of a document.
Overhead versus convenience:
• overhead - the document is loaded into memory• convenience – documents can be randomly accessed
UNU-IIST-eGov-course-XML-649
DOM Components: W3C Recommendation 1
DOM is the W3C Recommendation:
DOM бол нээлттэй хэв.
Defined in IDL.
http://www.w3.org/DOM
UNU-IIST-eGov-course-XML-650
DOM Components: W3C Recommendation 2
Evolution of DOM W3C Recommendation:
• level 1 – October 1998
programmatic interface to manipulate XML and HTML
2) level 2 – November 2000
multiple interfaces: core, views, events, CSS, traversal, range
• level 3 – April 2004
support for information sets, XBase, attaching user information
UNU-IIST-eGov-course-XML-651
DOM Components: Document Tree 1
Document components represented as node objects.
Nodes related to each other through properties.
Ялгаатай төрлүүд:
1) elements
2) attributes
3) comments
4) text
5) etc.
UNU-IIST-eGov-course-XML-652
DOM Components: Document Tree 2
UNU-IIST-eGov-course-XML-653
DOM Components: Document Tree 3
Яагаад баримтийг мод байдлаар харуулж байна вэ?
1. Давталт хийхэд тохиромжтой
2. Нэвтрэх үйлдэл хийхэд тохиромжтой
3. natural fit
documents have parts, trees have parts
documents have hierarchies, trees have hierarchies
UNU-IIST-eGov-course-XML-654
Usage of DOM
DOM ийг хэзээ хэрэглэх вэ
1. applications that require random access to parts of a document
2. applications that require a document to be modified
Жишээ:
1. scripting HTML pages
2. XML authoring tools
3. SVG viewers
UNU-IIST-eGov-course-XML-655
DOM Strengths and Weaknesses 1
DOM is build to address some classes of problems better than others.
DOM ийн санах ойд хандах:
• suitable for random access
• heavy memory usage
DOM нь дараах байдалт тохиромжгүй:
• large documents
• devices with limited memory
UNU-IIST-eGov-course-XML-656
DOM Strengths and Weaknesses 2
DOM нь бие даасан хэл.
This:
• encourages open standards and implementations
• no need to switch models when switching languages
but:
• choosing the lowest common denominator – one cannot take advantage of specific language support
UNU-IIST-eGov-course-XML-657
DOM versus SAX
SAX (Simple API for XML):
1. Баримтын санах ойд хадгалахгүй
2. parses XML by triggering callbacks to an application
Both build to address different classes of problems:
1. DOM
randomly access a document
update a document
2. SAX
large documents
document processing
UNU-IIST-eGov-course-XML-658
DOM Implementations
W3C төрлийг тодорхойлох.
Олон хэлийг дэмждэг: Java, JavaScript, C++, Perl, C#, etc.
Өргөн байдлаар хэрэгждэг:
1. open-source and commercial
2. Олон ондоо хэлнүүдтэй
3. Гүйцэт ба гүйцэт биш
UNU-IIST-eGov-course-XML-659
Java Example
SVG файлаас DOM үүсгэх :
DOMParser parser = new DOMParser();Document doc = parser.parse(“hello_world.svg");Element docEl = doc.getDocumentElement();System.out.println(docEl.hasChildNodes());
1. instantiate a DOM Parser2. load the image into a DOM3. get the root element of the document4. print out if the root element has children
UNU-IIST-eGov-course-XML-660
DOM Read Application 1
Defines the API to obtain DOM Document instances from XML:
import javax.xml.parsers.DocumentBuilder;
Defines a factory API that enables applications to obtain a parser that produces DOM object trees from XML documents:
import javax.xml.parsers.DocumentBuilderFactory;
Exception classes for parser configuration errors:
import javax.xml.parsers.FactoryConfigurationError;import javax.xml.parsers.ParserConfigurationException;
SAX parser exceptions:
import org.xml.sax.SAXException;import org.xml.sax.SAXParseException;
UNU-IIST-eGov-course-XML-661
DOM Read Application 2
Required I/O classes:
import java.io.File;import java.io.IOException;
The Document interface represents the entire HTML or XML document:
import org.w3c.dom.Document;
DOM exceptions are raised when an operation is impossible for logical reasons, lost data, or because the implementation became unstable:
import org.w3c.dom.DOMException;
UNU-IIST-eGov-course-XML-662
DOM Read Application 3
DOM application class:
public class Dom {
Static document object:
static Document document;
The main method:
public static void main(String[] argv) {…
}
}
UNU-IIST-eGov-course-XML-663
DOM Read Application 4
Гол арга:
Checking the presence of a command-line argument:
if (argv.length != 1) {System.err.println("Usage: java Dom filename");System.exit(1);
}
Creating a new DOM parser factory object:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
UNU-IIST-eGov-course-XML-664
DOM Read Application 5
Creating the DOM builder from the factory object:
try {DocumentBuilder builder =
factory.newDocumentBuilder();
Баримт дотор DOM ийн модийг үүсгэх:
document = builder.parse(new File(argv[0]));
UNU-IIST-eGov-course-XML-665
DOM Read Application 6
Дөрвөн өөр төрлийн халдамтгай зүйл:
} catch (SAXParseException spe) {System.out.println(spe.getMessage());
} catch (SAXException sxe) {System.out.println(sxe.getMessage());
} catch (ParserConfigurationException pce) {System.out.println(pce.getMessage());
} catch (IOException ioe) {System.out.println(ioe.getMessage());
} }}
UNU-IIST-eGov-course-XML-666
Task: DOM Read Application
Type the DOM read application skeleton.
Compile.
Run.
UNU-IIST-eGov-course-XML-667
Demo: DOM Read Application
> cd “dom read”> dirApp.java credit.xml> javac App.java> java App credit.xml
UNU-IIST-eGov-course-XML-668
DOM Read-Write Application 1
Previous DOM application could only read XML.
Lets write one that both reads and writes.
As in the read application:
import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.FactoryConfigurationError;import javax.xml.parsers.ParserConfigurationException;import org.xml.sax.SAXException;import org.xml.sax.SAXParseException;import java.io.File;import java.io.IOException;import org.w3c.dom.Document;import org.w3c.dom.DOMException;
UNU-IIST-eGov-course-XML-669
DOM Read-Write Application 2
Setting up the transformer and stream packages:
import javax.xml.transform.dom.DOMSource;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.Transformer;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;
UNU-IIST-eGov-course-XML-670
DOM Read-Write Application 3
Өмнө нь:
public class App {
static Document document;
public static void main(String[] argv) {if (argv.length != 1) {
System.err.println("Usage: java App filename");System.exit(1);
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {DocumentBuilder builder =
factory.newDocumentBuilder(); document = builder.parse(new File(argv[0]));
UNU-IIST-eGov-course-XML-671
DOM Read-Write Application 4
Эхийг үндэслэх, хувиргалт ба үр дүн:
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();DOMSource source = new DOMSource(document);StreamResult result = new StreamResult(System.out);transformer.transform(source, result);
Өөр зүйлийг хувирган илрүүлэх:
} catch(TransformerConfigurationException tce){System.out.println(tce.getMessage());
} catch(TransformerException te){System.out.println(te.getMessage());
}
UNU-IIST-eGov-course-XML-672
DOM унших- программ бичих 5
Өмнө нь:
catch (SAXParseException spe) {System.out.println(spe.getMessage());
} catch (SAXException sxe) {System.out.println(sxe.getMessage());
} catch (ParserConfigurationException pce) {System.out.println(pce.getMessage());
} catch (IOException ioe) {System.out.println(ioe.getMessage());
} }}
UNU-IIST-eGov-course-XML-673
Task: DOM Read-Write Application
Type the DOM read-write application by extending the read application.Унших программын өргөжилтөөр DOM программын төрөл бичих
Эмхлэн зохион байгуулах.
Хэрэгжүүлэх.
UNU-IIST-eGov-course-XML-674
Demo: DOM Read-Write Application
> cd “dom read write”> dirApp.java credit.xml> javac App.java> java App credit.xml
UNU-IIST-eGov-course-XML-675
DOM өгөгдлийн хэлбэрүүд
1. Node – Гол DOM өгөгдлийн хэлбэр2. NodeList – Гол цэгийн дараалсан цуглуулга3. NamedNodeMap – name-indexed collection of nodes4. DOMString – UTF16-өгөгдөл оруулах холбоос5. DOMImplementation – тухайн хэрэгжилт6. DOMException – алдаат код7. DOMTimeStamp – хугацаа
UNU-IIST-eGov-course-XML-676
DOM программын харагдац
NodeListNamedNodeMapNode
DOMStringDOMTimeStampDOMImplementationDOMException
NodeDocumentDocumentFragmentElementAttrCharacterData
EntityEntityReferenceProcessingInstruction
Text CDATASectionComment
UNU-IIST-eGov-course-XML-677
DOM Interface: Node
DOM ийн үндсэн төрх.
Node ийн ялгаатай олон төрлүүд.
Defines common properties and methods.
Each of the specific node types inherit these.
Possible to completely access the content and structure.
UNU-IIST-eGov-course-XML-678
DOM Interface: Node Types
Tree-building node types:
ELEMENT_NODE 1ATTRIBUTE_NODE 2ENTITY_REFERENCE_NODE 5ENTITY_NODE 6DOCUMENT_NODE 9DOCUMENT_FRAGMENT_NODE 11
Leaf node types:
TEXT_NODE 3CDATA_SECTION_NODE 4PROCESSING_INSTRUCTION_NODE 7COMMENT_NODE 8DOCUMENT_TYPE_NODE 10NOTATION_NODE 12
UNU-IIST-eGov-course-XML-679
DOM Interface: Node Properties
1. node.nodeName - depends on nodeType
2. node.nodeValue - depends on nodeType
3. node.nodeType - one of defined types
4. node.childNodes - if any
5. node.attributes - if nodeType is Element
UNU-IIST-eGov-course-XML-680
DOM Interface: Node Navigation
1. node.ownerDocument - if nodeType isn't Document
2. node.parentNode - if one exists
3. node.firstChild - if one exists
4. node.lastChild - if one exists
5. node.nextSibling - if one exists
6. node.previousSibling - if one exists
UNU-IIST-eGov-course-XML-681
DOM Interface: Node Methods
1. node.insertBefore(newChild,refChild)2. node.replaceChild(newChild,oldChild) 3. node.removeChild(oldChild)4. node.appendChild(newChild)5. node.hasChildNodes()6. node.cloneNode(deep)7. node.hasAttributes()8. node.isSupported()9. node.normalize()
UNU-IIST-eGov-course-XML-682
DOM Interface: Element 1
Element extends Node
Most common node type in a document.
The only node type relevant for the Attrs interface.
Property: Element.tagName – the name of the element.
UNU-IIST-eGov-course-XML-683
DOM Interface: Element 2
Ерөнхий арга:
element.getElementsByTagName(name)element.hasAttribute(name)
Node ийн арга:
element.getAttributeNode(name)element.setAttributeNode(newAttr)element.removeAttributeNode(oldAttr)
UNU-IIST-eGov-course-XML-684
Example: Inserting the Text Node 1
credit card ийн программыг авч үзэхэд:
<?xml version="1.0"?>
<letter decision="rejected">
<customer>Simon White</customer>
<product>credit card</product>
<officer level="manager">Steven Rod</officer>
<enclosure>credit card</enclosure>
<enclosure>initial PIN</enclosure>
<cc></cc>
</letter>
Suppose we would like to transform this document by adding to the element cc the text “to archives”.
UNU-IIST-eGov-course-XML-685
Example: Inserting the Text Node 2
Add to the read-write application after:
document = builder.parse(new File(argv[0]));
Retrieve the root element from the document:
Element elem = document.getDocumentElement();
Create the next text node to hold the text “to archives”:
Text text = document.createTextNode("to archives");
UNU-IIST-eGov-course-XML-686
Example: Inserting the Text Node 3
Get the last child of the root element:
Node cc = elem.getLastChild();
Append the new text node as the last child of the cc element:
cc.appendChild(text);
UNU-IIST-eGov-course-XML-687
Demo: DOM Inserting Application
> cd “dom new child”> dirApp.java credit.xml> javac App.java> java App credit.xml
UNU-IIST-eGov-course-XML-688
Task: Element-Removing Application
Remove the second enclosure element from the credit card document.
Хэрэглэх:
1.getElementByTagName2.removeChild of the Element interface
UNU-IIST-eGov-course-XML-689
Жишээ: Элемент-Программыг устгах
Программ бичсэнийхээ дараа уншихаар нэмэх
document = builder.parse(new File(argv[0]));
Суурь элементийг илрүүлэх
Element elem = document.getDocumentElement();
Хүүхдүүдийн хавсралт баримтыг олж авах
NodeList nodes = elem.getElementsByTagName("enclosure");
Энэ жагсаалтаас хоёрдахь хүүхдийг хасах
elem.removeChild(nodes.item(1));
UNU-IIST-eGov-course-XML-690
Demo: DOM Element-Removing Application
> cd “dom remove child”> dirApp.java credit.xml> javac App.java> java App credit.xml
UNU-IIST-eGov-course-XML-691
Зорилго: Шинж тэмдэг-программын өөрчлөлт
Change the letter’s decision attribute from rejected to accepted.Түтгэлзсэнээс бичвэрийн шийдвэрийн шинж тэмдгийг хүлээн авахаар өөрчлөх
Хэрэглэх:
1.getElementByTagName2.removeChild of the Element interface
UNU-IIST-eGov-course-XML-692
Example: Attribute-Changing Application
Add to the read-write application after:
document = builder.parse(new File(argv[0]));
Retrieve the root element, change the attribute value:
Element elem = document.getDocumentElement();elem.setAttribute("decision", "accepted");
UNU-IIST-eGov-course-XML-693
Demo: DOM Attribute-Changing Application
> cd “dom change attribute”> dirApp.java credit.xml> javac App.java> java App credit.xml
UNU-IIST-eGov-course-XML-694
DOM Interface: Attributes
Attr interface extends Node.
Properties:1. attr.ownerElement – the element this attribute is attached to2. attr.name – the name of the attribute3. attr.specified – true if value was specified in the document4. attr.value – value of the attribute
- if read – returned as string- if write – text node with a given string
However, attributes are not part of the tree.
Attr objects inherit the Node interface, but since they are not actually child nodes of the element they describe, the DOM does not consider them part of the document tree.
UNU-IIST-eGov-course-XML-695
DOM Interface: Character Data
CharacterData interface extends Node.
Used to access character data.
Properties:
1. node.data – character data of the node2. node.length – number of characters
Арга:
1. cData.substringData(offset, count)2. cData.appendData(arg)3. cData.insertData(offset,arg)4. cData.deleteData(offset,count)5. cData.replaceData(offset,count,arg)
UNU-IIST-eGov-course-XML-696
DOM Interface: Document 1
Document interface extends Node.
Represents the entire document.
Contains information about the document type, document element and implementation.
Provides methods for:
1. abstract factory for creating the document’s components2. finding specific components in the document
UNU-IIST-eGov-course-XML-697
DOM Interface: Document 2
Properties:
1. node.doctype – the document type of the document2. node.implementation – the document’s DOM implementation 3. node.documentElement – convenient access to the root element
Search methods:
1. document.getElementsByTagName(tagname)2. document.getElementByID(tagname)
UNU-IIST-eGov-course-XML-698
DOM Interface: Document 3
Abstract factory methods:
• document.createElement(tagName)• document.createDocumentFragment()• document.createTextNode(data)• document.createComment(data)• document.createCDATASection(data)• document.createProcessingInstruction(target,data)• document.createAttribute(name)• document.createEntityReference(name)
UNU-IIST-eGov-course-XML-699
DOM интерфейс: DOM хэрэгжилт
Represents the current implementation of the DOM.DOM –н тухайн хэрэгжилтийн төлөөлөл
Аргууд:
1. DOMImplementation.hasFeature(feature, version)2. createDocumentType(qualifiedName,publicID,systemID)3. createDocument(namespaceURI,qualifiedName,docType)
UNU-IIST-eGov-course-XML-700
DOM Interface: DOM Implementation Features
XML прораммын хэсэг: XMLHTML программын хэсэг: HTMLПрограммын хэсгийн харагдац: ViewsЗагвар хуудасны хэсэг: StyleSheetsCSS программын хэсэг: CSSCSS (сунгагдсан) программын хэсэг: CSS2Үйл явдлын программын хэсэг: EventsХэрэглэгчийн интерфейсийн хэсэг: UIEventsХулганы хөдөлгөөний хэсэг: MouseEventsМутац хөдөлгөөний хэсэг: MutationEventsСөрөг хэсэг: TraversalХязгаарын хэсэг Range
UNU-IIST-eGov-course-XML-701
DOM Interface: DOM Exception
Тодорхой процессын нөхцөлд дэх алдаатай кодыг тодорхойлохINDEX_SIZE_ERR 1DOMSTRING_SIZE_ERR 2HIERARCHY_REQUEST_ERR 3WRONG_DOCUMENT_ERR 4INVALID_CHARACTER_ERR 5NO_DATA_ALLOWED_ERR 6NO_MODIFICATION_ALLOWED_ERR 7NOT_FOUND_ERR 8NOT_SUPPORTED_ERR 9INUSE_ATTRIBUTE_ERR 10INVALID_STATE_ER 11SYNTAX_ERR 12INVALID_MODIFICATION_ERR 13NAMESPACE_ERR 14INVALID_ACCESS_ERR 15
UNU-IIST-eGov-course-XML-702
DOM Validation with DTD 1
How to validate with the DOM parser?
DTD тодорхойлолтоор кредит картны программыг сунгах<?xml version="1.0"?><!DOCTYPE letter [ <!ELEMENT letter
(customer,product,officer,enclosure*)> <!ATTLIST letter decision CDATA #REQUIRED> <!ELEMENT customer (#PCDATA)> <!ELEMENT product (#PCDATA)> <!ELEMENT officer (#PCDATA)> <!ATTLIST officer level CDATA #IMPLIED> <!ELEMENT enclosure (#PCDATA)> <!ELEMENT cc (#PCDATA)>]><letter decision="rejected">
…</letter>
UNU-IIST-eGov-course-XML-703
DOM Validation with DTD 2
DOM parser-р яаж идэвхижүүлэх вэ?
…DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
Set the validating feature for the DOM factory objects:
factory.setValidating(true);try {
DocumentBuilder builder = factory.newDocumentBuilder();
Register an instance of the current class as the error handler:
builder.setErrorHandler(new App());document = builder.parse(new File(argv[0]));
}catch {…}
UNU-IIST-eGov-course-XML-704
DOM Validation with DTD 3
Хэрэгжилтийн алдааны процедурpublic void error(SAXParseException exception) {
System.out.println("Error: " + exception.getMessage());}
public void fatalError(SAXParseException exception) {System.out.println("Fatal Error: " +
exception.getMessage());}
public void warning(SAXParseException exception) {System.out.println("Warning :" +
exception.getMessage());}
UNU-IIST-eGov-course-XML-705
Demo: DOM Validation with DTD
> cd “dom validate DTD”> dirApp.java credit.xml> javac App.java> java App credit.xml
UNU-IIST-eGov-course-XML-706
DOM Validation with Schema 1
How to validate with the Schema parser?
Packages as before plus XMLConstants:
import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.FactoryConfigurationError;import org.xml.sax.helpers.DefaultHandler;import java.io.File;import org.w3c.dom.*;import org.w3c.dom.DOMException;import javax.xml.validation.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamSource;
import javax.xml.XMLConstants;
UNU-IIST-eGov-course-XML-707
DOM Validation with Schema 2
public class App {
static Document document;
Set the schema validation feature:
static final String SCHEMA_VALIDATION_FEATURE_ID = "http://apache.org/xml/features/validation/schema";
Schema is referred to from the command line:
public static void main(String[] argv) {if (argv.length != 2) {
System.err.println("Usage: java App xmlfile xmlschemafile");
System.exit(1); }
UNU-IIST-eGov-course-XML-708
DOM Validation with Schema 3
try {
Parse an XML document into a DOM tree:
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(new File(argv[0]));
Create a SchemaFactory capable of understanding schemas:
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Load a WXS schema, represented by a Schema instance:
Source schemaFile = new StreamSource(new File(argv[1]));Schema schema = factory.newSchema(schemaFile);
UNU-IIST-eGov-course-XML-709
DOM Validation with Schema 4
Load a schema:
Source schemaFile = new StreamSource(new File(argv[1]));Schema schema = factory.newSchema(schemaFile);
Create a Validator instance to validate an instance document:
Validator validator = schema.newValidator();
Validate the DOM tree:
validator.validate(new DOMSource(document));} catch (Exception e) {
System.out.println(e.getMessage());}}}
UNU-IIST-eGov-course-XML-710
Demo: DOM Validation with Schema
> cd “dom validate schema”> dirApp.java noNamespace.xml schemaNoNamespace.xsd> javac App.java> java App noNamespace.xml schemaNoNamespace.xsd
Java and XSLT
UNU-IIST-eGov-course-XML-712
Program
1) Заавар
a) Сонирхол
b) Тойм
c) Гарал үүсэл
d) W3C
2) XML хэл
a) Unicode
b) XML
c) DTD
d) namespaces
3) XML технологи
a) validation (XML Schema)
b) access (XPath)
c) transformation (XSLT)
4) XML Java Processing
a) event-based programming (SAX)
b) tree-based programming (DOM)
c) rule-based programming (XSLT)
UNU-IIST-eGov-course-XML-713
XSLT and Java
XSLT – Extensible Stylesheet Language Transformation has been introduced before.
Хувиргалтын хэл гэж урьд нь танилцуулсан билээ.
Жава программаас яас XSLT –г хэрэглэх вэ?
– formulate the transformation template in external XSLT file– use the transformer class as in the read-write DOM application
UNU-IIST-eGov-course-XML-714
Java XSLT Application 1
Урьдаар багцлан оруулах:
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.io.FileOutputStream;
import javax.xml.XMLConstants;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
UNU-IIST-eGov-course-XML-715
Java XSLT Application 2
public class App {
static Document document;
public static void main(String[] argv) {
if (argv.length != 3) {
System.err.println("Usage:
java App xmlfile xslfile outfile");
System.exit(1);
}
UNU-IIST-eGov-course-XML-716
Java XSLT Application 3
Parser an XML document into a DOM tree:
try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = parser.parse(new File(argv[0]));
Гаднах XSLT файл руу хувиргалт хийх тохиргоо
TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(new StreamSource(argv[1]));
UNU-IIST-eGov-course-XML-717
Java XSLT Application 4
transformer.transform(
new DOMSource(document),
new StreamResult(new FileOutputStream(argv[2])));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
UNU-IIST-eGov-course-XML-718
DEMO: Java XSLT Application
> cd “dom xslt”> dir
App.java farewell.xml farewell.xsl
> javac App.java
> java App farewell.xml farewell.xsl output
> type output
UNU-IIST-eGov-course-XML-719
Талархал
The author would like to thank Milton Chau, Elsa Estevez, Brian Iu, Adegboyega Ojo, Gabriel Oteniya and Frank Wong for their comments, code and support during the preparation and delivery of this course.