xml orchuulga bayarbat purevkhuu

719
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

Upload: moba-anax

Post on 20-Jun-2015

2.318 views

Category:

Technology


20 download

DESCRIPTION

Xml orchuulga bayarbat purevkhuu

TRANSCRIPT

Page 1: Xml orchuulga bayarbat purevkhuu

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

Page 2: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-2

Зорилго

Хоёр үндсэн зорилго байдаг:

1) XML болон XML –тэй холбоотой тогсон ойлголтыг оюутануудад өгөх

2) java application дээр XML боловсруулалтыг бичих чадвараа дээшлүүлэх

a) SAX (XML-ийн энгийн application program inteface),

b) DOM (бичиг баримтын обьектийн загвар) ба

c) XSLT (өргөтгөсөн stylesheet хэлний хувиргалтууд).

Page 3: Xml orchuulga bayarbat purevkhuu

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)

Page 4: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-4

7 өдрийн цагийн хуваарь:

• Оршил хэсэг буюу товч танилцуулга, Юникод• XML• DTD• Namespaces, XML схем• XPath, XSLT• Java XML with DOM• Java XML with SAX and XSLT

Цагийн хуваарь

Page 5: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-5

Бүтэц зохион байгуулалт

Дараах хэсгүүдээс бүрдэнэ:

• лекцүүд• танилцуулгууд• зорилтууд (зорилтуудаа тодорхойлох)• төслийн ажил

Page 6: Xml orchuulga bayarbat purevkhuu

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

Page 7: Xml orchuulga bayarbat purevkhuu

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.

Page 8: Xml orchuulga bayarbat purevkhuu

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.

Түүх

Page 9: Xml orchuulga bayarbat purevkhuu

Үндэслэл

Page 10: Xml orchuulga bayarbat purevkhuu

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)

Page 11: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-11

Дэлхийг хамарсан сүлжээ

Өдөр бүр сүлжээ руу хандаж буй сая сая хүмүүсийн давалгаа нь:• Гэрийн эзэгтэй хоол хийх жор, зөвлөгөөгөө олж авдаг.• Оюутанууд курсын ажил, бие даалт, хичээлтэй холбоотой

мэдээллүүдээ хардаг.• Хөрөнгө оруулагчид хамгийн сүүлийн үеийн үнэт цаасны

үнэлгээг олж авахыг эрэлхийлдэг.• Жуулчид хамгийн сайн амралттай газрыг судалдаг.• Уншигчид интернет номын худалдаанаас номнуудаа

худалдаж авч уншидаг.• Судлаачид өөрсдтэйгээ ижил судалгаа хийж буй судлаачдын

хамгийн сүүлийн үеийн судалгааны ажилуудыг авч судалдаг.

Дэлхийг хамарсан сүлжээгээр эдгээр ажлуудыг ихээр хийдэг . Бас өөр юуг хийдэг вэ?

Page 12: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-12

Сүлжээний асуудлууд

1) Браузер-тодорхой өргөтгөлүүд

2) Тодорхой браузерийг дэмжих

3) Браузерийн чиг хандлага

4) Бүтэц болон төрөл нягт холбогдсон байдаг

5) Өгөгдөлийн солилцоо асуудалтай

6) Тохирсон чиг хандлага

7) Тодорхой чиглэд төвлөрөөгүй хайлтууд

8) Статик контент

9) нэг-хуудасны хязгаарлалт

10) нэг-цорын ганц холбох арга

11) гэх мэт.

Page 13: Xml orchuulga bayarbat purevkhuu

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>

Page 14: Xml orchuulga bayarbat purevkhuu

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

Page 15: Xml orchuulga bayarbat purevkhuu

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>

Page 16: Xml orchuulga bayarbat purevkhuu

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>

Page 17: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-17

Демо : Браузерийн чиг хандлага

> cd "demos/browser orientation"

> dir

menuScroll.html menuscroll2.class

> opera menuScroll.html

Page 18: Xml orchuulga bayarbat purevkhuu

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>

Page 19: Xml orchuulga bayarbat purevkhuu

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>

Page 20: Xml orchuulga bayarbat purevkhuu

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>

Page 21: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-21

Илүү асуудлууд

• Өгөгдөл солилцох хүндрэлтэй асуудал

HTML нь одоогоор өгөгдөл солилцох боломжгүй байгаа: өөр өөр эх үүсгүүрүүдээс нэгтгэх болон шүүдэг , хүссэн төрөлтэй өгөгдөлийг шалгадаг.

• Статик контент

Вэб сайтан дээрх мэдээлэл, контент нь давтамжтай өөрчлөгддөг.

өгөгдсөн контентийн хувьд харгалзах харагдах байдал үүсгэх бөгөөд, энэ нь контентийг өөрчлөх бүрд шинээр үүсдэг.

Page 22: Xml orchuulga bayarbat purevkhuu

Ерөнхий төсөөлөл

Page 23: Xml orchuulga bayarbat purevkhuu

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)

Page 24: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-24

XML

Иймэрхүү асуудлуудыг шийдэхийн тулд XML-ийг дууддаг.

• XML нь HTML-ийг орлогч биш.

• HTML ээс (ерөнхийдөө) XML ийг агуулсан цэвэр HTML-ийн өөрийн хувилбар болох XHTML гэж байдаг.

• XML хувьд интернет технологид илүү нэгдмэл ба уян хатан сан үүсгэх явдал юм.

Page 25: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-25

XML гэж юу вэ?

1) Мэдээллийг агуулах болон удирдах протокол юм.

2) Технологийн хүрээнд тэр нь документуудыг бичих, бататгах, зохион байгуулахаас боловсруулах хүртэлх ямар нэгэн зүйлийг хийж чаддаг

3) бvтэц бvхий єгєгдлийг хадгалах, хэрэглэхэд ашиглах боломжтой

Page 26: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-26

Юу XML-д байдаггүй вэ?

• Энэ нь програмчлалын хэл биш:

XML машинаас гадагшаа тээвэрлэх дамжуулах үйлдэл байдаггүй, Java ... адилгүй

• Энэ нь харагдах байдлын буюу HTML шиг хэл биш :

XML документыг тайлбарлах томьёолох заавар зөвлөмжүүдийг агуулдаггүй Postscript .... адилгүй

Page 27: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-27

XML хэлээр

Хэлний хувьд XML-д “L” гэж товчилж тэмдэглэдэг.

XML өөрийнхөө дүрсэлсэн өгөгдөлийг бичих тэмдэглэх боломжтой..

Өөр төрөлтэй өгөгдлийн бүтцийг нэгтгэж авдаг.• синтакс: XML документуудын хувьд синтак нь сайн

тодорхойлогдсон байдаг.

Page 28: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-28

XML Mета-хэлээр

eXtensible-ийг XML-д “X” гэж товчилж тэмдэглэдэг.

XML мета-хэлний синтакс нь бусад хэлүүдээр дүрслэгддэг.

Эдгээр хэлүүд нь олон янзын үйлдвэрийн домайнуудыг хамарч чаддаг.

Page 29: Xml orchuulga bayarbat purevkhuu

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

… …

Page 30: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-30

XML мета тэмдэгтийн хэл

Тэмдэгтийг XML-д “M” гэж товчилж тэмдэглэдэг.

XML –ийн энэ авч үзэж буй хэлүүд нь тэмдэгтийн хэлүүд юм: Тэдгээр нь тэдний дүрслэлүүд буюу гадаад байдал (документууд) –ыг тэдгээрийн гол бүтцээс тэмдэгтээр тайлбаладаг.

Тэмдэгт гэж юу вэ?

Page 31: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-31

Тэмдэгт

• Тэмдэгт нь найдвартай аргуудаар сайжруулан документ руу нэмсэн мэдээлэл, документын хэсгүүдийг таньж тогтоосоноор тэдгээрийн бусадтай хэрхэн яаж хамаарахыг илэрхийлдэг.

• Тэмдэгтийн хэл нь тэмдэгтүүдийн олонлог юм. Тэр нь тэдгээрийн хэсгүүдийн хаяг болон хил хязгаарыг тогтоон документын текстэн дотор хувиаралах буюу байрлуулдаг.

Page 32: Xml orchuulga bayarbat purevkhuu

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 – гадаад холболт

Page 33: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-33

Демо : Браузеруудын XML

> cd "demos/xml in browsers"

> ls

welcome.xml

> opera welcome.xml

> iexplore welcome.xml

Page 34: Xml orchuulga bayarbat purevkhuu

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)-уудыг багтаасан.

Page 35: Xml orchuulga bayarbat purevkhuu

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>

Page 36: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-36

XML-ийн ерөнхий төсөөлөл: Нийтлэг зориулалтын буюу уян хатан бүтэцжүүлэлт

Өгөгдлийг загварчлалын аппроксимацлах буюу төсөөтгөх хоёр арга байдаг:

1. XML гол өгөгдлийг элементийн дотор бүх өгөгдөлд хадгалдаг.

2. XML гол документыг текст доторх элементүүдэд хавсаргаж өгдөг .

XML нь хоёулангаар нь төсөөтгөх буюу аппроксимацладаг .

Page 37: Xml orchuulga bayarbat purevkhuu

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>

Page 38: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-38

XML-ийн ерөнхий төсөөлөл:бүтэц-төрөл хоорондын үл хамаарал

XML –ийг HTML-тэй харьцуулахад:

1. XML нь өгөгдлийн бүтцийг тодорхойлдог,харагдах байдал нь юуг ч үл харгалзадаг.

2. HTML агуулдаг бүтцийн хослол (title) ба тэмдэгт дүрслэл (table) .

Page 39: Xml orchuulga bayarbat purevkhuu

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>

Page 40: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-40

XML-ийн ерөнхий төсөөлөл: Төрлийг гадна байдлаар нь хадгалах

XML –ийг HTML-тэй харьцуулахад:

• HTML нь тухайлсан ба онцгойлсон харагдах байдлыг хязгаарладаг.

• Ямар нэгэн XML документ нь өөр өөр арга замуудаар форматалж чаддаг.

• Мэдээллийн форматыг stylesheet документд хадгалдаг.• The stylesheet шаардлагатай документоос хандах боломжтой.

Page 41: Xml orchuulga bayarbat purevkhuu

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!

Page 42: Xml orchuulga bayarbat purevkhuu

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!

Page 43: Xml orchuulga bayarbat purevkhuu

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

Page 44: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-44

XML-ийн ерөнхий төсөөлөл : Документ хувиргалтууд

Илүү радикал үр дүнгүүдийг XSLT-ээр олж авч болно:

• Өргөтгөсөн Stylesheet хэлний хувиргалтууд

• XSLT нь XML хувиргалтануудад мэргэшисэн цогц зарлалтын програмын хэл юм.

• XSLT програмууд нь XML дээр бичигдсэн байдаг.

Page 45: Xml orchuulga bayarbat purevkhuu

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>

Page 46: Xml orchuulga bayarbat purevkhuu

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!

Page 47: Xml orchuulga bayarbat purevkhuu

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

Page 48: Xml orchuulga bayarbat purevkhuu

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

Page 49: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-49

XML ерөнхий төсөөлөл:Бид хаана байна?

1. Өгөгдлийг өөрийнхөөрөө дүрслэх

2. Уян хатан бүтэц

3. Бүтэц –төрөл үл хамаарал

4. Төрлийн гадаад байдал хадгалалт

5. Документийн хувиргалтууд ЭНД!

6. Документийн боловсруулалт

7. програмын дэмжлэг

8. ОУ дэмжлэг

9. Синтаксийн үүрэг

10. горимыг зааврын дагуу хийх

11.Хэлнүүдийг үүсгэх

12.Хэлнүүдийг хүлээн зөвшөөрөх

13.Хэлнүүдийн хамрах хүрээ

14.Технологийг өөрийнхөөрөө дүрслэх

15. технологийг эмх цэгцтэй болгох

Page 50: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-50

XML ерөнхий төсөөлөл : Документийн боловсруулалт

XML ээс HTML руу хувиргах нь боловсруулалтын яг нэг төрөл юм.

Доорх байдлуудаар олон төрөлд хувиргах боломжтой:

• XML ээс XML руу• XML ээс text руу• XML ээс PDF руу• XML ээс Latex руу• XML ээс troff руу• Гэх мэт.

Tэд вэб дээр ямар нэгэн юм хийдэггүй байна.

Page 51: Xml orchuulga bayarbat purevkhuu

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>

Page 52: Xml orchuulga bayarbat purevkhuu

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

Page 53: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-53

XML-ийн ерөнхий төсөөлөл: Програмыг дэмжих

Үндсэн програмын хэлүүд бүгдээрээ XML-ийг дэмждэг.

эдгээр нь C++, Java ба Perl-д орсон байдаг.

XML parser гэвэл XML-ийг уншиж мэдээллийг авагч гэж ойлгож болно.

Програмчлалын дэмжигч хэсгүүд• Үзэгдэл дээр суурилсан: XML-ийн ажиллаж байх үед XML-ийн

парсинг үүсгэгдсэн үзэгдлүүдэд буюу event-үүдэд хариу үйлдэл өгдөг програм

• Модон дээр суурилсан: XML-ийн үүсгэгдсэн парсинг документийн байрлалыг тодорхойлох болон шилжүүлдэг програм

• Дүрэм дээр суурилсан: Давтан хувиргагч зарчмууд буюу (XSLT) документэд глобал өөрчлөлтүүдийг гүйцэтгэдэг програм

Page 54: Xml orchuulga bayarbat purevkhuu

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); }}

Page 55: Xml orchuulga bayarbat purevkhuu

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

Page 56: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-56

XML ерөнхий төсөөлөл: Олон улсын дэмжлэг

XML ийн Unicode дэмжлэгүүд:

• UTF8 – 8-bit Unicode – үндсэн кодчлол• XML боловсруулалт нь ямагт UTF8 ба UTF16 хоёуланг нь

дэмждэг• Эдгээр нь тэмдэгтийн олонлогийг олон талаас нь дэмжих үйл

явцыг дэмждэг• Текст, элемент ба атрибут нэрүүдийг international гэж үздэг • Хэд хэдэн хэлүүд нь нэг документэд хамтдаа оршиж болдог

Page 57: Xml orchuulga bayarbat purevkhuu

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ść>

Page 58: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-58

Демо: Polish дээрх XML

> cd "demos/xml in polish"

> ls

polish.xml

> opera polish.xml

> iexplore polish.xml

Page 59: Xml orchuulga bayarbat purevkhuu

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.

Page 60: Xml orchuulga bayarbat purevkhuu

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>

Page 61: Xml orchuulga bayarbat purevkhuu

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

Page 62: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-62

XML-ийн ерөнхий төсөөлөл : Ажиллах горимыг шууд олгох

Well-formedness д синтаксийн шалгах суурь дүрэм, XML документуудын бүх төрлүүд нийтлэг агуулагддаг.

propert-уудыг шалгах ба шилжүүлэх ерөнхийгөөс тухайлсан XML ийн жишээ хэлнүүд:

• Документ нь тодорхой үүрэгтэй компялуудыг зөв тодорхойлж өгсөн хэл.

• Шилжүүлэх ямар нэгэн иймэрхүү арга нь Документ төрөл тодорхойлолт.

• Документ ill-formed хүчингүй бол, ill-formed хэрэгтэй биш ба документ нь хүчинтэй байдаг.

Page 63: Xml orchuulga bayarbat purevkhuu

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>

Page 64: Xml orchuulga bayarbat purevkhuu

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>

Page 65: Xml orchuulga bayarbat purevkhuu

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

Page 66: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-66

XML ерөнхий төсөөлөл:Бид хаана байна?

1. Өгөгдлийг өөрийнхөөрөө дүрслэх

2. Уян хатан бүтэц

3. Бүтэц –төрөл үл хамаарал

4. Төрлийн гадаад байдал хадгалалт

5. Документийн хувиргалтууд ЭНД!

6. Документийн боловсруулалт

7. програмын дэмжлэг

8. ОУ дэмжлэг

9. Синтаксийн үүрэг

10. горимыг зааврын дагуу хийх

11.Хэлнүүдийг үүсгэх

12.Хэлнүүдийг хүлээн зөвшөөрөх

13.Хэлнүүдийн хамрах хүрээ

14.Технологийг өөрийнхөөрөө дүрслэх

15. технологийг эмх цэгцтэй болгох

Page 67: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-67

XML ерөнхий төсөөлөл:Хэлнүүдийг үүсгэх

DTD нь хэлнүүдийн тодорхойлолтын механизмыг хангадаг:

• welcome.dtd file leaves:

– хүчинтэй XML документууд бүтэц шиг чөлөөтэй байдаг– иймэрхүү документуудын текст контентууд шиг илүү

чөлөөтэй байдаг

• Бүх XML документуудын хүчинтэй байх нь “хүлээн авсан message”-ийн хэл нь welcome.dtd ээс тогтоно

Page 68: Xml orchuulga bayarbat purevkhuu

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>

Page 69: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-69

Демо : Хүчин төгөлдөр XML

> cd "demos/valid xml"

> dir

projectManagement.xml welcome.dtd

> xerces projectManagment.xml

Page 70: Xml orchuulga bayarbat purevkhuu

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. Өөр олон байдаг

Page 71: Xml orchuulga bayarbat purevkhuu

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>&PlusMinus;</mo><msqrt> ... </msqrt>

</mrow><mrow> ... </mrow>

</mfrac></math>

Page 72: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-72

Demo: MathML

> cd "demos/mathml"

> dir

math.xml

> xerces math.xml

> opera math.xml

> amaya math.xml

Page 73: Xml orchuulga bayarbat purevkhuu

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>

Page 74: Xml orchuulga bayarbat purevkhuu

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

Page 75: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-75

Хэд хэдэн үгсийн сангууд ижил документийг ашигладаг:

• Элемент болон хэлнээс ирсэнээр нь индеклэдэг:

• Угтвөр нь зарлагдаад хэлнүүдийн үндсэн URL руу илгээгддэг.

• Элементийн үйл явц хэрхэн яаж ажиллахыг XML процесс гэж нэрлэдг, эсвэл гадаад аппликашнийг хэрэглэх шаардлагатай.

XML ерөнхий төсөөлөл:Хэлнүүдийн хамрах хүрээ

svg:title title from SVG

xhtml:title title from XHTML

math:title title from MathML

Page 76: Xml orchuulga bayarbat purevkhuu

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>

Page 77: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-77

Демо: XHTML ба MathML ба SVG

> cd "demos/xhtml and mathml and svg"

> dir

mixed.xml

> amaya mixed.xml

Page 78: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-78

XML ерөнхий төсөөлөл:Технологийг өөрийнхөөрөө дүрслэх

тэдгээрийн синтаксууд нь XML-ийн өмнө CSS/DTD –ийг хэрэглэж байсан

Ерөнхий чиг хандлага нь XML-ийн уламжлалт синтаксийг солих:

• XSLT – XMLхувиргалтын хэл• XML Schema – XML класс дүрслэлийн хэл

Page 79: Xml orchuulga bayarbat purevkhuu

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>

Page 80: Xml orchuulga bayarbat purevkhuu

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>

Page 81: Xml orchuulga bayarbat purevkhuu

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

Page 82: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-82

XML-ийн ерөнхий төсөөлөл: Технологийг эмх цэгцтэй болгох

Өөр чиг хандлага бий болоход XMLийн технологууд нь өмнөх XML технологоо буцаан боловсруулдаг.

XHTML, гурван аятайхан зүйл байдаг:

• strict – хамгийн сайн XML руу-зөөх• transitional –HTML нь хуучин браузеруудаа буцааж хангалттай

их ашигладаг• frameset – string XHTML-д frame-ууд нэмэх

Уламжлалт програм хангамжаас хамаардаг XML-бишээс XML руу зөөх.

Page 83: Xml orchuulga bayarbat purevkhuu

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>

Page 84: Xml orchuulga bayarbat purevkhuu

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

Page 85: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-85

XML ерөнхий төсөөлөл:Бид хаана байна?

1. Өгөгдлийг өөрийнхөөрөө дүрслэх

2. Уян хатан бүтэц

3. Бүтэц –төрөл үл хамаарал

4. Төрлийн гадаад байдал хадгалалт

5. Документийн хувиргалтууд

6. Документийн боловсруулалт

7. програмын дэмжлэг

8. ОУ дэмжлэг

9. Синтаксийн үүрэг

10. горимыг зааврын дагуу хийх

11.Хэлнүүдийг үүсгэх

12.Хэлнүүдийг хүлээн зөвшөөрөх

13.Хэлнүүдийн хамрах хүрээ

14.Технологийг өөрийнхөөрөө дүрслэх

15. технологийг эмх цэгцтэй болгох

ЭНД!

Page 86: Xml orchuulga bayarbat purevkhuu

Үүсэл буюу Эх үүсвэрүүд

Page 87: Xml orchuulga bayarbat purevkhuu

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)

Page 88: Xml orchuulga bayarbat purevkhuu

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

Page 89: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-89

XML үүсэл: Генкод

1967 Graphic Communication Association (GCA)-ийн GenCode төсөл нь электроникийн документуудийн контент болон пресинтэшнийн үл хамаарах төхөөрөмжүүдийг дүрсэлсэн тагуудыг ашиглах аргаар анх дэвшигдэж байсан.

Page 90: Xml orchuulga bayarbat purevkhuu

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 тест системийг хэвлэж хөгжүүлсэн.

Page 91: Xml orchuulga bayarbat purevkhuu

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-ийн горим руу шилжүүлсэн.

Page 92: Xml orchuulga bayarbat purevkhuu

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 документ төрөлтэй, энгийн бөгөөд хялбар програм.

Page 93: Xml orchuulga bayarbat purevkhuu

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 ирээдүйтэй.

Page 94: Xml orchuulga bayarbat purevkhuu

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 шинэчилсэн.

Page 95: Xml orchuulga bayarbat purevkhuu

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) санал болгон дэвшүүлсэн.

Page 96: Xml orchuulga bayarbat purevkhuu

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 нар анх хэвлэж гаргасан.

Page 97: Xml orchuulga bayarbat purevkhuu

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).

Page 98: Xml orchuulga bayarbat purevkhuu

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 дэмждэг хэлбэрээр анх бүтээгдсэн.

Page 99: Xml orchuulga bayarbat purevkhuu

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

Энэ нь бодит түүх юм Түүний гэрч нь өнөөдөр юм

Page 100: Xml orchuulga bayarbat purevkhuu

W3C

Page 101: Xml orchuulga bayarbat purevkhuu

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)

Page 102: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-102

W3C-н нээлт

• W3C-г 1994 онд Тим Бернер гэдэг хүн Массажистийн сургуулийн технологын тусламжтай шинжлэх ухааны компьютер дээр хийжээ.

• 1995 онд Европын холбоо INRIA (автомат цахилгаан тооллуурыг дахин сэргээхч үндэсний сургууль) дээр W3C-н анхны үйл ажилгаа явуулсан.

• 1996 Япон улсын Кео сургууль дээр Аазын анхны үйл ажилгаа явуулсан.

• 2003онд INRIA компьютер болон математекийн дахин сэргээх үүргийг хүлээн авсан.

Page 103: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-103

W3C-н хуваагдал хэсэг

W3C бүрдэл:

• 24н цагын томоохон ажлын хэсэг.• Их бүрдэл нь: корпораци, удирдлагын агентлаг, сургуулиуд.

W3C-н Web технологийн удирдамж, зөвөлгөө хариуцсан мэргэжилтнүүдийн томоохон тасаг байдаг.

Page 104: Xml orchuulga bayarbat purevkhuu

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/

Page 105: Xml orchuulga bayarbat purevkhuu

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”

• Энэ хэсэг нь хамгын сайн болсон ба одоогоор хэрэгжиж байгаа тогтоомж.

Page 106: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-106

W3C зөвлөгөөний тухай

W3C –н зөвлөгөө заавар нь олон хэл дээр тодорхой, нарийн бичсэн байдаг.

• Та бүхэнд уншихад амар биш байсан болхоор W3C тайлбарлан хөгжиж XML болсон.

• 400+ XML гэдэг ном байдаг ба энэ ном нь W3C –н зөвлөгөөний тухай бүлэг бүрд нь тодорхой ойлгомжтой гаргасан болно.

Page 107: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-107

Demo: XML Resources

> opera http://www.w3.org/TR/

> opera www.amazon.com

> opera www.xml.org

Page 108: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-108

W3C Зөвлөгөөний хэсэг

W3C-с үнэлгээ нь ихэнхдээ урт хугцааны үйл явцаас гарч ирэх үр дүн юм.

1. Шинэ технологын санааны талбар нь:– гишүүн,– industry or– W3C-н бүлэг.

Гэх мэт W3C –н товчлол болон хэвлэгдэж болно.

2. Энэ хаяга нь Activity Area гарах нэмэгдхүүн болно, эсвэл хэрэв зохистой нэг ч үгүй бол шинэ Activity Area байгуулдаг.

Page 109: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-109

W3C Зөвлөгөөний хэсэг

3. Энэ үйл ажилгааны хувирлалт:– Ажлын нэг групп,– онцгой, тусгай групп– Coordination групп.

4. Хэрэв санал төлөвлөгөө үүсэх үед, ажлын групп эцсийн Draft ажлыг бүтээдэг.

5. W3C –н гол ажлын хэсэг буюу тэжээлийн савын гишүүн, аж үйлдвэрийн өсөлт, дэвшилийн тусгай групп байдаг.

Page 110: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-110

W3C Зөвлөгөөний хэсэг

6. Subsequent сэргэлт ба хэвлэлийн газар:– Өдөр бүрийн өглөө,– Хэвлэлийн ажлын групп дараагын халаагаа иртэл ажилдаг

7. The Last Working Draft can be:– зориглосон ажлын гол санааний олон ажлыг илгээгч, сэргээгч

групп – Candidate зөвөлгөө зэрэг байдаг.

Page 111: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-111

W3C Зөвлөгөөний хэсэг

8. Candidate зөвөлгөөний аж үйлдвэрлэлийн тухай:– Их илүү, олон үйлдвэр ба– техник тэжээлийн хэсэг

Энд хэвлэлийг гаргах зөв зохион байгуулалдтай групп үргэлж байдаг.

9. Гадаад талын туршлаг бүхий үр дүний дагвар нь:– Эцсийн дүндээ Candidate зөвөлгөөн дотор Proposed

зөвөлгөө бий болсон– Энэ нь хэвлэлийг түгээх үйл ажилгаанд тусалдаг.

Page 112: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-112

W3C Зөвлөгөөний хэсэг

10.Proposed зөвөлгөөний хэсгийг 3н сарын турш ажилаад сүүлийн сард нь бусад бүлгүүдэд тайлагнадаг.

11.Сонголтын гишүүн болох W3C зөвөлгөөний хэсэгт:– Техник солих бэлэн хэсэг– working draft-н буцаах ажил – Үл хүлээн авах (drop from W3C activities).

Page 113: Xml orchuulga bayarbat purevkhuu

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

Page 114: Xml orchuulga bayarbat purevkhuu

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-үүд.

Page 115: Xml orchuulga bayarbat purevkhuu

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).

Page 116: Xml orchuulga bayarbat purevkhuu

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 ажлын идвэхжилийн бүх зохциулалт.

Page 117: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-117

W3C XML ажлын групп

W3C XML үйл ажилгааны 3н групп:

1. XSL Ажлын групп: XML тээвэрлэлт болон гадаад асуудал.

2. DOM Ажлын групп: баримт бичгийн загвар боловсруулах.

3. Web Services Ажлын групп: XML-үндсэн протокол, урьдчилан төлөвлөлт.

Page 118: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-118

Хаяга: W3C Ажлын групп

opera http://www.w3.org/Consortium/Activities

opera http://www.w3.org/XML/

Page 119: Xml orchuulga bayarbat purevkhuu

Unicode

Page 120: Xml orchuulga bayarbat purevkhuu

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)

Page 121: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-121

XML болон Тэмдэгт түлхүүр үг

Түлхүүр үгний асуудал:

• XML хийсний дараа шаардагдах, энэ XML баримтанд шаардагдах хамгын сайн тэмдэгт (UCS).

• XML үйл ажилгааны хийх ёстой тулгуур UTF-8 ба UTF-16 нь UCS-н түлхүүр үгнүүд болно.

• UCS-н түлхүүр үгэнд ихэвчлэн тэмдэгтийг тулгуурлан ашигладаг, гэхдээ заавал тэмдэгт ашиглах шаардлаггүй.

Ямар утгатай бэ?

Page 122: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-122

Түлхүүр үгний нэр томъёо

character: Латин цагаан толгойн тэмдэгт, нэг оронтой тоонууд, тэмтэгтүүд.

character set: туайн сонголтын группын дагуу сонгох ба сонгохдоо: Латнин үсгэн тэмдэгт, Хятад дүрс зураг, тэмдэгтүүдээс сонгон.

coded character set: тэмдэгтийг ашиглах үед хаана байрлуулсанаас хамааран ASCII эсвэл Unicode гарна.

Page 123: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-123

Тэмдэгтийг сонгохдоо

Тэмдэгтийг сонгохдоо:

• ISO ба• Unicode Consortium .

Supports most of the existing written languages.

Page 124: Xml orchuulga bayarbat purevkhuu

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

Page 125: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-125

Бичиг, Хэл

Нэг бүхэл бичиг

Нэг бичигний тусламжтай нэг хэл бүтдэг

Крилээр бичэх тэмдэгт,

1. Russian,

2. Bulgarian,

3. Ukrainian.

Зарим ангид хэлэнд

Японыг сонговол:

1. Kanji

2. Hiragana

3. Katakana and

4. Romaji scripts.

Page 126: Xml orchuulga bayarbat purevkhuu

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

Page 127: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-127

UCS Тээвэрлэлтийн хэлбэр: UTF-8

UTF-8 – 8 түлхүүр үг

• ойролцоогоор 1-4 дарааллыг тэмдэгтийн тусламжтай олно.

• UTF-8 эсвэл зарим сонголт ASCII Латин бичгээр тодохойлогдон.

• Default for XML.

Page 128: Xml orchuulga bayarbat purevkhuu

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

Page 129: Xml orchuulga bayarbat purevkhuu

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.

Page 130: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-130

Тэмдэгтийн битүүдийн дараалал

BOM – битүүдийн дараалал

Документийн анхны тэмдэгт төрөл :

• FFFE – документ UTF-16 аар кодлогдсон, том-endian

• FEFF – документ UTF-16 аар кодлогдсон, жижиг-endian

• бусад character – документ UTF-8 аар кодлогдсон

Page 131: Xml orchuulga bayarbat purevkhuu

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

Page 132: Xml orchuulga bayarbat purevkhuu

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

Page 133: Xml orchuulga bayarbat purevkhuu

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.

Page 134: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-134

XML ба UCS

XML онцлох хэсэг:

• XML зарлахын тулд UTF-8 ба UTF-16 түлхүүр үгнүүдийг хэрэглэнэ.

XML багтаамж:

• XML үйл ажилгааны сонголтын хувьсахч түхүүрийг агуулдаг.• Эдгээрийг тус тусд нь илэрхийлэх encoding чанар чанар

байдаг.

Page 135: Xml orchuulga bayarbat purevkhuu

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

… ...

Page 136: Xml orchuulga bayarbat purevkhuu

XML

Page 137: Xml orchuulga bayarbat purevkhuu

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)

Page 138: Xml orchuulga bayarbat purevkhuu

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).

Page 139: Xml orchuulga bayarbat purevkhuu

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

Page 140: Xml orchuulga bayarbat purevkhuu

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.

Page 141: Xml orchuulga bayarbat purevkhuu

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

Page 142: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-142

XML 1.1 – W3C Candidate зөвөлгөөний хэсэг

1.1 дэвшүүлэх зөвөлгөө:

XML 1.0 тодорхойлолтын нэр нь боломж олголгүй хориглох ба бүх зүйлийг нь эс зөвшөөрөн хориглож байдаг, харин XML 1.1 нэр бол шинэ загвар хийх ба бүх зүйлийг хориглолгүй зөвшөөрч (тодорхой учир шалтгааны тухай) боломж олгож байдаг.

Page 143: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-143

Demo: XML W3C зөвөлгөөний хэсэг

> opera http://www.w3.org/TR/REC-xml

> opera http://www.w3.org/TR/xml11/

Page 144: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-144

XML загварын зорилго 1

шинэ загварын зорилгын тухай XML (XML 1.0 W3C-н зөвөлгөө):

1. XML саадгүй ашиглах Internet-тэй болох.

2. XML өргөн хүрээтэй олон зүйлийн хүсэлт гаргах.

3. XML програмыг SGML тэй холбож тааруулах

4. XML програм бичих үйл ажилгааг хялбар болгох.

Page 145: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-145

XML загварын зорилго 2

5. Албан бус өвөрмөц шинжүүдийн үүсгэгчийг хамгын бага болгох

6. XML хүнлэг буюу оюунлаг, өөрөө сэтгэх програмын бичлэгийг арилгах.

7. XML загварыг хурдан, урьдчилсан бэлтгэлтэй болгох.

8. XML загварыг товч бөгөөд албан ёсны хэлбэр болгох.

9. XML –н програмын бичлэгийг хялбар бүтээх.

10.XML –н чухал үнэлгээнд гарах алдааг туйлын бага болгох.

Page 146: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-146

Жишээ: улсад нэвтрэх карт \веез\

Оюутны ангилалын карт

• улсад нэвтрэх карт \веез\• Иргэн Jan Kowalski• XML-эр дотогш хөрвүүлнэ.

Page 147: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-147

улсад нэвтрэх картын тэмтэгт үг

XML програмын бичлэгийн falls into two categories:

• markup – нь XML 12 ялгаатай олон картын төрлийг бахтаадаг.

• character data – хэл зүйн ялгаатай эсвэл ялгаагүй хэсгийг тодорхойлдог

Page 148: Xml orchuulga bayarbat purevkhuu

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&#x0144;sk, Poland

</address>...<signature sigfile="mysig"/>

</card>

Page 149: Xml orchuulga bayarbat purevkhuu

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 &copyright;

5 character references &#x0144;

6 comments <!-- whatever -->

7 CDATA sections <!CDATA[ whatever ]]>

8 document type declarations <!DOCTYPE ... >

Page 150: Xml orchuulga bayarbat purevkhuu

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>

Page 151: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-151

Тэмдэгтийн өгөгдлийн ялгаагүй хэсэг

Тэмдэгт өгөгдлийн ялгаагүй 2 тайлбар:

• ялгаагүй (CDATA) –өгөгдлийн толгой файлын entity/character тайлбар :

– entity Тайлбар – &copyright;– character тайлбар – &#x0144;

жишээний тухай

Morska 24B, 24-630 Gda&#x0144;sk, Poland

Page 152: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-152

Хэл зүйн өгөгдөл

• Хэл зүйн (PCDATA) – тэмдэгт өгөгдлийн entity тайлбартай буцаах хэсгийн тодорхойлолт

жишээний тухай:

Morska 24B, 24-630 Gdańsk, Poland

0144 (hexadecimal) тэмдэдгтийн тухай өгөгдлийн дүнгийн хэсэг.

Page 153: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-153

Demo: тэмдэдгтийн түлхүүр үг

> cd "../cdrom/unicode/Code Charts/"

> acroRd32 U0100.pdf

Page 154: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-154

Бичэгдэл

Бичэгдэлийн дэс дараалал:

• Эхлэл бүлэг (албан журмын)• елемэнт (албан журмын)• Олон төрлийн үнэлгээ (давталт)

document ::= prolog element Misc*

Page 155: Xml orchuulga bayarbat purevkhuu

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 -->

Page 156: Xml orchuulga bayarbat purevkhuu

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

Page 157: Xml orchuulga bayarbat purevkhuu

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 хадгалах карт.

Page 158: Xml orchuulga bayarbat purevkhuu

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.• Алдааòàé áîë анхааруулгà ãàð÷ èðíý.

Page 159: Xml orchuulga bayarbat purevkhuu

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>

Page 160: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-160

Жишээ: Тэмдэгтүүдийн товхимол

Тэмдэгтүүдийн товхимол нь доорх хэлуэрүүдээс тогтоно:

• коммент,• Технологийн зааварчиллагаа• Эсвэл хоосон зай

Misc ::= Comment | PI | S

Page 161: Xml orchuulga bayarbat purevkhuu

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>

Page 162: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-162

Character-ууд

D800-DBFF ба FFFE ба FFFF character-ууд:

Char ::= #x9 |

#xA |

#xD |

[#x20-#xD7FF] |

[#xE000-#xFFFD] |

[#x10000-#x10FFFF]

Page 163: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-163

Хоосон зай

Хоосон зай нь нэг эсвэл нэгээс илүү хоосон зайнууд, шулуун шугам, буюу табуудаас бүрддэг:

S ::= (#x20 | #x9 | #xD | #xA)+

Character-ууд нь цаашаа хуваагддаг. . .

Page 164: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-164

Character-ууд: Үсэгнүүд болон тоонууд

1. Үсэгнүүд

Letter ::= BaseChar | Ideographic

BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] |...

Ideographic ::= [#x4E00-#x9FA5] | #x3007 | ...

2. тоонууд

Digit ::= [#x0030-#x0039] | ...

Page 165: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-165

Character-уудыг нэгтгэх

3. Character-уудыг нэгтгэх– үндсэн character-ийн өмнө зураастай хослож нэгтгэж ашигладаг.

CombiningChar ::= [#x0300-#x0345] | ...

Page 166: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-166

Демо: Character чартын юникодыг шинжлэх

> cd "../cdrom/unicode/Code Charts/"

> acroRd32 U0000.pdf

> acroRd32 U4E00.pdf

> acroRd32 U0300.pdf

Page 167: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-167

XML нэрүүд

Нэр нь үсгээр эхэлдэг, онцлон тэмдэглэх эсвэл colon, ба тасралтгүй үсэг , тоон загвар зэргүүдийг доорх жишээнд өгөгдсөн хэлбэрээр тэмдэглэдэг.

NameChar ::=

Letter | Digit |

’.’ | ’-’ | ’_’ | ’:’ |

CombiningChar

Name ::= (Letter | ’_’ | ’:’) (NameChar)*

Nmtoken ::= (NameChar)+

Page 168: Xml orchuulga bayarbat purevkhuu

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 ээр эхэлдэг эдгээрийн дээр дүрсэлсэнээс харж болно.

Page 169: Xml orchuulga bayarbat purevkhuu

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>

Page 170: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-170

Комментууд

Бичлэг:

document ::= prolog element Misc*Misc ::= Comment | PI | S

Коммент нь үгэн стрингээр зааглагдсан character-уудын дараалал юм <!-- and --> тэр нь агуулдаггүй --:

Comment ::= ’<!--’((Char - ’-’) | (’-’ (Char - ’-’)))* ’-->’

Нэг үгээр хэлбэл коммент нь тэмдэгтүүдийн гаралт юм. Тэдгээр нь character өгөгдлийн хэсэг бас биш юм.

Page 171: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-171

Жишээ: Комментууд

Алдаагүй Коммент->

алдаатай Коммент ->

<?xml version="1.0"?>

<!-- arrival card for Jan Kowalski -->

<card type="arrival">

...

</card>

<!-- end of document --->

Page 172: Xml orchuulga bayarbat purevkhuu

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

• Хадгалах, нээх, шалгах.

Page 173: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-173

Технологийн ажиллагааны заавар

бичлэг:

document ::= prolog element Misc*

Misc ::= Comment | PI | S

Технологийн ажиллагааны заавар апплекашнуудын зааварчилгаа багтдаг.

Page 174: Xml orchuulga bayarbat purevkhuu

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-ийн зарлалтын томьёолыг ашигласан байх ёстой .

Page 175: Xml orchuulga bayarbat purevkhuu

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>

Page 176: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-176

Зорилт: Технологийн ажиллагааны зааварыг нэмэх

чиний документэд хоёр боловсруулалтыг нэмдэг:

• Майл апплекашнд нэмэх

<?mail message="coming back" date="30.09.2003"?>

• stylesheet процессд нэмэх

<?xml-stylesheet type="text/css"?>

Дээрх хоёр үйл ажиллагааг нээх болон хадгалахад .

Юу тохиолдож болох вэ?

Page 177: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-177

Prolog

Reminder:

document ::= prolog element Misc*

пролог нь XML зарлатын сонголтыг агуулдаг, Misc*, сонголт документ төрлийн зарлатуудыг дараах байдлаар гүйцэтгэдэг

Misc*:

prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?

Page 178: Xml orchuulga bayarbat purevkhuu

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>

Page 179: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-179

XML зарлалт

Тэр документуудыг индексийг XML-д бичдэг.

Энэ синтакстай адил төстэй боловсруулалтыг “xml” target-аар хийдэг:

XMLDecl ::=

’<?xml’ VersionInfo EncodingDecl?

SDDecl? S? ’?>’

энэ документийн хамгийн эхэнд байх ёстой.

гурван атрибутыг зөвшөөрдөг.

Page 180: Xml orchuulga bayarbat purevkhuu

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 гэсэн хувилбарыг л зөвшөөрнө., автомат хувилбарыг хүлээн зөвшөөрдөг.

Page 181: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-181

XML Standalone Declaration

2. Документийг ганцааранг нь парсинг хийх боломж байдаг уу?

Энд гадаад зарлалтыг тооцох шаардлагатай юу

SDDecl ::=

S ’standalone’ Eq

(("’" (’yes’ | ’no’) "’") |

(’"’ (’yes’ | ’no’) ’"’))

Хоёр боломж байдаг:

– yes – Гадаад тэмдэгтийн зарлалтгүй байх

Дефаулт биш

Page 182: Xml orchuulga bayarbat purevkhuu

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 ийг ашиглах ёстой.

Page 183: Xml orchuulga bayarbat purevkhuu

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"?>

Page 184: Xml orchuulga bayarbat purevkhuu

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 кодыг өөрчлөх

Page 185: Xml orchuulga bayarbat purevkhuu

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

Page 186: Xml orchuulga bayarbat purevkhuu

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

Page 187: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-187

Документ төрлийн зарлалт

Сэргээн санах:

document ::= prolog element Misc*

prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?

Документ төрлийн зарлалт:

• документийн үндсэн элементийн нэрүүд• документийн классуудын дүрэм нь тэмдэгтийн зарлалтууд

болон цэгүүдийг 2 ууланг нь агуулдаг

Page 188: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-188

документ төрлийн зарлалт

Зарлатын горим:

doctypedecl ::=

’<!DOCTYPE’ S Name (S ExternalID)? S?

(’[’ (markupdecl | DeclSep)* ’]’ S?)? ’>’

• Name нь документийн үндсэн элемент

• ExternalId нь документийн гадаад DTD-г дүрсэлдэг

• [...] д документийн дотоод DTD агуулагддаг

Page 189: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-189

документ төрлийн зарлалтын тодорхойлолт

Документ төрөл:

• declaration – тэмдэгт doctypedecl -ээр холбогддог/агуулдаг документ төрлийн тодорхойлолт

• definition – документуудын класс дүрслэлийн горимууд (DTD): inside markupdecl or pointed by ExternalID

DTD = документ төрлийн тодорхойлолт

DTD нь XML ашигласан хэлний дүрмийг тодорхойлж өгдөг.

Дараагийн бүлэгт энэ тухай нарийн авч үзнэ.

Page 190: Xml orchuulga bayarbat purevkhuu

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

Page 191: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-191

Систем документ төрлийн зарлалт

XML нь синтаксд хязгаар тогтоодоггүй

SystemLiteral ::=

(’"’ [ˆ"]* ’"’) | ("’" [ˆ’]* "’")

Файлын нэр буй замыг заадаг URL.

Page 192: Xml orchuulga bayarbat purevkhuu

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">

Page 193: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-193

Нийтлэг документ хэлбэрийн зарлалт

PubidLiteral байнга ерөнхий формал аргаар дууддаг.

PubidLiteral ::=

’"’ PubidChar* ’"’ |

"’" (PubidChar - "’")* "’"

PubidChar ::= #x20 | #xD | #xA |

[a-zA-Z0-9] | [-’()+,./:=?;!*#@$_%]

FPI нь DTD контентийн дүрслэл зохион байгуулалтыг хангадаг, энэ нь физик байрлалаас үл хамаардаг.

Page 194: Xml orchuulga bayarbat purevkhuu

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: хэлийг ашигладаг

Page 195: Xml orchuulga bayarbat purevkhuu

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">

Page 196: Xml orchuulga bayarbat purevkhuu

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”>

Page 197: Xml orchuulga bayarbat purevkhuu

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">

Page 198: Xml orchuulga bayarbat purevkhuu

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. нээх

Page 199: Xml orchuulga bayarbat purevkhuu

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. нээх, өөрчлөх, нээх

Page 200: Xml orchuulga bayarbat purevkhuu

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. Буцааж нээх

Page 201: Xml orchuulga bayarbat purevkhuu

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.Аль нь илүү их мэдэгдэл авдаг : Дотоод эсвэл гадаад уу?

Page 202: Xml orchuulga bayarbat purevkhuu

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

Page 203: Xml orchuulga bayarbat purevkhuu

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>

Page 204: Xml orchuulga bayarbat purevkhuu

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>

Page 205: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-205

Элементүүд

Сануулга:

document ::= prolog element Misc*

Элемент хоосон элементтэй таг буюу хоосон биш элемент:

element ::= EmptyElemTag | STag content ETag

Хоосон биш элемент нь сонгогдсон нэрнүүдийн хувьд нээлттэй болон хаалттай тагуудыг агуулсан контентийн бүрдэлээс тогтдог.

Page 206: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-206

Эхлэх болон төгсгөх тагууд

Эдгээр тагууд нь гурван төрөлтэй:

1. Эхлэх таг – нэр ба атрибутын жагсаалт нь хоосон зай болон бүх хаалт, хашилт... дотор талын бичлэгээс үл хамаардаг.

2. < and >:

STag ::= ’<’ Name (S Attribute)* S? ’>’

2. Төгсгөлийн таг –нэр нь дотор байрлана</ and >:

ETag ::= ’</’ Name S? ’>’

Page 207: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-207

Хоосон элементийн таг

3. Хоосон элементийн таг –нэр ба атрибутын жагсаалт нь хоосон зай болон бүх хаалт, хашилт... дотор талын бичлэгээс үл хамаардаг. < and />:

EmptyElemTag ::=

’<’ Name (S Attribute)* S? ’/>’

Page 208: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-208

Жишээ: Тагууд

start tag ->

end tag ->

empty element tag ->

<card type="arrival">

<address where="home">

24-630 Gda&#x0144;sk, Poland

</address>

...

<signature sigfile="mysig"/>

...

</card>

Page 209: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-209

Aтрибутууд

атрибутын мэдэгдэл нь эхлэх болон хоосон элементийн тагуудийг ашигладаг.

Мэдэгдэлүүд нь дараах зүйлүүдээс бүрдэнэ:– нэр,– Тэнцүүгийн тэмдэг– утга

Attribute ::= Name Eq AttValue

Page 210: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-210

Aтрибутын утга

Утганд нь тэмдэгт дотор character-ийг ашиглахыг эс тооцвол (<, &, and " or ’) characters болон references-ийн дараалал байдаг:

AttValue ::=

’"’ ([ˆ<&"] | Reference)* ’"’ |

"’" ([ˆ<&’] | Reference)* "’"

Доорх хоёр төрлөөр хашилтыг ашиглана:

– Давхар хашилтууд (дотор нь дан хашилт зөвшөөрдөг) эсвэл– Дан хашилт (дотор нь давхар хашилт зөвшөөрдөг)

Page 211: Xml orchuulga bayarbat purevkhuu

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&#x0144;sk">

...

</address>

...

<signature sigfile="mysig"/>

</card>

Page 212: Xml orchuulga bayarbat purevkhuu

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>

Page 213: Xml orchuulga bayarbat purevkhuu

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>

Page 214: Xml orchuulga bayarbat purevkhuu

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>

Page 215: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-215

Зорилт: Travel документэд мэдээлэл нэмэх

5. Travel документэд мэдээлэл нэмэх :

– документын төрөл– документын тоо– Мэдээлэлийн аутор– Мэдээлэлийн огноо

<document>

<type>...</type>

<number>...</number>

<authority>...</authority>

<date>...</date>

</document>

Page 216: Xml orchuulga bayarbat purevkhuu

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>

Page 217: Xml orchuulga bayarbat purevkhuu

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>

Page 218: Xml orchuulga bayarbat purevkhuu

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>

Page 219: Xml orchuulga bayarbat purevkhuu

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>

Page 220: Xml orchuulga bayarbat purevkhuu

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>

Page 221: Xml orchuulga bayarbat purevkhuu

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>

Page 222: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-222

зорилт: Тоон сигнатур нэмэх

14.Нэмэх traveller-ийн тоон signature: my.sig файлаас хоосон элементийг шалгах

<card type="arrival">

...

<signature sigfile="my.sig"/>

</card>

Page 223: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-223

References буюу дүрслэлүүд

Ямар нэгэн дүрслэл нь дараах хэлбэрүүдтэй дүрслэгддэг:

• character дүрслэл эсвэл• entity (нэг класс буюу обьект) дүрслэл

Reference ::= CharRef | EntityRef

Page 224: Xml orchuulga bayarbat purevkhuu

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-тын тооллын системээр дүрслэх

Page 225: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-225

Entity References

entity reference нь нэрлэсэн entity-ийн контент руу ханддаг:

EntityRef ::= ’&’ Name ’;’

Ийм нэр DTD-дээр зарлагдсан байх ёстой.

Page 226: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-226

Өмнө тодорхойлсон Нэгж Reference-ууд

Өмнө тодорхойлсон нэгжийн нэрнүүд эдгээр таваас тогтоно:

Тэдгээр нь тэмдэгт character-уудыг оруулж ирэхэд ашигладаг.

нэр утга

amp &

apos ‘

quot “

gt >

lt <

Page 227: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-227

Жишээ: Reference-ууд

Өмнө тодорхойлсон

нэгж reference ->

character reference-ууд:

Аравтын тооллын систем ->

Арван зургаатын тооллын систем ->

Хэрэглэгчийн тодорхойлсон

нэгж reference ->

<?xml version="1.0"?>

<hotel type="bed&amp;breakfast">

...

<address>

<city name="Gda&#324;sk"/>

<street

name="Okr&#x0119;&#x017D;na"/>

...

</address>

<note name="Read &legalstuff;"/>

</hotel>

Page 228: Xml orchuulga bayarbat purevkhuu

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>

Page 229: Xml orchuulga bayarbat purevkhuu

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">

... &female; ...

</card>

3. Буруу юу? Зөв үү ?

Page 230: Xml orchuulga bayarbat purevkhuu

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>

Page 231: Xml orchuulga bayarbat purevkhuu

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?

Page 232: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-232

Контент

Эргэн санах:

document ::= prolog element Misc*

element ::= EmptyElemTag | STag content ETag

эхлэх таг төгсгөлийн таг хоорондох текст нь контент элементийг дууддаг:

content ::=

CharData?

( (element | Reference | CDSect | PI | Comment)

CharData?

)*

Page 233: Xml orchuulga bayarbat purevkhuu

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

Page 234: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-234

CDATA хэсэг

CDATA хэсэг нь character-уудыг агуулж байгаа блокуудын алдагдалыг ашигладаг бусад тэмдэгтүүдийг танидаггүй:

CDSect ::= CDStart CData CDEnd

CDStart ::= ’<![CDATA[’

CData ::= (Char* - (Char* ’]]>’ Char*))

CDEnd ::= ’]]>’

CDATA-д, зөвхөн CDEnd тэмдэгт шиг танидаг .

CDATA үүргүй.

Page 235: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-235

Жишээ:CDATA хэсэг

CDATA дахь тэмдэгтийналдагдал ->

CDATA дахь тэмдэгтийналдагдал ->

<lecture about="XML">Here is a start-tag:&lt;messageto=&quot;[email protected]&quot;&gt;and an end-tag: &lt;note/&gt;

</lecture>

<lecture about="XML"> <![CDATA[Here is a start-tag: <message to="[email protected]"> and an end-tag: <note/>]]></lecture>

Page 236: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-236

Character өгөгдөл

Бүх текст тэмдэгт биш юм. Тэдгээр нь документийн сharacter өгөгдлөөс тогтдог.:

CharData ::=

[ˆ<&]* - ([ˆ<&]* ’]]>’ [ˆ<&]*)

Character өгөгдөл нь character-ийн ямар нэгэн стринг юм. Эдгээр нь дараах хэсгийг агуулдаггүй:

– Ямар нэгэн тэмдэгтийн эхлэх-өгөгдлийн хязгаарлалт, ба– CDATA-хэсгийн- ойр оршдог өгөгдлийн хязгаарлалт]]>

Page 237: Xml orchuulga bayarbat purevkhuu

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 - ’-’)))* ’-- >’

Page 238: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-238

Хамгийн сайн зохион байгуулалтанд орсон XML документ

Энэ нь XML-ийн синтакийг тодорхойлсон дүрмүүдийн тайлбар шийддэг.

Хамгийн сайн зохион байгуулалтанд орсон XML документ гэж юу вэ?

1. Бүхлээр нь авч үзвэл, энэ нь дүрэмтэй зохицдог:

document ::= prolog element Misc*

2. Энэ нь бүх хамгийн сайн зохион байгуулалтанд орсон зааглалтуудтай зохицдог(?)

Page 239: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-239

Нэгжийг зарлах

Нэгжийг зарлах :

Мэдээллийг програмын аргаар уншиж мэдээллийг авах үйлдлийг parsing гэнэ.

• Тэмдэгт шиг сайн текстийг агуулах• Parse-д хийсэн (XML контент) эсвэл parse-д хийгээгүй (XML

биш)

• Документ дотор тодорхойлогддог (дотоод) эсвэл гадна (гадаад)

Page 240: Xml orchuulga bayarbat purevkhuu

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’/>.

&copyright;">

<!ENTITY copyright "&#x00A9;">

]>

<hotel type="bed&amp;breakfast">

<note name="Read &legal;"/> ...

</hotel>

Page 241: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-241

Сайн зохион байгуулагдсан нэгжүүдийн парсинг

Бүх нэгжүүдийн парсинг документийн body-оос шууд бус эсвэл шууд байдлаар ханддаг, иймд сайн зохион байгуулагдсан байх ёстой:

– Нэгжийн дотоод парсинг :

intParsedEnt ::= content

– Нэгжийн гадаад парсинг:

extParsedEnt ::= TextDecl? content

Page 242: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-242

Teкст зарлалт

Нэгжийн гадаад парсинг нь нэгжүүдийн парсингийг агуулах боломжтой:

TextDecl ::=

’<?xml’ VersionInfo? EncodingDecl S? ’?>’

Текст зарлатыг зөвшөөрдөг адилхан документ дээр хийдэг хэд хэдэн ялгаатай кодлолын аргууд байдаг..

XML зарлалтын өөр өөр аргуудыг тэмдэглэе:

– version сонголтын, – encoding хийх, – standalone хориглох.

Page 243: Xml orchuulga bayarbat purevkhuu

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 &male; ...

</card>

2. Нээх, засах.

Page 244: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-244

Сайн зохион байгуулагдсан зааглалтууд

BNF гаралтын дүрэм дээр суурилсан Сайн зохион байгуулагдсан 3 компенент байдаг:

1. Эхлэлийн тагны нэр болон төгсгөлийн тагны нэрүүдийг сонгох :

element ::= EmptyElemTag | STag content ETag

STag ::= ’<’ Name (S Attribute)* S? ’>’

ETag ::= ’</’ Name S? ’>’

Page 245: Xml orchuulga bayarbat purevkhuu

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)* "’"

Page 246: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-246

Сайн зохион байгуулагдсан зааглалтууд

4. Нэгжийн текст оруулалт атрибутын утганд шууд болон шууд бусаар хандахад a <. Агуулдаггүй байна.

AttValue ::=

’"’ ([ˆ<&"] | Reference)* ’"’ |

"’" ([ˆ<&’] | Reference)* "’“

5. amp, lt, gt, apos эсвэл quot нэгж reference-д өгөгдсөн нэр , буюу Энэ нь документийн DTD дотор зарлагдсан байх ёстой.

EntityRef ::= ’&’ Name ’;’

Page 247: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-247

Сайн зохион байгуулагдсан зааглалтууд

6. Нэгж нь өөртөө рекурсив reference-г агуулах ёсгүй, шууд болон шууд бус нь мөн адилхан.

7. Нэгж reference парсинг хийгдээгүй нэгжийн нэрийг агуулдаггүй. Атрибутын утгуудад парсинг хийгдээгүй нэгжүүд ханддаг.

Энэ нь XML синтакийн тодорхойлолтыг төгсгөдөг.

Сайн зохион байгуулагдсан нь яг ямархуу нөлөөлтэй байгаа болон документ төрлийн тодорхойлолтуудын танилцуулгыг дараагийн бүлэгт авч үзнэ.

Page 248: Xml orchuulga bayarbat purevkhuu

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

Page 249: Xml orchuulga bayarbat purevkhuu

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>

Page 250: Xml orchuulga bayarbat purevkhuu

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>

Page 251: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-251

Жишээ: Macau Arrival Card-Макаод ирэх кард

more elements? ->

<address where="home">

<street>Morska 24B</street>

<city>Gda&#x0144;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&#x0144;sk, Poland

</address>

<address where="Macao">

Flower Garden 12B, Taipa

</address>

<travel type="from">

<place>Hong Kong</place>

</travel>

<signature sigfile="mysig"/>

</card>

Page 252: Xml orchuulga bayarbat purevkhuu

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

Page 253: Xml orchuulga bayarbat purevkhuu

DTD

Page 254: Xml orchuulga bayarbat purevkhuu

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)

Page 255: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-255

Сайн зохион байгуулагдсан буюу Toast

Бүх XML документууд сайн зохион байгуулагдсан байх шаардлагтай:

• муу зохион байгуулагдсан үед документ нь XML-ийг дууддаг even нь ажилладаггүй.

• XML парсерууд require хийдэг:

– сайн биш зохион байгуулагдсан XML документууд нь боловсруулалт хийж чаддаггүй.

– аплекашнийг дуудахад асуудал гарсан гэсэн мэдээлэл өгдөг

Page 256: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-256

Сайн зохион байгуулагдсаныг бодит байдалтай харьцуулахад

Сайн зохион байгуулагдсан XML документ хүчин төгөлдөр нэмэгдэх боломжтой.

– XML документ нь хэрэв хүчинтэй бол:

1. Энэ нь документ төрлийн тодорхойлолттой нэгддэг

2. Энэ тодорхойлогдсон тодорхой зааглалтандаа захирагддаг

– SGML шиг биш, DTD нь XML-ийн сонголт , иймд хүчинтэй байдаг.

Энэ бүлэгт бид документ төрлийн тодорхойлолтуудын синтакийг тайлбарлах болон, тэдгээрийн гол санаануудыг нэгтгэн авч үзнэ.

Page 257: Xml orchuulga bayarbat purevkhuu

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

Page 258: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-258

DTD хүрээ буюу боломж бололцоо

Бид DTD-г ашиглан дараах зүйлүүдийг тодорхойлж чадна:

1. Элементүүд ба тэдгээрийн атрибутууд

2. Элементүүдийн дараалал буюу үүрийг

3. Элементүүд текстийг агуулж чадах эсэхийг

4. Элементүүдболон текстийг хослох буюу нэгдэж болох эсэхийг

5. Элементүүд сонголт хийж чадах эсэхийг

6. Элементүүд давтагдах эсэхийг

7. Атрибутын дефаулт эсвэл тогтмол утгуудыг

8. Атрибутын өгөгдлийн төрлийн хязгаарлалтыг

9. Текстийн дахин ашиглах боломжтой хэсгүүдийн нэгжүүдийг дууддагыг

10.XML –ийн бус тэмдэглэлүүдийг

11.Гэх мэт.

Page 259: Xml orchuulga bayarbat purevkhuu

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?)? ’>’

Page 260: Xml orchuulga bayarbat purevkhuu

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?)? ’>’

Page 261: Xml orchuulga bayarbat purevkhuu

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>

Page 262: Xml orchuulga bayarbat purevkhuu

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>

Page 263: Xml orchuulga bayarbat purevkhuu

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>

Page 264: Xml orchuulga bayarbat purevkhuu

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

Page 265: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-265

Зорилт: Үгсийн сантай документ үүсгэх

• Шинэ дериктор үүсгэх> mkdir course/tasks/letter

> cd course/tasks/letter

• цөөн хэдэн үгтэй хамгийн жижиг документийг үүсгэх

<letter></letter>

• Гэж нэрлэн хадгалах letter.xml, parse

Page 266: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-266

Зорилт : Үсэгийг өргөтгөх

• XML зарлалтанд нэмэх, parse

<?xml version="1.0"?>

<letter></letter>

• DOCTYPE-д нэмэх, parse

<?xml version="1.0"?>

<!DOCTYPE>

<letter></letter>

Page 267: Xml orchuulga bayarbat purevkhuu

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>

• Утга олгоход, юу тохиолддог вэ?

Page 268: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-268

Тэмдэгтийн зарлалтууд

Тэмдэгтийн зарлалтууд дараах зүйлүүдийг оруулдаг : элемент, атрибутын жагсаалт, мөн чанар ба тэмдэглэл. Заавар болон коментуудын боловсруулалтыг бас зөвшөөрдөг.

markupdecl ::=

elementdecl |

AttlistDecl |

EntityDecl |

NotationDecl |

PI |

Comment

Page 269: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-269

Тэмдэгт зарлалтуудын формат

Бүх тэмдэгт зарлалтууд адил төстэй синтакд нийцдэг. :

<!TYPE ...>

where TYPE is one of:

• ELEMENT• ATTLIST• ENTITY• NOTATION

Page 270: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-270

Элемент төрлийн зарлалт

Элемент төрлийн зарлалт нь элементийн нэр ба тухайн контентийн шинж чанар буюу дэлгэрэнгүй мэдээллийг агуулдаг:

elementdecl ::=

’<!ELEMENT’ S Name S contentspec S? ’>’

контентийн шинж чанар нь дараах дөрвөн төрөлтэй:

contentspec ::=

’EMPTY’ |

’ANY’ |

Mixed |

children

Page 271: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-271

Empty элемент контент

EMPTY г ямар нэгэн элемент буюу ямар нь ч агуулж чаддаг:

• character өгөгдөл• children элементүүд биш

Гэвч энэ нь атрибутуудыг агуулж болдог.

Page 272: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-272

Any элемент контент

ANY зааглалтуудгүй оруулдаг. Элемент доорх зүйлүүдийг агуулдаг:

• элементүүд,• character өгөгдөл,• Хоёулангийн холимог, эсвэл аль нь ч үгүй.

DTD-ийн дизайнд анхны үе шатууд чухал хэрэгтэй байдаг.

Page 273: Xml orchuulga bayarbat purevkhuu

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 ...>

Page 274: Xml orchuulga bayarbat purevkhuu

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>

Page 275: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-275

Зорилт: ANY-гэсэн үгээр хувьсагч зарлах

• ANY-ээр зарлах, утга олгох

<?xml version="1.0"?>

<!DOCTYPE letter [<!ELEMENT letter ANY>]>

<letter>this is a letter text</letter>

Page 276: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-276

Холимог элемент контент

Холимог загвар: элемент контентуудын character өгөгдөл сонголтыг child элементүүдээр төрөлжүүлэх:

Mixed ::=

’(’ S? ’#PCDATA’ (S? ’|’ S? Name)* S? ’)*’ |

’(’ S? ’#PCDATA’ S? ’)’

child элементүүдийн төрлүүд зааглагдсан байдаг, гэвч тэдгээрийн дараалал буюу байрлалуудын тоо зэрэг нь зааглагдсан биш байдаг.

Page 277: Xml orchuulga bayarbat purevkhuu

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)*>

Page 278: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-278

Зорилт:PCDATA-ээр үсгээр тэмдэглэж зарлах

• PCDATA-дээр үсгээр тэмдэглэж зарлах, утга олгох

<?xml version="1.0"?>

<!DOCTYPE letter [<!ELEMENT letter (#PCDATA)>]>

<letter>this is a letter text</letter>

Page 279: Xml orchuulga bayarbat purevkhuu

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>

Page 280: Xml orchuulga bayarbat purevkhuu

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>

Page 281: Xml orchuulga bayarbat purevkhuu

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>

Page 282: Xml orchuulga bayarbat purevkhuu

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>

Page 283: Xml orchuulga bayarbat purevkhuu

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>

Page 284: Xml orchuulga bayarbat purevkhuu

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>

Page 285: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-285

Элемент контент

Ямар нэгэн элемент нь зөвхөн child (character өгөгдөлтэй биш) элементүүдийг агуулах ёстой , must contain only elements (no character data), сонголт нь хоосон зайнаас үл хамаарна.

choice эсвэл seq ийн build болон сонголтын байрлалын заагчууд:

children ::=

(choice | seq) (’?’ | ’*’ | ’+’)?

Page 286: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-286

Биелэлтийн боломжийн заагч буюу индикатор

E Яг тэнцүү буюу тохирсон E

E? тэг эсвэл E ээс илүү

E* тэг эсвэл E ээс илүү

E+ нэг эсвэл E ээс илүү

Page 287: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-287

Сонголтын контент

Choice буюу сонголт нь контентийн эгэл хэсгүүдийн жагсаалт юм. cp нь “|” ээс үл хамаарна.

Лист буюу жагсаалт нь хамгийн багадаа ямар хоёр эгэл хэсгийг агуулдаг :

choice ::=

’(’ S? cp ( S? ’|’ S? cp )+ S? ’)’

Page 288: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-288

Контентийн дараалал

seq нь контентийн эгэл хэсгүүдийн жагсаалт, cp контентийн эгэл хэсэг нь “,” ээс үл хамаарах.

Лист буюу жагсаалт нь хамгийн багадаа ямар нэгэн эгэл хэсгийг агуулдаг :

seq ::=

’(’ S? cp ( S? ’,’ S? cp )* S? ’)’

Page 289: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-289

Контентийн эгэл хэсэг

Контентийн эгэл хэсэг cp нь :

• элементийн нэр,• сонголт эсвэл• дараалал

сонголтын индикатор:

cp ::=

(Name | choice | seq) (’?’ | ’*’ | ’+’)?

Page 290: Xml orchuulga bayarbat purevkhuu

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,...

Page 291: Xml orchuulga bayarbat purevkhuu

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,...

Page 292: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-292

Демо: элемент контентийн загварууд

> cd "demos/element content models"

> ls

test.xml

> java dom.Counter -v test.xml

Page 293: Xml orchuulga bayarbat purevkhuu

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>

Page 294: Xml orchuulga bayarbat purevkhuu

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>

Page 295: Xml orchuulga bayarbat purevkhuu

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>

Page 296: Xml orchuulga bayarbat purevkhuu

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>

Page 297: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-297

зарлах төрлүүд

Эргэн санах:

markupdecl ::=

elementdecl |

AttlistDecl |

EntityDecl |

NotationDecl |

PI | Comment

атрибут мэдэгдэлийн жагсаалт нь дараах хуудасанд байгаа. . .

Page 298: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-298

Атрибутын зарлалтын жагсаалт

Атрибутын мэдэгдэлийн жагсаалт :

• Өгөгдсөн элемент дахь атрибутуудын олонлогоор тодорхойлогдоно.

• Эдгээр атрибутуудын зааглалтуудын төрлийг тодорхойлох.• Атрибутуудын дефаулт утгуудыг олгох.

AttlistDecl ::=

’<!ATTLIST’ S Name AttDef* S? ’>’

Page 299: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-299

Атрибутын тодорхойлолт

Атрибутын тодорхойлолт нь дараах хэсгүүдээс бүрдэнэ:

• атрибутын нэр,• түүний төрөл • дефаулт мэдэгдэл.

Бүгд шаардлагатай.

AttDef ::= S Name S AttType S DefaultDecl

Page 300: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-300

Атрибутын төрлүүд

Атрибут нь 3 төрөлтэй:

• Стринг төрөл• tokenize төрөл (нүд хуурсан төрөл)• Тоочсон төрөл

AttType ::=

StringType |

TokenizedType |

EnumeratedType

Page 301: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-301

Шинж тэмдгийн хэлбэр

Гурван төрлийн шинж тэмдэгтэд:• холбоосон хэлбэр• Тэмдэгжсэн хэлбэр• Тоологдсон хэлбэрийн нэг

Page 302: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-302

Шинж тэмдгийн холбоосон хэлбэр

Холбоосоон хэлбэр нь ямар нэгэн хэмжээгээр таарах холбоосыг

Оруулж болох талтай.

Холбоосон хэлбэр ::= ’CDATA’

Page 303: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-303

Шинж тэмдгийн тэмдэгтийн хэлбэрүүд

Энд 7 төрлийн тэмдэгтийн хэлбэрүүд байна.

Тэмдэгжсэн хэлбэр ::=

’ID’ |

’IDREF’ | ’IDREFS’ |

’БОДИТ ЧАНАР’ | ’БОДИТ ЧАНАРУУД’ |

’NMТЭМДЭГТ’ | ’NMТЭМДЭГТҮҮД’

Ийм төрлийн хэлбэрүүд нь шинж чанарын хязгаарт хэмжээний

Хяналтыг олгодог.

Page 304: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-304

Шинж чанарын тэмдэгжсэн хэлбэрүүд

Сануулагч:

Name ::= (Letter | ’_’ | ’:’) (NameChar)*

1. ID:• Энэ шинж чанарын хэмжээ нэртэйгээ тохирч байх ёстой

Name• Бүх бичилтэнд хэмжээ арай өөрөөр байна. • Зөвхөн ийм шинж тэмдэг аль ч элементэнд оршино.

• IDREF – Энэ шинж тэмдгийн хэмжээ зарим ID шинж тэмдгийн хэмжээтэй тохирч байх ёстой. (in Name).

• ENTITY – Энэ шинж чанарын хэмжээ DTD дэх хэлзүйн задлалгүй бодит чанарт тодорхойлогдсон нэртэй байна (in Name).

Page 305: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-305

Tokenized Types of Attributes

Сануулагч:

Names ::= Name (S Name)*

4. IDREFS – Нэрэнд хэмжээ байх бөгөөд нэр бүхэн баримтан дахь зарим хэсгийн ID шинж тэмдгийн хэмжээтэй тохирч байх ёстой.

5. Бие даасан чанар-нэрэнд хэмжээ байх бөгөөд нэр бүхэн DTD дэх тогтоогдсон хэлзүйн задлалгүй нэр байна.

Page 306: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-306

Tokenized Types of Attributes

Сануулагч:

Nmtoken ::= (NameChar)+

Nmtokens ::= Nmtoken (S Nmtoken)*

6. NMTOKEN – хэмжээ заавал байх ёстой Nmtoken.

7. NMTOKENS – хэмжээ заавал байх ёстой Nmtokens.

Page 307: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-307

Enumeration Types of Attributes

Энд хоёр төрлийн тоологдсон хэлбэр байна:

EnumeratedType ::=

NotationType |

Enumeration

Page 308: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-308

Enumeration Type of Attributes

Тоологдох төрлийн шинж тэмдгийн хэмжээ нь nmtoken

тодорхойлолт дохь тэмдэгжилтийн нэгтэй таарч байна

Enumeration ::=

’(’ S? Nmtoken (S? ’|’ S? Nmtoken)* S? ’)’

Адил nmtoken нэг элементийн төрөл дэх тоологдох шинж тэмдгийн шинж чанарт нэгээс илүүтэй тохиолдоод байх хэрэггүй.

Page 309: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-309

Notation Type of Attributes

Тэмдэглэл хэлбэрийн шинж тэмдгийн хэмжээ нь DTD дэх тодорхойлогдсон тэмдэглэлийн нэр байна.

NotationType ::=

’NOTATION’ S

’(’ S? Name (S? ’|’ S? Name)* S? ’)’

Page 310: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-310

Тэмдэглэлүүд

Тэмдэглэлүүд нь шинж чанарт хавсрагдах элементийн тайлбарлагдах агуулагад ашиглагддаг. / ихэвчлэн XML-гүйгээр /

– Илэрхийлэгдэх хэсэг дэх тэмдэглэлийн нэрнүүд нь илэрхийлэгдэх

– Нэг тэмдэглэлтэй шинж чанартайгаар элемент байхгүй

Page 311: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-311

Илэрхийлэлт

Сануулагч:

AttDef ::= S Name S AttType S DefaultDecl

Илэрхийлэгчийг сануулах:

• Шинж чанарын оролцоо шаардлагатай үгүйгээр• Хэрэв үгүй бол, баримтанд илэрхийлэлтийн шинж чанар байхгүй

бол яаж XML просесорт нөлөөлөх вэ?

Page 312: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-312

Default Declarations

Өгүүлбэр зүй:

DefaultDecl ::=

’#REQUIRED’ | ’#IMPLIED’ |

((’#FIXED’ S)? AttValue)

Боломжууд:

1. #шаардлагатай – Шинж чанар үргэлж хангагдсан байх

2. #IMPLIED – Шинж чанар нь туслах чанарын, тогтмол байдал шаардлагагүй.

Page 313: Xml orchuulga bayarbat purevkhuu

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 олгогдсон байна.

Page 314: Xml orchuulga bayarbat purevkhuu

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 "">

Page 315: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-315

Demo: Attribute Declarations

> cd "demos/attribute declarations"

> ls

documents.xml

> java dom.Counter -v documents.xml

Page 316: Xml orchuulga bayarbat purevkhuu

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>

Page 317: Xml orchuulga bayarbat purevkhuu

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>

Page 318: Xml orchuulga bayarbat purevkhuu

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>

Page 319: Xml orchuulga bayarbat purevkhuu

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>

Page 320: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-320

Next Declaration Type

Сануулга:

markupdecl ::=

elementdecl |

AttlistDecl |

EntityDecl |

NotationDecl |

PI | Comment

Дараагийн бодит чанарын илэрхийлэл. . .

Page 321: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-321

Бодит чанар /ангид чанар /

Ангид чанар нь мэдээллийг төлөөлөхөд тохиромжтой арга юм.

• Хоёулаа давталттайгаар тохиолдоно• Солигдох

Мэдээлэл нь XML, DTDs –д оршин байж болдог.

Page 322: Xml orchuulga bayarbat purevkhuu

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.Гэх мэт.

Page 323: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-323

Урьдчилан тодорхойлсон ангид чанар

Бид 2 төрлийн ангид чанарыг үзсэн билээ:

• Урьдчилан тодорхойлсон ангид чанар: amp, apos, quot, gt, lt эдгээр тэмдэгтүүдийг төлөөлнө &, ’, ", > бас <.

• Тэмдэгтийн ангид чанар: #x0144 (hexadecimal) and #324 (аравтын бутархай ) юникодын тэмдэгжилт, энэ тохиолдолд

Хоёр төрлийн тусгай урьдчилан тодорхойлсон ангид чанар байна.

Page 324: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-324

Ангид чанарын илэрхийлэл

Бусад чанарууд DTD хэсэгт илэрхийлэгдэх ёстой.

Бүр идэвхижүүлэлтэд анхаарал хандуулахгүй ч гэсэн танд DTD хэрэглэгчийн тодорхойлсон ангид чанар хэрэгтэй.

Хэрэв нэгээс илүү адил ангид чанар байвал эхнийх нь бичигдэнэ. XML просесор асуудлыг анхааруулж эхэлэнэ.

Page 325: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-325

Бодит чанарын хэлбэр

Бодит чанарын 2 төрөл байна:

1. Ерөнхий чанар – DTD-т тодорхойлсон боловч XML-д ашиглагддаг.

2. Параметр чанар – тодорхойлсон ба DTD-д ашиглагдсан

EntityDecl ::= GEDecl | PEDecl

Параметр ангид чанар ба ерөнхий чанар нь адил нэртэй 2 өөр төрлийн чанар юм. Тэд өөр төрлийн нэрийн зай ашиглана.

Page 326: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-326

Ерөнхий ангид чанар

DTD-д илэрхийлэгдсэн дотоод гадаад нийлэмжүүд нь

GEDecl ::=

’<!ENTITY’ S Name S EntityDef S? ’>’

Ерөнхий ангид чанар нь гадаад дотоод гэж 2 хуваагдана.

EntityDef ::=

EntityValue | (ExternalID NDataDecl?)

Page 327: Xml orchuulga bayarbat purevkhuu

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.

Page 328: Xml orchuulga bayarbat purevkhuu

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&amp;Best">

<!ENTITY copyright "Copyright &#xA9; 2003">

Page 329: Xml orchuulga bayarbat purevkhuu

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.

&copyright

<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

Page 330: Xml orchuulga bayarbat purevkhuu

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;. &copyright;

</advert>

Page 331: Xml orchuulga bayarbat purevkhuu

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

Page 332: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-332

Сайн зохион байгуулсан дотоод бодит чанарууд

Хэрэв текстийн орлуулалт агуулагатай тохирч байвал дотоод ерөнхий хэл зүйн бодит чанар нь сайн зохион байгуулагдсан байна.

content ::= CharData?

( (element | Reference | CDSect | PI | Comment)

CharData?

)*

Орлуулалтын текст нь бодит чанарын агуулга бол шинж чанарын тодорхойлол болоод параметр бодит чанарын тодорхойлолт

Page 333: Xml orchuulga bayarbat purevkhuu

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 &amp; Associates" ><!ENTITY rights "All rights reserved" ><!ENTITY book

"Learning XML: Erik T. Ray,&#xA9; 1947%pub;.&rights;" >

Learning XML: Erik T.Ray, © 2001O’Reilly & Associates. &rights;

Page 334: Xml orchuulga bayarbat purevkhuu

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 "&#38;#60;">

<!ENTITY gt "&#62;">

<!ENTITY amp "&#38;#38;">

<!ENTITY apos "&#39;">

<!ENTITY quot "&#34;">

Давхар зайг ажиглаlt and amp:lt -> &#38;#60; -> &#60; -> <

Page 335: Xml orchuulga bayarbat purevkhuu

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>

Page 336: Xml orchuulga bayarbat purevkhuu

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>

Page 337: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-337

External Entities

Сануулагч:

EntityDef ::= EntityValue | (ExternalID NDataDecl?)

ExternalID ::=

’SYSTEM’ S SystemLiteral |

’PUBLIC’ S PubidLiteral S SystemLiteral

Гадаад ангид чанарын таарамж ExternalID NDataDecl?.

Page 338: Xml orchuulga bayarbat purevkhuu

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?

Page 339: Xml orchuulga bayarbat purevkhuu

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 баримтанд агуулгаа хуваадаг.

Page 340: Xml orchuulga bayarbat purevkhuu

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 илрэц нь хориотой байдаг.

Page 341: Xml orchuulga bayarbat purevkhuu

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>

Page 342: Xml orchuulga bayarbat purevkhuu

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&#x0144;sk, Poland</address><address where="Macao"> Flower Garden 12B, Taipa</address>

Page 343: Xml orchuulga bayarbat purevkhuu

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

Page 344: Xml orchuulga bayarbat purevkhuu

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>

Page 345: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-345

Next Declaration Type

хэлзүйн бус шинж чанарыг XML тэмдэглэлд хүргэх замаас өмнө бид танилцуулна.

Сануулга:

markupdecl ::=

elementdecl |

AttlistDecl |

EntityDecl |

NotationDecl |

PI | Comment

Page 346: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-346

Notations

Тэмдэглэл нэрээр тодорхойлно:

• Хэлзүйн бус шинж чанарын формат

• the format of elements which bear a notation attribute, or• Шинж чанарын тэмдэглэлтэй холбоотой элементийн форфмат

эсвэл• Зааврын дагуух программ харъяалагдсанаар

Page 347: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-347

Тэмдэглэлийн илэрхийлэл

Тэмдэглэл дараах байдлаар илэрхийлэгдэнэ:

NotationDecl ::=

’<!NOTATION’ S

Name S (ExternalID | PublicID) S? ’>’

Page 348: Xml orchuulga bayarbat purevkhuu

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

Өгөгдсөн нэрэнд зөвхөн нэг тэмдэглэл тодорхойлогдоно.

Page 349: Xml orchuulga bayarbat purevkhuu

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.

Page 350: Xml orchuulga bayarbat purevkhuu

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">

Page 351: Xml orchuulga bayarbat purevkhuu

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

Page 352: Xml orchuulga bayarbat purevkhuu

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">

Page 353: Xml orchuulga bayarbat purevkhuu

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 –р биш

Page 354: Xml orchuulga bayarbat purevkhuu

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>

Page 355: Xml orchuulga bayarbat purevkhuu

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

Page 356: Xml orchuulga bayarbat purevkhuu

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>

Page 357: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-357

Parameter Entities

Сануулагч:

EntityDecl ::= GEDecl | PEDecl

Параметр бодит шинж нь DTD-д зориулж дахин ашиглагдах механизм байна.

Page 358: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-358

Parameter Entities

Тэдгээр нь илэрхийлэгдсэн байх ба зөвхөн DTD –д ашиглагдана.

• Илэрхийлэл:

PEDecl ::= ’<!ENTITY’ S ’%’ S Name S PEDef S? ’>’

PEDef ::= EntityValue | ExternalID

• Заалт: %name;

Параметр бодит шинж /ангид шинж /-н өөрчлөлтийн текст нь илэрхийлэлтэд тодорхой байрших

Page 359: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-359

Parameter versus General Entities

Ерөнхий бодит чанартай харьцуул

• Бодит чанарын дараа параметр бодит чанарын илэрхийлэл хэрэглэгдэнэ.

1. Параметр бодит чанарын илэрхийлэл нь ndatadecl-гүй ба тэнд хэлзүйн бус гадаад параметр бодит шинжүүд байна.

2. Параметр бодит чанар нь нэртэй нэргүй гэсэн тодорхойлолттой байна.

3. Параметр бодит чанарын тодорхойлолт нь зөвхөн DTD –р танигдана.

Page 360: Xml orchuulga bayarbat purevkhuu

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? ’>’

Page 361: Xml orchuulga bayarbat purevkhuu

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">

Page 362: Xml orchuulga bayarbat purevkhuu

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;">

Page 363: Xml orchuulga bayarbat purevkhuu

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">

Page 364: Xml orchuulga bayarbat purevkhuu

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?)? ’>’

Page 365: Xml orchuulga bayarbat purevkhuu

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-г хоёуланг нь зөвшөөрнө.

Page 366: Xml orchuulga bayarbat purevkhuu

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>

Page 367: Xml orchuulga bayarbat purevkhuu

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">

Page 368: Xml orchuulga bayarbat purevkhuu

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

Page 369: Xml orchuulga bayarbat purevkhuu

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>

Ажиллахгүй гэж үү?

Page 370: Xml orchuulga bayarbat purevkhuu

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">

Page 371: Xml orchuulga bayarbat purevkhuu

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">

Page 372: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-372

Well-Formed Entities

• Дотоод ерөнхий бодит шинж-орлуулах текст / параметр жагсаалт болоод төрхийн тэлэлтийн дараах текст /агуулгатайгаа тохирох

content ::=

CharData?

(

( element |

Reference |

CDSect |

PI |

Comment)

CharData?

)*

Page 373: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-373

More Well-Formed Entities

• Гадаад ерөнхий бодит шинж нь extParsedEnt-тай таарах

extParsedEnt ::= TextDecl? Content

• Параметр бодит шинжүүд нь тодорхойлолтоор сайн хэлбэржсэн байх.

Page 374: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-374

Nesting of Logical and Physical Structures

Сайн хэлбэржсний улмаас логикийн болоод физикийн бүтэц нь XML баримтанд тодорхой байршина.

None of:

Нэг бодит шинжээр эхэлж нөгөөгөөр дуусгах

Эхлэл - хаяг Тайлбар

Төгсгөл-хаяг Процессын заавар

Хоосон элементийн хаяг

Шинжийн тодорхойлолт

Элемент Бодит шинжийн жагсаалт

Page 375: Xml orchuulga bayarbat purevkhuu

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.

Page 376: Xml orchuulga bayarbat purevkhuu

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.

Page 377: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-377

Conditional Sections

DTD, агуулагдаагүй хэсгээс болоод агуулагдсан хэсэг дэхь илэрхийллийн гадаад хэсгийн хувь

conditionalSect ::=

’<![’ S? conditionTest S? ’[’ extSubsetDecl ’]]>’

Page 378: Xml orchuulga bayarbat purevkhuu

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

Page 379: Xml orchuulga bayarbat purevkhuu

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>

]]>

Page 380: Xml orchuulga bayarbat purevkhuu

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">

]]>

Page 381: Xml orchuulga bayarbat purevkhuu

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 хэсэг, гол баримтанд хүчинтэй процессоор шалгахгүй байх.

Page 382: Xml orchuulga bayarbat purevkhuu

Namespaces

Page 383: Xml orchuulga bayarbat purevkhuu

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)

Page 384: Xml orchuulga bayarbat purevkhuu

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 д холих вэ?

Page 385: Xml orchuulga bayarbat purevkhuu

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.

Page 386: Xml orchuulga bayarbat purevkhuu

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 нэрэнд зөвшөөрөгдөөгүй хэлбэрийг агуулсан байна

Page 387: Xml orchuulga bayarbat purevkhuu

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>

Page 388: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-388

Namespace Declaration

•Нэрний зай нь нөөц шинж тэмдгийн бүлгэмд илэрхийлэгдэнэ. Ийм төрлийн шинж тэмдэг нь xmlns or xmlns: префекстэй байна.

NSAttName ::= PrefixedAttName | DefaultAttName

2 төрлийн нэрнийзайн илэрхийлэл байна:

– энгийн – префикс агуулах

PrefixedAttName ::= ’xmlns:’ NCName

– үндсэн – префиксгүйгээр

DefaultAttName ::= ’xmlns’

Page 389: Xml orchuulga bayarbat purevkhuu

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.

Page 390: Xml orchuulga bayarbat purevkhuu

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=""

Page 391: Xml orchuulga bayarbat purevkhuu

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=""

Page 392: Xml orchuulga bayarbat purevkhuu

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.

Префикс нь нэрнийзайн илэрхийлэлд дурдагдсан байна.

Page 393: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-393

Example: Qualified Names

<book xmlns:docbook="http://www.oasis-open.org/docbook"> <docbook:title>

…</docbook:title>…

</book>

Page 394: Xml orchuulga bayarbat purevkhuu

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

Page 395: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-395

Нэрнийзайн шаардлага

Нэрний зай префикс элементэнд ашиглагдаж мөн шинж тэмдгийн нэрс байна.

• xmlns нэрний зайн хэсэгт зөвхөн хэрэглэгд эсвэл өөр төрлийн нэрийн зайтай хязгаарлахгүй.

• xml хязгаарын тэмдэглэлhttp://www.w3.org/XML/1998/namespace

• Өөр префиксүүд илэрхийлэгдсэн байх. – Префекс хэрэглэгдсэн үед элементийн эхлэлийн хаяг байна– Мэдрэгч элемент

Page 396: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-396

DTDs Revisited 1

Чанаржсан нэрсийн харагдац

1) Баримтын хэлбэрийн илэрхийлэл, үндсэн элемент рүү:

doctypedecl ::= ’<!DOCTYPE’ S

QName (S ExternalID)? S?

(’[’ (markupdecl | PEReference | S)* ’]’ S?)? ’>’

Page 397: Xml orchuulga bayarbat purevkhuu

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? ’)*’

Page 398: Xml orchuulga bayarbat purevkhuu

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

Page 399: Xml orchuulga bayarbat purevkhuu

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 дахь үндсэн шинж тэмдгээр илэрхийлэгдэх

Page 400: Xml orchuulga bayarbat purevkhuu

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.

Олон төрлийн нэрнийзай нэг элементийн дотор илэрхийлэгдэнэ.

Page 401: Xml orchuulga bayarbat purevkhuu

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>

Page 402: Xml orchuulga bayarbat purevkhuu

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>

Page 403: Xml orchuulga bayarbat purevkhuu

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 тодорхойлолт хоосон байвал, прифексгүй элементүүдийн хэмжээ нэрнийзайгүйгээр төлөвлөгдөх

Үндсэн нэрнийзайг шинж тэмдгээр тодорхойлохгүй байх

Page 404: Xml orchuulga bayarbat purevkhuu

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>

Page 405: Xml orchuulga bayarbat purevkhuu

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. Нэрээ ямар нэгэн нэрний зайнаас хамааралгүйгээр хийх

Page 406: Xml orchuulga bayarbat purevkhuu

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.

Page 407: Xml orchuulga bayarbat purevkhuu

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 хэлбэрийн шинж тэмдгийн хэмжээ нь ба тэмдэглэл тодорхойлолтын цэгийг агуулахгүй.

Page 408: Xml orchuulga bayarbat purevkhuu

XML төлөвлөгөө

Page 409: Xml orchuulga bayarbat purevkhuu

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)

Page 410: Xml orchuulga bayarbat purevkhuu

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.

Page 411: Xml orchuulga bayarbat purevkhuu

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 маш хязгаарлагдмал өгөгдлийн хэлбэр олгогдох

Page 412: Xml orchuulga bayarbat purevkhuu

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 нь ерөнхий өгөгдлийн бүтцийг тодорхойлохыг зөвшөөрөхгүй ба бүх дэд ангилалын хэлбэрийг хадгална.

Page 413: Xml orchuulga bayarbat purevkhuu

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.

Page 414: Xml orchuulga bayarbat purevkhuu

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 түүлүүд ашиглагдахгүй юм.

Page 415: Xml orchuulga bayarbat purevkhuu

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.

Page 416: Xml orchuulga bayarbat purevkhuu

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.

Page 417: Xml orchuulga bayarbat purevkhuu

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)>

Page 418: Xml orchuulga bayarbat purevkhuu

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>

Page 419: Xml orchuulga bayarbat purevkhuu

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>

Page 420: Xml orchuulga bayarbat purevkhuu

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>

Page 421: Xml orchuulga bayarbat purevkhuu

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

Page 422: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-422

What Have Been Gained?

5 шугамын DTD-г 14 шугамын XML хэлбэрээр солих

Юу олж авсан бэ?

Сайн суурь босгохын тулд сайн бүдүүвчэй байх.

• илүү нарийн өгөгдлийнхэлбэр• мэдээллийн баазын бүтцийн дахин ашиглалт • илүү утга агуулгатай хэлбэр• XML syntax reused XML өгүүлбэрзүйн дахин ашиглал• XML хэрэглүүрийн хүсэлт• хувийн тодорхойлолт болоод хүчин төгөлдөр болох г.м• etc.

Page 423: Xml orchuulga bayarbat purevkhuu

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 ->

Page 424: Xml orchuulga bayarbat purevkhuu

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>

Page 425: Xml orchuulga bayarbat purevkhuu

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.

Page 426: Xml orchuulga bayarbat purevkhuu

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>

Page 427: Xml orchuulga bayarbat purevkhuu

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

Page 428: Xml orchuulga bayarbat purevkhuu

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-г агуулна.

Page 429: Xml orchuulga bayarbat purevkhuu

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>

Page 430: Xml orchuulga bayarbat purevkhuu

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>

Page 431: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-431

Нэршсэн хэлбэрийн дахин ашиглалт

Нэршсэн хэлбэр нь зарим элементийн илэрхийлэлтэд дахин ашиглагддаг. <xsd:element name="date" type="Date"/>

<xsd:element name="mydate" type="Date"/>

<xsd:complexType name="Data">

...

</xsd:complexType>

Нэр нь үл мэдэгдэх хэлбэрүүд нь нэг элементийн илэрхийлэлтэнд ашиглагддаг.

Page 432: Xml orchuulga bayarbat purevkhuu

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"/>

Зарим дээд түвшиний элементийн илэрхийлэмж өгөгдсөн тохиолдолд баримтанд элементийн нэг хэсэг байрших ёстой.

Page 433: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-433

Local-Level Elements

• Дотоод түвшин – хэв шинжийн тодорхойлолтын хэсэг

<xsd:complexType name="Data">

...

<xsd:element name="day" type="xsd:string">

...

</xsd:complexType>

Page 434: Xml orchuulga bayarbat purevkhuu

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.

Скиз – баримтыг хүчин төгөлдөр болгох

Page 435: Xml orchuulga bayarbat purevkhuu

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"/>

Page 436: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-436

Task: Repeated Names

In the schema allow the visitor to have from one to three names.

Скизэнд зочинд нэгээс гурван нэрэнд зөвшөөрөл өгдөг.

XML баримтыг өөрчлөх

Хүчин төгөлдөр болгох

Page 437: Xml orchuulga bayarbat purevkhuu

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>

Page 438: Xml orchuulga bayarbat purevkhuu

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.

Картны төрөлөөс зочинд хамаарагдах

Хүчин төгөлдөр болгох

Page 439: Xml orchuulga bayarbat purevkhuu

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>

Page 440: Xml orchuulga bayarbat purevkhuu

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>

Page 441: Xml orchuulga bayarbat purevkhuu

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

Page 442: Xml orchuulga bayarbat purevkhuu

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

Page 443: Xml orchuulga bayarbat purevkhuu

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

Page 444: Xml orchuulga bayarbat purevkhuu

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) Жил

Page 445: Xml orchuulga bayarbat purevkhuu

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>

Page 446: Xml orchuulga bayarbat purevkhuu

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>

Page 447: Xml orchuulga bayarbat purevkhuu

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

Page 448: Xml orchuulga bayarbat purevkhuu

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>

Page 449: Xml orchuulga bayarbat purevkhuu

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.

Page 450: Xml orchuulga bayarbat purevkhuu

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>

Page 451: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-451

Task: Restricted Numerical Types

In the schema for the arrival card, define

Ирэлтийн карт, тодорхойлох

a) Өдөр

b) Сар

c) Жил

Хязгаарлалтын тоон хэлбэрүүд.

Page 452: Xml orchuulga bayarbat purevkhuu

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.

Page 453: Xml orchuulga bayarbat purevkhuu

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.

Page 454: Xml orchuulga bayarbat purevkhuu

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>

Page 455: Xml orchuulga bayarbat purevkhuu

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.

Хэв загварын хэмжээ нь энгийн тайлбартай.

Page 456: Xml orchuulga bayarbat purevkhuu

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

Page 457: Xml orchuulga bayarbat purevkhuu

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.Сүүлийн найман шинж нь тоонууд

Page 458: Xml orchuulga bayarbat purevkhuu

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>

Page 459: Xml orchuulga bayarbat purevkhuu

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!

Зөвхөн комплекс төрөлтэй элемент нь шинж тэмдгийг агуулж болох юм.

Page 460: Xml orchuulga bayarbat purevkhuu

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>

Page 461: Xml orchuulga bayarbat purevkhuu

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"/>

Page 462: Xml orchuulga bayarbat purevkhuu

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" .../>

Page 463: Xml orchuulga bayarbat purevkhuu

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" .../>

Хэрэв элемент дутвал шинж тэмдэгт байх тогтмол хэрэгжихгүй

Page 464: Xml orchuulga bayarbat purevkhuu

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>

Page 465: Xml orchuulga bayarbat purevkhuu

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 -тай.

Page 466: Xml orchuulga bayarbat purevkhuu

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>

Page 467: Xml orchuulga bayarbat purevkhuu

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>

Page 468: Xml orchuulga bayarbat purevkhuu

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• Агуулга хэлбэрийн эхлэлд зөвхөн хүүхэд байх ба нэгээс илүүгүй

байна.

Page 469: Xml orchuulga bayarbat purevkhuu

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>

Page 470: Xml orchuulga bayarbat purevkhuu

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>

Page 471: Xml orchuulga bayarbat purevkhuu

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. Ямар нэгэн хэлбэрийн ерөнхий хязгаарлал

Page 472: Xml orchuulga bayarbat purevkhuu

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>

Page 473: Xml orchuulga bayarbat purevkhuu

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>

Page 474: Xml orchuulga bayarbat purevkhuu

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>

Page 475: Xml orchuulga bayarbat purevkhuu

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>

Page 476: Xml orchuulga bayarbat purevkhuu

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>

Page 477: Xml orchuulga bayarbat purevkhuu

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.

Page 478: Xml orchuulga bayarbat purevkhuu

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>

Page 479: Xml orchuulga bayarbat purevkhuu

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.

Page 480: Xml orchuulga bayarbat purevkhuu

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-д параметрийн бодит шинжээр тэгш оролцох

Page 481: Xml orchuulga bayarbat purevkhuu

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.

Page 482: Xml orchuulga bayarbat purevkhuu

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-н параметрийн бодит шинжид адил оролцоог үзүүлэх

Page 483: Xml orchuulga bayarbat purevkhuu

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”

Page 484: Xml orchuulga bayarbat purevkhuu

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!

Page 485: Xml orchuulga bayarbat purevkhuu

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

Page 486: Xml orchuulga bayarbat purevkhuu

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>

Page 487: Xml orchuulga bayarbat purevkhuu

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…”

Page 488: Xml orchuulga bayarbat purevkhuu

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>

Page 489: Xml orchuulga bayarbat purevkhuu

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>

Page 490: Xml orchuulga bayarbat purevkhuu

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

Page 491: Xml orchuulga bayarbat purevkhuu

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 – Тэд ямар нэгэн нэрний зайнд байх хэрэггүй,

үндсэн

Page 492: Xml orchuulga bayarbat purevkhuu

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

• Хамааралтай бүдүүвчийн зорилтот нэрний зай нь хамаарагдах бүдүүвчийн зорилтот нэрний зайтай адил байна.

Тэд бүдүүвч дэх ямар нэгэн бусад тодорхойлолтод урьдчилан тохиолдоно.

Page 493: Xml orchuulga bayarbat purevkhuu

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 хэсэгчлэл

Page 494: Xml orchuulga bayarbat purevkhuu

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.

Page 495: Xml orchuulga bayarbat purevkhuu

XPath

Page 496: Xml orchuulga bayarbat purevkhuu

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)

Page 497: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-497

XPath

XML баримтын хаягжилтын хэсэгт хүрэх хэл

Apart from this main goal, Энэ гол хэсгээс гадна, нэмэлт боломжуудаар хангагдана.

1. Текстийн нарийвчлал, тоо, логиг дэс дараа

2. Баримтын тэмдэглэлд хэвжилт хийгдэх

3. Хэвжилт хангалттай үед шалгах

XSLT-н хэрэглээнд XЗаагч.

W3C Recommendation November 1999.

Page 498: Xml orchuulga bayarbat purevkhuu

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.

Page 499: Xml orchuulga bayarbat purevkhuu

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 шинжийн жагсаалт /

Page 500: Xml orchuulga bayarbat purevkhuu

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– Тогтмол биш, үйл хөдлөл, нэрнийзайн байдал үл өөрчлөгдөх – Байрлал хэмжээ өөрчлөгдөх

Page 501: Xml orchuulga bayarbat purevkhuu

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>

Page 502: Xml orchuulga bayarbat purevkhuu

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>

Page 503: Xml orchuulga bayarbat purevkhuu

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

Page 504: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-504

Relative Paths

The simplest path is the reference to an element name.

Хамгийн энгийн зам нь элементийн нэрэнд хүрэх тодорхойлолт юм.

Let:

CONTEXT = collection

XPATH = .

Page 505: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-505

Multiple Steps

Зам нь хоёр алхамтай:

collection/article

Let:

CONTEXT = collection/article

XPATH = .

Page 506: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-506

Wildcard Steps

Any element may occur between collection and title:

Ямар нэгэн элемент цуглуулга болоод гарчигийн хооронд тохиолдолж болно.

collection/*/title

Let:

CONTEXT = collection/*/title

XPATH = .

Page 507: Xml orchuulga bayarbat purevkhuu

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 = .

Page 508: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-508

Self, Parents and Grandparents

Өөрөө: .

Эцэг эх: ..

Өвөг эцэг: ../..

Let:

CONTEXT = collection/article

XPATH = .

XPATH = ../book

XPATH = ../..

Page 509: Xml orchuulga bayarbat purevkhuu

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 = .

Page 510: Xml orchuulga bayarbat purevkhuu

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.

Зам дахь ямар нэгэн алхам чанарт хэрэглэгдэнэ.

Page 511: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-511

Position Tests

2-р номыг сонгох:

para[position()=2]

Let:

CONTEXT = collection/book[position()=2]

XPATH = .

Page 512: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-512

Presence Tests

Selects a books with a review element:

Элементийн давтлагад сонгох ном.

collection/book[review]

Let:

CONTEXT = collection/book[review]

XPATH = .

Page 513: Xml orchuulga bayarbat purevkhuu

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 = .

Page 514: Xml orchuulga bayarbat purevkhuu

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 = .

Page 515: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-515

Attribute Value Test

Abc гэсэн үнэлэмжтэй шинж тэмдгийн id багтаасан бол сонгох

book[@id=“abc”]

Let:

CONTEXT = //book[@id=“abc”]

XPATH = .

Page 516: Xml orchuulga bayarbat purevkhuu

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 = .

Page 517: Xml orchuulga bayarbat purevkhuu

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 = .

Page 518: Xml orchuulga bayarbat purevkhuu

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 = .

Page 519: Xml orchuulga bayarbat purevkhuu

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)

Page 520: Xml orchuulga bayarbat purevkhuu

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 = .

Page 521: Xml orchuulga bayarbat purevkhuu

XSLT

Page 522: Xml orchuulga bayarbat purevkhuu

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)

Page 523: Xml orchuulga bayarbat purevkhuu

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асуулт

Page 524: Xml orchuulga bayarbat purevkhuu

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 –д бичигдэнэ.

Page 525: Xml orchuulga bayarbat purevkhuu

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 дээр бичигдсэн

Page 526: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-526

Example: XML Input

<?xml version=“1.0”?>

<greeting>

Hello World!

</greeting>

Page 527: Xml orchuulga bayarbat purevkhuu

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>

Page 528: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-528

Example: Invocation

java org.apache.xalan.xslt.Process

-in greeting.xml

-xsl greeting.xsl

-out greeting.html

Page 529: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-529

Example: HTML Output

<html>

<body>

<h1>

Hello World!

</h1>

</body>

</html>

Page 530: Xml orchuulga bayarbat purevkhuu

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>

Page 531: Xml orchuulga bayarbat purevkhuu

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.

Page 532: Xml orchuulga bayarbat purevkhuu

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>

Page 533: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-533

XSLT Processing

XSLT программ нь оролтын баримтаас гаралтын баримт руу хувиргалт хийх юм.

Хувиргалт нь доорх байдлаар

1.Оролтын элементийн эсрэг тохирсон загварууд

2.Гаралтын баримтын хэсгийг тодорхойлох

Page 534: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-534

XSLT загварууд

Загварын гол формат:

<xsl:template match=“xpath-expr”>

</xsl:template>

Тохирох шинж тэмдгийн нөлөөлөл нь Xзамын илэрхийлэл

Загвар зөвхөн суурь элементийг тохируулна:

<xsl:template match=“/”>

</xsl:template>

Page 535: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-535

Applying XSLT Templates

Тухайн элементийн өгөгдсөн мэндчилгээгээр бусад загварыг идэвхижүүлэх

<xsl:template match=“/”>

<xsl:apply-templates select=“greeting”/>

</xsl:template>

Page 536: Xml orchuulga bayarbat purevkhuu

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).

Page 537: Xml orchuulga bayarbat purevkhuu

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>

Page 538: Xml orchuulga bayarbat purevkhuu

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

Page 539: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-539

Default Templates 1

Тодорхой загвар дутсанд идэвхижүүлэх

1. Хэрэв өгөгдсөн элементэнд загваргүй бол үргэлжилсэн процес батлагдах

<xsl:template match=“*|/”>

<xsl:apply-templates/>

</xsl:template>

Page 540: Xml orchuulga bayarbat purevkhuu

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>

Page 541: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-541

Default Templates 3

4. Тайлбар, процессн заавар хэрэгжихгүй.

<xsl:template

match="comment() |

processing-instruction()"/>

5. Нэрний зайн цөм хэрэгжихгүй. /үйлдэгдэхгүй/

<xsl:template match="namespace()"/>

Page 542: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-542

Template Attributes

Загвар нь доорх шинж тэмдгүүний нэгийг агуулсан байх ёстой.

1. match – Тохирох элемент байгаа тохиолдолд загварыг идэвхижүүлнэ.

<xsl:template match="...">...</xsl:template>

2. name – Нэрээр дуудагдсан загвар:

<xsl:template name="...">...</xsl:template>

Page 543: Xml orchuulga bayarbat purevkhuu

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>

Page 544: Xml orchuulga bayarbat purevkhuu

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>

Page 545: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-545

Matched Template

Тохирсон загварын тодорхойлолт:

<xsl:template match="elem">...</xsl:template>

Загвар идэвхижүүлэх:

1. Тухайн нөхцлийн бүх хүүхдийг идэвхижүүлэх

<xsl:apply-templates/>

2. Гол хэсгийг сонгох загварын идэвхижилт

<xsl:apply-templates select="..."/>

Page 546: Xml orchuulga bayarbat purevkhuu

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>

Page 547: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-547

Templates with Mode

Загвар хэлбэрийн шинж тэмдгийг агуулах зарим хэсгийн төвд ижил олгогдсон байна.

Хэлбэрийн загварын тодорхойлолт

<xsl:template match="..." mode="...">

...

</xsl:template>

Загварчлалыг хэрэгжүүлэх

<xsl:apply-templates select="..." mode="...">

Page 548: Xml orchuulga bayarbat purevkhuu

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>

Page 549: Xml orchuulga bayarbat purevkhuu

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>

Page 550: Xml orchuulga bayarbat purevkhuu

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>

Page 551: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-551

Task: Run the Transformation

Гүйцэтгэ xalan:

> xalan letter.xml letter.xsl output

Үр дүн нь юу вэ?

Page 552: Xml orchuulga bayarbat purevkhuu

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. Өөрчлөлтийг анхаарах.

Page 553: Xml orchuulga bayarbat purevkhuu

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>

Page 554: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-554

Task: Run the Transformation

Гүйцэтгэх xalan:

> xalan letter.xml letter.xsl output

Өөр өөрчлөлт?

Page 555: Xml orchuulga bayarbat purevkhuu

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.

Page 556: Xml orchuulga bayarbat purevkhuu

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>

Үндсэн загварыг ашигла.

Page 557: Xml orchuulga bayarbat purevkhuu

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>

Энэ загварыг идэвхижүүл

Page 558: Xml orchuulga bayarbat purevkhuu

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>

Тодорхой илүү загваруудыг идэвхижүүлэх

Page 559: Xml orchuulga bayarbat purevkhuu

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>

Загварыг өндөр зэргээр идэвхижүүлнэ.

Page 560: Xml orchuulga bayarbat purevkhuu

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>

Загварын хуудсанд сүүлд тохиолдох загварыг идэвхижүүлэх

Page 561: Xml orchuulga bayarbat purevkhuu

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>

Page 562: Xml orchuulga bayarbat purevkhuu

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>

Page 563: Xml orchuulga bayarbat purevkhuu

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"/>

Page 564: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-564

Global Parameters

Параметрын бүхэл загвархуудасны цар хүрээний өргөжилт

Загвар хуудасны элементийн хүүхдүүдээр тохиолдох

<xsl:stylesheet ...>

<xsl:param name=“depth">30</xsl:param>

...

</xsl:stylesheet>

Дотоод параметрт үндсэн хэмжигдэхүүн

Page 565: Xml orchuulga bayarbat purevkhuu

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>

Page 566: Xml orchuulga bayarbat purevkhuu

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"/>

Page 567: Xml orchuulga bayarbat purevkhuu

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"/>

Page 568: Xml orchuulga bayarbat purevkhuu

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>

Page 569: Xml orchuulga bayarbat purevkhuu

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>

Page 570: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-570

Variable or Constant?

Тогтмол.

Хувьсагчийн хэмжээ өөрчлөгдөхгүй.

Page 571: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-571

Conditional Execution

Элемент if:

<xsl:if test="...">

...

</xsl:if>

Тест шинж тэмдгийн хэмжээ тооцоологдсон бол:

1. true –Элементийн агуулга үйлдэгдэнэ.

2. false –Элементийн агуулга хэрэгсэхгүй

Page 572: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-572

Value of the test Attribute

Хэмжээ boolean:-руу хөрвөгдөнө.

1. Тоо – хэрэв тэг эсвэл NaN (тоогүй) тэгдээд худал, бусад нь үнэн

2. Цөм -байх – хэрэв хоосон тэгээд худал бол, бусад нь үнэн

3. Холбоос – хэрэв хоосон тэгээд худал бол, бусад нь үнэн

Page 573: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-573

Example: test Attributes

<xsl:if test="count(elem) &gt;=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">

Page 574: Xml orchuulga bayarbat purevkhuu

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>

Page 575: Xml orchuulga bayarbat purevkhuu

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. Тестэн дэх эхний элемент шинж тэмдгийн үнэнд буцаагдах процесс

Хэрэв нэг нь байхгүй бол нөгөө агуулга үйлдэгдэнэ.

Page 576: Xml orchuulga bayarbat purevkhuu

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>

Page 577: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-577

Task: Make Decision Explicit

Өөрчлөх XML:

<?xml version="1.0"?>

<letter decision="accepted">...</letter>

Page 578: Xml orchuulga bayarbat purevkhuu

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>

Page 579: Xml orchuulga bayarbat purevkhuu

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>

Page 580: Xml orchuulga bayarbat purevkhuu

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>

Page 581: Xml orchuulga bayarbat purevkhuu

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>

Page 582: Xml orchuulga bayarbat purevkhuu

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>

Page 583: Xml orchuulga bayarbat purevkhuu

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 хоёр тохиолдолд.

Page 584: Xml orchuulga bayarbat purevkhuu

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 хоёуланд нь .

Page 585: Xml orchuulga bayarbat purevkhuu

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>

Процессын өмнө дараалагдахаар анхлан зарим элемент агуулагдах

Page 586: Xml orchuulga bayarbat purevkhuu

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>

Page 587: Xml orchuulga bayarbat purevkhuu

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.

Page 588: Xml orchuulga bayarbat purevkhuu

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>

Page 589: Xml orchuulga bayarbat purevkhuu

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.

Page 590: Xml orchuulga bayarbat purevkhuu

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.

Page 591: Xml orchuulga bayarbat purevkhuu

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.

Page 592: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-592

Creating New Nodes

1. Элементүүд

2. Шинж тэмдгүүд

3. Текст

4. Процессын заавар

Page 593: Xml orchuulga bayarbat purevkhuu

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>

Page 594: Xml orchuulga bayarbat purevkhuu

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>

Page 595: Xml orchuulga bayarbat purevkhuu

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>

Page 596: Xml orchuulga bayarbat purevkhuu

SAX

Page 597: Xml orchuulga bayarbat purevkhuu

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)

Page 598: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-598

XML Programming Models

Гурван програмын хэсэг:

• Үйлдэл дээр үндэслэгдсэн – SAX• Модон дээр үндэслэгдсэн – DOM• Загварт үндэслэгдсэн – XSLT

XML өгүүлбэрзүйг ашиглан хэрэхн программ бичих вэ?

Page 599: Xml orchuulga bayarbat purevkhuu

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.

Page 600: Xml orchuulga bayarbat purevkhuu

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.

Page 601: Xml orchuulga bayarbat purevkhuu

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.

Page 602: Xml orchuulga bayarbat purevkhuu

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 нээх ба тохируулах

Page 603: Xml orchuulga bayarbat purevkhuu

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

Page 604: Xml orchuulga bayarbat purevkhuu

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.

Серверийн програм нь ихэнхдээ өндөр хүчин чадал шаарддаг

Page 605: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-605

SAX API Architecture

Page 606: Xml orchuulga bayarbat purevkhuu

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.

Page 607: Xml orchuulga bayarbat purevkhuu

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

Үр дүн байхгүй бол алдааг харуулдаг

Page 608: Xml orchuulga bayarbat purevkhuu

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

Нэгтгэлийг дэмжихгүй

Page 609: Xml orchuulga bayarbat purevkhuu

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()

Page 610: Xml orchuulga bayarbat purevkhuu

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.

Page 611: Xml orchuulga bayarbat purevkhuu

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

Page 612: Xml orchuulga bayarbat purevkhuu

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

Page 613: Xml orchuulga bayarbat purevkhuu

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.

Page 614: Xml orchuulga bayarbat purevkhuu

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)

Page 615: Xml orchuulga bayarbat purevkhuu

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

Page 616: Xml orchuulga bayarbat purevkhuu

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• Явцын зааврыг мэдэгдэх• Тооцогдоогүй зүйлийг мэдэгдэх

Page 617: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-617

Content-Handling: Document Start/End

Уншиж эхлэхийг мэдэгдэх:

void startDocument()

Уншиж дууссаныг мэдэгдэх:

void endDocument()

Page 618: Xml orchuulga bayarbat purevkhuu

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

Page 619: Xml orchuulga bayarbat purevkhuu

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

Page 620: Xml orchuulga bayarbat purevkhuu

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.

Page 621: Xml orchuulga bayarbat purevkhuu

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.

Page 622: Xml orchuulga bayarbat purevkhuu

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.

Page 623: Xml orchuulga bayarbat purevkhuu

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)

Page 624: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-624

Content-Handling: Processing Instruction

Явцын зааврыг мэдэгдэх:

public void processingInstruction(

String target, String data)

Page 625: Xml orchuulga bayarbat purevkhuu

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

Page 626: Xml orchuulga bayarbat purevkhuu

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)

Page 627: Xml orchuulga bayarbat purevkhuu

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.

Page 628: Xml orchuulga bayarbat purevkhuu

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;

Page 629: Xml orchuulga bayarbat purevkhuu

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

Page 630: Xml orchuulga bayarbat purevkhuu

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[]) {

}

}

Page 631: Xml orchuulga bayarbat purevkhuu

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[]) {

}

}

Page 632: Xml orchuulga bayarbat purevkhuu

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(…){…}

}

}

Page 633: Xml orchuulga bayarbat purevkhuu

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);

}

Page 634: Xml orchuulga bayarbat purevkhuu

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();

Page 635: Xml orchuulga bayarbat purevkhuu

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);

}

Page 636: Xml orchuulga bayarbat purevkhuu

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

Page 637: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-637

Example: Element Counter 1

public class App extends DefaultHandler {

Тоологч хувьсагч зарлах:

int counter;

public static void main(String argv[]) {

}

Page 638: Xml orchuulga bayarbat purevkhuu

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);

}

}

Page 639: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-639

Demo: Element Counter

> cd “sax counter”

> dir

date.xml App.java

> javac App.java

> java App date.xml

Page 640: Xml orchuulga bayarbat purevkhuu

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.

Page 641: Xml orchuulga bayarbat purevkhuu

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.

Page 642: Xml orchuulga bayarbat purevkhuu

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.

Page 643: Xml orchuulga bayarbat purevkhuu

DOM

Page 644: Xml orchuulga bayarbat purevkhuu

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)

Page 645: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-645

DOM

Баримтийн обьект загвар:

• Document – written with HTML, XML and others• Object – баримтийн хэсгийг дахин үзүүлэх• Model – document modeled as a tree

Page 646: Xml orchuulga bayarbat purevkhuu

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

Page 647: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-647

DOM Components

DOM гэж юу вэ:

1) API

2) W3C Recommendation

3) document represented as a tree

Page 648: Xml orchuulga bayarbat purevkhuu

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

Page 649: Xml orchuulga bayarbat purevkhuu

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

Page 650: Xml orchuulga bayarbat purevkhuu

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

Page 651: Xml orchuulga bayarbat purevkhuu

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.

Page 652: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-652

DOM Components: Document Tree 2

Page 653: Xml orchuulga bayarbat purevkhuu

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

Page 654: Xml orchuulga bayarbat purevkhuu

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

Page 655: Xml orchuulga bayarbat purevkhuu

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

Page 656: Xml orchuulga bayarbat purevkhuu

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

Page 657: Xml orchuulga bayarbat purevkhuu

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

Page 658: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-658

DOM Implementations

W3C төрлийг тодорхойлох.

Олон хэлийг дэмждэг: Java, JavaScript, C++, Perl, C#, etc.

Өргөн байдлаар хэрэгждэг:

1. open-source and commercial

2. Олон ондоо хэлнүүдтэй

3. Гүйцэт ба гүйцэт биш

Page 659: Xml orchuulga bayarbat purevkhuu

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

Page 660: Xml orchuulga bayarbat purevkhuu

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;

Page 661: Xml orchuulga bayarbat purevkhuu

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;

Page 662: Xml orchuulga bayarbat purevkhuu

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) {…

}

}

Page 663: Xml orchuulga bayarbat purevkhuu

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();

Page 664: Xml orchuulga bayarbat purevkhuu

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]));

Page 665: Xml orchuulga bayarbat purevkhuu

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());

} }}

Page 666: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-666

Task: DOM Read Application

Type the DOM read application skeleton.

Compile.

Run.

Page 667: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-667

Demo: DOM Read Application

> cd “dom read”> dirApp.java credit.xml> javac App.java> java App credit.xml

Page 668: Xml orchuulga bayarbat purevkhuu

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;

Page 669: Xml orchuulga bayarbat purevkhuu

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;

Page 670: Xml orchuulga bayarbat purevkhuu

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]));

Page 671: Xml orchuulga bayarbat purevkhuu

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());

}

Page 672: Xml orchuulga bayarbat purevkhuu

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());

} }}

Page 673: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-673

Task: DOM Read-Write Application

Type the DOM read-write application by extending the read application.Унших программын өргөжилтөөр DOM программын төрөл бичих

Эмхлэн зохион байгуулах.

Хэрэгжүүлэх.

Page 674: Xml orchuulga bayarbat purevkhuu

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

Page 675: Xml orchuulga bayarbat purevkhuu

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 – хугацаа

Page 676: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-676

DOM программын харагдац

NodeListNamedNodeMapNode

DOMStringDOMTimeStampDOMImplementationDOMException

NodeDocumentDocumentFragmentElementAttrCharacterData

EntityEntityReferenceProcessingInstruction

Text CDATASectionComment

Page 677: Xml orchuulga bayarbat purevkhuu

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.

Page 678: Xml orchuulga bayarbat purevkhuu

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

Page 679: Xml orchuulga bayarbat purevkhuu

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

Page 680: Xml orchuulga bayarbat purevkhuu

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

Page 681: Xml orchuulga bayarbat purevkhuu

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()

Page 682: Xml orchuulga bayarbat purevkhuu

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.

Page 683: Xml orchuulga bayarbat purevkhuu

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)

Page 684: Xml orchuulga bayarbat purevkhuu

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”.

Page 685: Xml orchuulga bayarbat purevkhuu

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");

Page 686: Xml orchuulga bayarbat purevkhuu

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);

Page 687: Xml orchuulga bayarbat purevkhuu

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

Page 688: Xml orchuulga bayarbat purevkhuu

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

Page 689: Xml orchuulga bayarbat purevkhuu

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));

Page 690: Xml orchuulga bayarbat purevkhuu

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

Page 691: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-691

Зорилго: Шинж тэмдэг-программын өөрчлөлт

Change the letter’s decision attribute from rejected to accepted.Түтгэлзсэнээс бичвэрийн шийдвэрийн шинж тэмдгийг хүлээн авахаар өөрчлөх

Хэрэглэх:

1.getElementByTagName2.removeChild of the Element interface

Page 692: Xml orchuulga bayarbat purevkhuu

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");

Page 693: Xml orchuulga bayarbat purevkhuu

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

Page 694: Xml orchuulga bayarbat purevkhuu

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.

Page 695: Xml orchuulga bayarbat purevkhuu

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)

Page 696: Xml orchuulga bayarbat purevkhuu

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

Page 697: Xml orchuulga bayarbat purevkhuu

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)

Page 698: Xml orchuulga bayarbat purevkhuu

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)

Page 699: Xml orchuulga bayarbat purevkhuu

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)

Page 700: Xml orchuulga bayarbat purevkhuu

UNU-IIST-eGov-course-XML-700

DOM Interface: DOM Implementation Features

XML прораммын хэсэг: XMLHTML программын хэсэг: HTMLПрограммын хэсгийн харагдац: ViewsЗагвар хуудасны хэсэг: StyleSheetsCSS программын хэсэг: CSSCSS (сунгагдсан) программын хэсэг: CSS2Үйл явдлын программын хэсэг: EventsХэрэглэгчийн интерфейсийн хэсэг: UIEventsХулганы хөдөлгөөний хэсэг: MouseEventsМутац хөдөлгөөний хэсэг: MutationEventsСөрөг хэсэг: TraversalХязгаарын хэсэг Range

Page 701: Xml orchuulga bayarbat purevkhuu

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

Page 702: Xml orchuulga bayarbat purevkhuu

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>

Page 703: Xml orchuulga bayarbat purevkhuu

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 {…}

Page 704: Xml orchuulga bayarbat purevkhuu

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());}

Page 705: Xml orchuulga bayarbat purevkhuu

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

Page 706: Xml orchuulga bayarbat purevkhuu

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;

Page 707: Xml orchuulga bayarbat purevkhuu

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); }

Page 708: Xml orchuulga bayarbat purevkhuu

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);

Page 709: Xml orchuulga bayarbat purevkhuu

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());}}}

Page 710: Xml orchuulga bayarbat purevkhuu

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

Page 711: Xml orchuulga bayarbat purevkhuu

Java and XSLT

Page 712: Xml orchuulga bayarbat purevkhuu

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)

Page 713: Xml orchuulga bayarbat purevkhuu

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

Page 714: Xml orchuulga bayarbat purevkhuu

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;

Page 715: Xml orchuulga bayarbat purevkhuu

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);

}

Page 716: Xml orchuulga bayarbat purevkhuu

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]));

Page 717: Xml orchuulga bayarbat purevkhuu

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());

}

}

}

Page 718: Xml orchuulga bayarbat purevkhuu

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

Page 719: Xml orchuulga bayarbat purevkhuu

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.