Paglalarawan ng xml tags. "8. Ang XML ay dapat na pormal at maigsi." Simulan ang paggawa ng XML file

Noong 1986, bago pa natanto ang ideya ng paglikha ng Web, ang unibersal na standardized markup language na SGML ( Standardized Generalized Markup Language ) ay naaprubahan bilang Pamantayang internasyonal(ISO 8879) mga kahulugan ng markup language, bagama't ang SGML ay umiikot na mula noong huling bahagi ng ikaanimnapung taon. Ginamit ito upang ilarawan ang mga markup na wika habang pinapayagan ang may-akda na magbigay ng mga pormal na kahulugan sa bawat elemento at katangian ng wika.

Ang HTML ay orihinal na isa lamang sa mga SGML application. Inilarawan niya ang mga patakaran kung saan dapat ihanda ang impormasyon World Wide Web. kaya, HTML na wika ay isang hanay ng mga pahayag ng SGML na binuo bilang mga kahulugan ng uri ng dokumento(DTD), na nagpapaliwanag kung ano ang eksaktong ibig sabihin ng mga tag at elemento. Ang HTML DTD schema ay naka-imbak sa web browser.

Ang mga disadvantage ng HTML na wika ay kinabibilangan ng mga sumusunod:

  • Mayroon ang HTML nakapirming hanay ng mga tag. Hindi ka makakagawa ng sarili mong mga tag na naiintindihan ng ibang mga user.
  • Eksklusibo ang HTML teknolohiya sa presentasyon ng datos. Ang HTML ay hindi nagdadala ng impormasyon tungkol sa kahulugan ng nilalamang nilalaman sa mga tag.
  • HTML - "flat" na dila. Hindi tinukoy dito ang kahalagahan ng mga tag, kaya hindi ito magagamit upang ilarawan ang hierarchy ng data.
  • Ang mga browser ay ginagamit bilang isang platform para sa mga application. Hindi sapat ang kapangyarihan ng HTML upang lumikha ng mga web application sa antas na kasalukuyang pinagsisikapan ng mga web developer. Halimbawa, imposibleng bumuo ng isang application sa HTML para sa propesyonal na pagproseso at paghahanap ng mga dokumento.
  • Malaking dami ng trapiko sa network. Umiiral na HTML-mga dokumentong ginagamit bilang mga application na nag-overload sa Internet malalaking volume trapiko sa mga client-server system. Ang isang halimbawa ay ang pagpapadala ng isang malaking dokumento sa isang network kapag ang kailangan lang ay maliit na bahagi dokumentong ito.

Kaya, sa isang banda, ang wikang HTML ay isang napaka-maginhawang paraan ng pagmamarka ng mga dokumento para magamit sa Web, at sa kabilang banda, ang isang dokumento na minarkahan sa HTML ay may kaunting impormasyon tungkol sa nilalaman nito. Kung ang isang partikular na dokumento ay naglalaman ng sapat na kumpletong impormasyon tungkol sa nilalaman nito, nagiging posible na magsagawa ng awtomatikong pangkalahatang pagproseso at paghahanap sa file na nag-iimbak ng dokumento na medyo madali. Binibigyang-daan ka ng SGML na mag-imbak ng impormasyon tungkol sa nilalaman ng isang dokumento, ngunit dahil sa pagiging kumplikado nito, hindi ito kailanman ginamit nang kasinglawak ng HTML.

Isang grupo ng mga eksperto sa SGML, na pinamumunuan ni Jon Bosak ng Sun Microsystems, ang nagsimulang gumawa ng subset ng SGML na maaaring gamitin ng komunidad sa Web. Napagpasyahan na alisin ang maraming hindi mahahalagang feature ng SGML. Ang wikang itinayong muli sa ganitong paraan ay tinawag na XML. Ang pinasimple na bersyon ay nakitang mas madaling ma-access kaysa sa orihinal, na ang mga detalye nito ay 26 na pahina lamang ang haba, kumpara sa mahigit 500 na pahina ng mga detalye ng SGML.

Tingnan natin ang istraktura at mga tampok ng wikang ito.

XML (eXtensible Markup Language)- Inirerekomenda ng W3C ang markup language. XML- format ng teksto, na idinisenyo para sa pag-iimbak ng nakabalangkas na data, para sa pagpapalitan ng impormasyon sa pagitan ng mga programa, pati na rin para sa paglikha ng mga espesyal na wika ng markup batay dito. Ang XML ay isang pinasimpleng subset ng SGML na wika.

XML na wika ay may sumusunod dignidad:

  • Ito ay isang format ng dokumentong nakatuon sa tao, naiintindihan ito ng mga tao at mga computer.
  • Sinusuportahan ang Unicode.
  • SA XML na format Maaaring ilarawan ang mga pangunahing istruktura ng data tulad ng mga talaan, listahan at puno.
  • Ito ay isang format na self-documenting na naglalarawan sa istruktura at mga pangalan ng field pati na rin ang mga value ng field.
  • Ito ay may mahigpit na tinukoy na mga kinakailangan sa syntax at pag-parse, na nagbibigay-daan dito upang manatiling simple, mahusay at pare-pareho.
  • Malawakang ginagamit para sa pag-iimbak at pagproseso ng mga dokumento;
  • Ito ay isang format batay sa mga internasyonal na pamantayan;
  • Ang hierarchical na istraktura ng XML ay angkop para sa paglalarawan ng halos anumang uri ng dokumento;
  • Ito ay isang simpleng teksto, walang paglilisensya at anumang mga paghihigpit;
  • Independiyenteng plataporma;
  • Ito ay isang subset ng SGML, kung saan naipon ang malawak na karanasan at nalikha ang mga espesyal na aplikasyon;

Sa mga sikat pagkukulang Kasama sa mga wika ang sumusunod:

  • Ang XML syntax ay kalabisan.
    • Ang laki ng XML na dokumento ay mas malaki kaysa sa binary na representasyon ng parehong data (mga 10 beses).
    • Ang laki ng isang XML na dokumento ay mas malaki kaysa sa isang dokumento sa mga alternatibong format ng paglilipat ng data ng text (halimbawa JSON, YAML) at lalo na sa mga format ng data na na-optimize para sa isang partikular na kaso ng paggamit.
    • Maaaring makaapekto ang XML redundancy sa performance ng application. Ang halaga ng pag-iimbak, pagproseso at pagpapadala ng data ay tumataas.
    • Para sa malaking dami Ang mga gawain ay hindi nangangailangan ng buong kapangyarihan ng XML syntax, at mas simple at mas mahusay na mga solusyon ang maaaring gamitin.
  • Ang mga XML namespace ay mahirap gamitin at mahirap ipatupad sa mga XML parser.
  • Ang XML ay walang suporta sa uri ng data na nakapaloob sa wika. Wala itong mga konsepto ng "integers", "strings", "dates", " mga halaga ng boolean" atbp.
  • Hierarchical na modelo datos Ang mga alok ng XML ay limitado kumpara sa modelo ng relasyon at mga object-oriented na graph.

Sa pangkalahatan, ang XML ay maaaring isipin na higit pa sa bagong wika markup, ngunit din bilang batayan para sa isang buong pamilya ng mga teknolohiya:

Talahanayan 9.1. XML Family Structure
XML Teknikal na payo sa paggamit ng XML
DTD Kahulugan ng uri ng dokumento (schema)
XDR XML na format Nabawasan (Microsoft schema )
XSD Pagtukoy ng XML Schema (W3C Schema)
Namespace Paraan para sa pagtukoy ng mga pangalan ng elemento at katangian
XPath XML Path Language
XLink XML Link Language
XPointer XML Pointer Language
DOM API para sa modelo ng bagay dokumento
SAX Simpleng API para sa XML
XSL Napapalawak wika ng style sheet
XSL-FO Pag-format ng mga Bagay XSL
XSLT Wika ng pagbabago XSL
XIsama XML Isama ang Syntax

Ang XML (Extensible Markup Language) ay isang bagong SGML-derived document markup language na nagbibigay-daan sa iyong buuin ang impormasyon ng iba't ibang uri gamit ang isang arbitrary na hanay ng mga tagubilin. Ang mga nag-develop ng mga application sa Internet na sumusubok na gumamit ng bagong teknolohiya sa pagsasanay ay maaaring interesado sa mga partikular na tanong na may kaugnayan sa mga problema sa paglikha, pagproseso ng mga dokumento ng XML, at pagpapakita ng mga ito sa panig ng kliyente. Ang artikulong ito ay nagbibigay ng isang maikling ideya kung ano ang isang XML na dokumento at kung bakit ito kinakailangan, at naglalarawan sa mga praktikal na halimbawa ng ilang simple, ngunit sa ngayon, sa kasamaang-palad, maliit na inilarawang mga mekanismo para sa pagproseso nito.

Ano ang XML

Ngayon, ang XML ay maaaring gamitin sa anumang application na nangangailangan ng structured na impormasyon - mula sa kumplikadong geo mga sistema ng impormasyon, na may napakalaking dami ng ipinadalang impormasyon sa mga ordinaryong "iisang-computer" na programa na gumagamit ng wikang ito upang ilarawan ang impormasyon ng serbisyo. Pinagmasdan ng mabuti ang aming paligid mundo ng impormasyon Mayroong maraming mga gawain na nauugnay sa paglikha at pagproseso ng nakabalangkas na impormasyon na magagamit ng XML upang malutas:

  • Una sa lahat, ang teknolohiyang ito ay maaaring maging kapaki-pakinabang para sa mga developer ng mga kumplikadong sistema ng impormasyon, na may malaking halaga mga aplikasyon na konektado sa pamamagitan ng mga daloy ng impormasyon ng iba't ibang istruktura. Sa ganyan kaso XML- may papel ang mga dokumento unibersal na format upang makipagpalitan ng impormasyon sa pagitan magkahiwalay na bahagi malaking programa.
  • Ang XML ay ang batayang pamantayan para sa isang bagong wika sa paglalarawan ng mapagkukunan, RDF, na pinapasimple ang marami sa mga problema sa Web na nauugnay sa paghahanap ng tamang impormasyon, pagbibigay ng kontrol sa nilalaman ng mga mapagkukunan ng network, paglikha ng mga digital na aklatan, atbp.
  • Binibigyang-daan ka ng XML na ilarawan ang data arbitrary na uri at ginagamit upang kumatawan sa espesyal na impormasyon, tulad ng kemikal, matematika, pisikal na mga formula, mga reseta medikal, mga notasyong pangmusika, atbp. Nangangahulugan ito na ang XML ay maaaring magsilbi bilang isang malakas na pandagdag sa HTML para sa pamamahagi ng "hindi pamantayan" na impormasyon sa Web. Marahil sa malapit na hinaharap, ganap na papalitan ng XML ang HTML, hindi bababa sa mga unang pagtatangka na pagsamahin ang dalawang wikang ito ay ginagawa na (pagtutukoy).
  • Ang mga XML na dokumento ay maaaring gamitin bilang isang intermediate na format ng data sa tatlong-tier na sistema. Karaniwan, ang pattern ng pakikipag-ugnayan sa pagitan ng mga application at database server ay nakadepende sa partikular na DBMS at ang SQL dialect na ginamit upang ma-access ang data. Kung ang mga resulta ng query ay ipinakita sa ilang unibersal format ng teksto, pagkatapos ang link ng DBMS, tulad nito, ay magiging "transparent" sa application. Bilang karagdagan, ngayon ang W3C ay nagmungkahi ng isang detalye para sa isang bagong wika ng query sa database, XQL, na sa hinaharap ay maaaring maging isang alternatibo sa SQL.
  • Ang impormasyong nakapaloob sa mga XML na dokumento ay maaaring mabago, maipadala sa client machine, at ma-update nang unti-unti. Ang mga detalye ng XLink at Xpointer na binuo ay gagawing posible na sumangguni sa mga indibidwal na elemento ng isang dokumento, na isinasaalang-alang ang kanilang mga nesting at attribute value.
  • Ang paggamit ng mga style sheet (XSL) ay nagbibigay-daan sa iyong magbigay ng output-device-independent na pagpapakita ng mga XML na dokumento.
  • Maaaring gamitin ang XML sa karaniwang mga aplikasyon para sa pag-iimbak at pagproseso ng structured data sa isang pinag-isang format.

Ang isang XML na dokumento ay isang regular text file, kung saan, gamit ang mga espesyal na marker, ang mga elemento ng data ay nilikha, ang pagkakasunud-sunod at nesting kung saan tinutukoy ang istraktura ng dokumento at nilalaman nito. Ang pangunahing bentahe ng mga XML na dokumento ay na sa isang medyo simpleng paraan ng paglikha at pagproseso (ang simpleng teksto ay maaaring i-edit ng anumang test processor at iproseso ng mga karaniwang XML parsers), pinapayagan ka nitong lumikha ng nakabalangkas na impormasyon na mahusay na "naiintindihan" ng mga computer. .

Paano lumikha ng isang XML na dokumento?

Para sa Paglikha ng XML Sa pinakasimpleng kaso, hindi mo kakailanganin ang anumang bagay maliban sa isang regular na editor ng teksto (ayon sa maraming mga taga-disenyo ng Web, ang pinakamahusay na tool para sa paglikha ng mga pahina ng Web). Narito ang isang halimbawa ng isang maliit na XML na dokumento na ginamit bilang kapalit ng isang regular na notebook:

Mahalagang pagpupulong sa negosyo Kailangan nating makipagkita Ivan Ivanovich matapos siyang tawagan sa telepono 123-12-12 ... Tumawag sa bahay 124-13-13

Kapag gumagawa ng sarili mong markup language, maaari kang makabuo ng anumang mga pangalan para sa mga elemento (halos anuman, dahil ang listahan ng mga wastong character ay limitado at ibinibigay sa ), na naaayon sa konteksto ng kanilang paggamit. Ang aming halimbawa ay nagpapakita lamang ng isa sa maraming paraan upang lumikha ng istraktura ng talaarawan. Ito ang flexibility at extensibility ng XML-derived na mga wika - ang mga ito ay nilikha ng developer "on the fly", ayon sa kanyang mga ideya tungkol sa istraktura ng dokumento, at pagkatapos ay magagamit ng mga unibersal na manonood kasama ng anumang iba pang XML -mga wikang hinango, dahil lahat ng impormasyong kailangan para sa pag-parse ay nasa loob ng dokumento.

Kapag lumilikha ng isang bagong format, kinakailangang isaalang-alang ang katotohanan na hindi maaaring magkaroon ng mga dokumento na "nakasulat sa XML" sa prinsipyo - sa anumang kaso, ang mga may-akda ng dokumento para sa markup nito ay gumagamit ng isang wika batay sa pamantayang XML (ang tinatawag na XML-derived) na wika, ngunit hindi XML mismo. Samakatuwid, kapag nagse-save ng nilikhang file, maaari kang pumili para dito ng ilang extension na angkop para sa pangalan (halimbawa, noteML).

Maaaring gamitin mo ang XML upang lumikha ng mga dokumento ng isang partikular na uri at istraktura na kailangan para sa isang partikular na aplikasyon. Gayunpaman, kung ang saklaw ng wika ay lumalabas na sapat na malawak at nagsisimula itong maging interesado sa isang malaking bilang ng mga developer, kung gayon ang detalye nito ay maaaring isumite para sa pagsasaalang-alang sa W3C at, pagkatapos ng kasunduan ng lahat ng mga interesadong partido, naaprubahan. ng consortium bilang isang opisyal na rekomendasyon.

Dapat pansinin na ang proseso ng paglitaw bagong detalye napakatagal at kumplikado. Ang anumang dokumentong iminungkahi ng W3C ay dumaraan sa ilang yugto bago maging isang pamantayan. Una, ang mga kagustuhan at rekomendasyon na nagmumula sa iba't ibang mga kumpanya na nakikilahok sa pagbuo nito ay pormal sa anyo ng isang tala na isinasaalang-alang, isang uri ng protocol ng layunin. Ang impormasyong nakapaloob sa naturang mga dokumento ay inilaan para sa talakayan ng mga miyembro ng consortium lamang at walang garantiya na ibinibigay na ang mga komentong ito ay magiging mga rekomendasyon.

Ang susunod na yugto ng pag-promote ng dokumento ay isang gumaganang bersyon ng detalye, na pinagsama-sama at kasunod na binago ng isang espesyal na nilikha na grupo ng nagtatrabaho (Working Group), na kinabibilangan ng mga kinatawan ng mga kumpanyang interesado sa ideya. Ang lahat ng mga pagbabagong ginawa sa dokumentong ito ay kinakailangang nai-publish sa consortium server www.w3.org at hanggang sa ang gumaganang bersyon ay maging isang rekomendasyon, maaari lamang itong magsilbi bilang isang "guiding star" para sa mga developer, kung saan maaaring suriin ng kumpanya ang mga plano nito, ngunit hindi dapat gamitin sa pagbuo ng software.

Kung sakaling ang mga partido ay sumang-ayon sa lahat ng mga pangunahing isyu at mas makabuluhang pagbabago ang ginawa sa dokumento, ang gumaganang bersyon ay magiging isang Iminungkahing Rekomendasyon at pagkatapos ng pagboto ng mga miyembro grupong nagtatrabaho ay maaaring maging Opisyal na Rekomendasyon ng W3C, na sa katayuan ay tumutugma sa pamantayan sa WWW.

Mga generator ng XML

Ang mga XML na dokumento ay maaaring magsilbi bilang isang intermediate na format para sa paglilipat ng impormasyon mula sa isang application patungo sa isa pa (halimbawa, bilang resulta ng isang query sa database), kaya ang kanilang nilalaman ay minsan ay nabuo at awtomatikong pinoproseso ng mga programa. Hindi palaging kinakailangan na lumikha ng isang XML na dokumento nang manu-mano.

Hayaan, halimbawa, ang aming gawain ay lumikha ng isang format para sa pag-iimbak ng data ng pagpaparehistro ng ilang mga kaganapan na nagaganap sa system (log file). Sa pinakasimpleng kaso, maaari nating limitahan ang ating sarili sa pagtatala ng matagumpay at mga maling kahilingan sa aming mga mapagkukunan - ang naturang dokumento ay dapat maglaman ng impormasyon tungkol sa oras ng kaganapan, ang resulta nito (tagumpay/error), IP address ng pinagmulan ng kahilingan, resource URI at resulta code.

Maaaring ganito ang hitsura ng aming XML na dokumento:

195.151.62.18 GET /misc/ 200 195.209.248.12 GET /soft.htm 200

Ang istraktura ng dokumento ay medyo simple - ang elemento ng ugat sa kasong ito ay ang elemento ng log, ang bawat kaganapan na nangyayari ay naitala sa elemento ng kaganapan at inilarawan gamit ang mga katangian nito (petsa - oras at resulta - uri ng kaganapan) at mga panloob na elemento ( paraan - paraan ng pag-access, ip-mula sa - pinagmulan ng address, url-to - hiniling na mapagkukunan, tugon - code ng tugon). Ang dokumentong ito ay maaaring mabuo, halimbawa, sa pamamagitan ng isang system request authentication module, at ginagamit ng isang registration data processing program (log viewer).

Ano ang DTD?

Kaya, gumawa kami ng XML na dokumento at tiniyak na ang hanay ng mga tag na ginamit ay nagpapahintulot sa amin na magsagawa ng anumang pagmamanipula sa aming impormasyon. Sa kasong ito, upang maitatag ang mga patakaran ng ating bagong wika, i.e. isang listahan ng mga wastong elemento, ang kanilang mga posibleng nilalaman at katangian, dapat tayong lumikha ng mga kahulugan ng DTD (sa oras ng pagsulat, ang detalye para sa mga XML na dokumento ay hindi pa naaprubahan at sa ngayon ang mga DTD ay ang tanging karaniwang paraan upang ilarawan ang gramatika).

Isang maliit na halimbawa para sa aming XML na dokumento:

I-save ang file na ito bilang log.dtd at magsama ng bagong linya sa XML na dokumento:

Ngayon, kapag nagpoproseso ng isang dokumento, susuriin ng nagbe-verify na XML analyzer ang pagkakasunud-sunod ng pagtukoy sa mga elemento at ang kanilang mga katangian sa paraang tinukoy sa aming mga notasyon ng DTD at, kung sakaling may paglabag sa panloob na istraktura (na tumutukoy sa "semantics" ng dokumento), mag-isyu ng mensahe ng error.

Ano ang Namespaces?

Tulad ng nabanggit kanina, ang kagandahan ng paggamit ng XML ay nakasalalay sa kakayahang makabuo ng iyong sariling mga tag, na ang mga pangalan ay ganap na tumutugma sa kanilang layunin. Ngunit ang imahinasyon at bokabularyo ng mga tao ay hindi limitado, kaya walang tiyak na katiyakan na ang mga pangalan ng elemento na iyong ibibigay ay hindi gagamitin ng ibang tao. Hangga't ang iyong aplikasyon ay nagpoproseso lamang ng mga katutubong XML na dokumento, walang anumang mga problema. Ngunit ito ay lubos na posible na ang parehong dokumento ay naglalaman ng impormasyon para sa ilang mga processor sa parehong oras. Sa kasong ito, maaaring magkapareho ang mga pangalan ng ilang elemento o mga katangian nito, na nagiging sanhi ng error sa XML parser o hindi tamang presentasyon ng dokumento. Halimbawa, sa aming kaso, ang elemento ng kaganapan ay madaling magamit upang i-record ang iba pang mga kaganapan at maproseso ng isa pang application.

Upang itama ang sitwasyong ito, dapat nating tukuyin ang mga natatanging pangalan para sa mga elemento at ang kanilang mga katangian sa pamamagitan ng "pagdaragdag" ng ilang unibersal, hindi umuulit na prefix sa kanilang mga regular na pangalan. Ginagamit ang mekanismo ng Namespaces para dito (Opisyal na inaprubahan ng W3C ang Namespaces noong Enero 1999 at bahagi na ngayon ng XML standard). Ayon sa pagtutukoy na ito, upang tukuyin ang "saklaw" ng isang tag (sa katunayan, ang terminong ito, na malawakang ginagamit sa mga karaniwang programming language, ay hindi naaangkop sa XML, dahil walang nakatakda kung saan maaaring buuin ang "saklaw" sa loob ng structured XML na dokumento ) kinakailangan na tukuyin ang isang natatanging katangian na naglalarawan sa pangalan ng elemento, kung saan matutukoy ng document analyzer kung aling grupo ng mga pangalan ito kabilang (Maaaring gamitin ang mga namespace identifier upang ilarawan ang mga natatanging pangalan ng parehong elemento at ang kanilang mga katangian). Sa aming huling halimbawa maaari itong gawin tulad nito:

195.151.62.18

GET

/misc/

200

195.209.248.12

GET

/soft.htm

200

Tinitiyak ang pagiging natatangi ng attribute ng pangalan sa pamamagitan ng paggamit ng ilang universal resource identifier (halimbawa, URI o ISBN) bilang halaga nito.

Buong impormasyon sa paggamit ng Namespace na makikita mo sa pamantayang ito. Sa hinaharap, upang gawing simple ang mga halimbawa, lalaktawan namin ang Namespace - mga paglalarawan.

Mga gamit

Pagproseso ng mga XML na Dokumento

Ang pangunahing salik na naglilimita sa pag-promote ng teknolohiyang XML sa Web ngayon ay ang kakulangan ng ganap na suporta para sa format na ito ng lahat ng mga tagagawa ng browser - mga programa na kadalasang ginagamit sa panig ng kliyente. Ang isang paraan sa sitwasyong ito ay maaaring isang opsyon kung saan pinangangasiwaan ng server side ang pagproseso ng mga XML na dokumento Gamit ang anumang umiiral na XML analyzer, maaari kang bumuo ng kinakailangang impormasyon sa server at magpadala ng isang normal na HTML na dokumento sa kliyente. Gayunpaman, ang pamamaraang ito, siyempre, ay hindi gaanong nababaluktot at nagbibigay-daan sa iyong gumamit ng XML na teknolohiya para lamang sa pag-iimbak ng nakabalangkas na impormasyon, ngunit hindi para sa dynamic na pagbabago nito sa panig ng kliyente.

Noong Agosto 1997, naaprubahan ang RFC 2376 Mga uri ng MIME para sa mga mapagkukunang XML: text/xml at application/xml. Samakatuwid, ang mga XML na dokumento ay maaaring ipadala sa HTTP at ipakita ng tumitingin sa parehong paraan tulad ng mga regular na HTML na pahina. Upang gawin ito, kailangan mong bahagyang baguhin ang configuration ng Web server (sa Apache - idagdag ang linyang "text/xml xml ddt" sa mime.types file), at sa panig ng kliyente ay mayroong browser na sumusuporta sa mga style sheet o JavaScript. Ngayon ang mga ganitong browser ay Microsoft Internet Explorer 5, ang unang browser na sumusuporta sa XML 1.0 na detalye at XSL style sheet; Ang Amaya browser, na iniaalok ng consortium partikular para sa mga layunin ng pagsubok () at sumusuporta sa halos lahat ng binuong pamantayan ng W3C. Ang suporta sa XML ay binalak din para sa mga susunod na bersyon ng Netscape Navigator.

Document Object Model DOM

Ang isa sa pinakamakapangyarihang interface para sa pag-access sa nilalaman ng mga XML na dokumento ay ang DOM.

Bagay XML na modelo Ang mga dokumento ay isang representasyon ng panloob na istraktura nito sa anyo ng isang koleksyon ng ilang mga bagay. Para sa kaginhawahan, ang mga bagay na ito ay nakaayos sa ilang uri ng istraktura ng data na tulad ng puno - ang bawat elemento ng dokumento ay maaaring italaga sa isang hiwalay na sangay, at lahat ng nilalaman nito, sa anyo ng isang hanay ng mga nested na elemento, komento, mga seksyon ng CDATA, atbp. ay kinakatawan sa istrukturang ito ng mga subtree. kasi Dahil ang anumang mahusay na nabuong XML na dokumento ay dapat magkaroon ng pangunahing elemento na tinukoy, ang lahat ng nilalaman ay maaaring ituring bilang mga subtree ng pangunahing elementong ito, pagkatapos ay tinatawag na ugat ng puno ng dokumento. Para sa sumusunod na fragment ng XML na dokumento:

text text

Ang representasyon ng object ng istraktura ng dokumento ay hindi bago para sa mga developer. Sa pag-access HTML na nilalaman ang mga pahina sa mga script ay matagal nang gumamit ng object-oriented na diskarte - naa-access sa Java Script o mga elemento ng VBScript HTML na dokumento maaaring malikha, mabago at matingnan gamit ang naaangkop na mga bagay. Ngunit ang kanilang listahan at hanay ng mga pamamaraan ay patuloy na nagbabago at depende sa uri ng browser at bersyon ng wika. Upang makapagbigay ng interface upang ma-access ang mga nilalaman ng isang structured na dokumento, independiyente sa isang partikular na programming language at uri ng dokumento, ang detalye ng DOM Level 1 object model ay binuo at opisyal na naaprubahan sa loob ng W3 consortium.

Ang DOM ay isang detalye para sa unibersal na platform- at software-independent na pag-access sa mga nilalaman ng mga dokumento at isa lamang itong uri ng API para sa kanilang mga humahawak. Ang DOM ay isang karaniwang paraan ng pagbuo ng object model ng anumang HTML o XML na dokumento, sa tulong kung saan maaari kang maghanap ng mga kinakailangang fragment, lumikha, magtanggal at magbago ng mga elemento nito.

Upang ilarawan ang mga interface para sa pag-access sa nilalaman ng mga XML na dokumento, ang detalye ng DOM ay gumagamit ng platform-independent na wika na IDL at upang magamit ang mga ito dapat silang "isalin" sa isang partikular na programming language. Gayunpaman, ito ay ginagawa mismo ng mga tagalikha ng mga analyzer; maaaring wala kaming alam tungkol sa paraan ng pagpapatupad ng mga interface - mula sa punto ng view ng mga developer ng application, ang DOM ay mukhang isang set ng mga bagay na may ilang mga pamamaraan at katangian. Sa susunod na seksyon, titingnan natin ang modelo ng object ng Microsoft Internet Explorer 5, naa-access mula sa Java Script at VBScript script.

XML ay para sa malawakang paggamit, ang mga character ay hindi limitado sa 7-bit ASCII character set. Kasama sa mga character na pinapayagan sa XML ang tatlong ASCII control character, lahat ng regular na ASCII character, at halos lahat ng iba pa. Mga character na Unicode

Mga pangalan.

Sa XML, ang lahat ng mga pangalan ay dapat magsimula sa isang titik, underscore (_), o tutuldok (:), at dapat lamang magpatuloy sa mga wastong pangalan ng mga character, na nangangahulugang maaari lamang silang maglaman ng mga titik na bahagi ng seksyon ng mga titik Mga pag-encode ng Unicode, Arabic numerals, hyphens, underscore, tuldok at tutuldok. Gayunpaman, ang mga pangalan ay hindi maaaring magsimula sa xml na mga linya sa anumang rehistro. Ang mga pangalan na nagsisimula sa mga character na ito ay nakalaan para sa paggamit ng W3C. Dapat tandaan na dahil ang mga titik ay hindi limitado lamang Mga character na ASCII, pagkatapos ay sa mga pangalan maaari mong gamitin ang mga salita mula sa katutubong wika.

XML na istraktura ng dokumento.

Ang anumang XML na dokumento ay binubuo ng mga sumusunod na bahagi:

  • Opsyonal na prologue.
  • Katawan ng dokumento.
  • Isang opsyonal na epilogue na sumusunod sa element tree.

Tingnan natin ang bawat isa sa mga bahagi nang mas detalyado.

Prologue ng XML na dokumento.

Ang XML na dokumento ay nagsisimula sa isang prologue. Ang prologue ay naglalaman ng ilang mga tagubilin para sa XML parser at mga application.

Ang prologue ay binubuo ng ilang bahagi:

  1. isang opsyonal na XML Declaration na nakapaloob sa pagitan ng mga character. Ang patalastas ay naglalaman ng:
    • xml mark at numero ng bersyon ng detalye ng XML;
    • isang indikasyon ng character encoding (encoding) kung saan nakasulat ang dokumento (bilang default na encoding="UTF-8");
    • ang standalone na parameter na maaaring kunin ang mga value na "yes" o "no" (by default standalone="yes" ). Ang halaga ng "oo" ay nagpapahiwatig na ang dokumento ay naglalaman ng lahat ng kinakailangang deklarasyon ng elemento, at ang "hindi" ay nagpapahiwatig na ang mga panlabas na DTD ay kinakailangan.

    Ang lahat ng ito ay maaaring magmukhang ganito:

    .

    Mahalagang tandaan na sa isang XML deklarasyon, ang attribute na bersyon lang ang kailangan, lahat ng iba pang attribute ay maaaring tanggalin at samakatuwid ay kumuha ng mga default na value. Kailangan mo ring tandaan na ang lahat ng mga katangiang ito ay dapat na tinukoy lamang sa pagkakasunud-sunod na ibinigay sa itaas.

  2. mga komento.
  3. pagpoproseso ng mga utos.
  4. mga simbolo ng walang laman na espasyo.
  5. opsyonal deklarasyon ng uri ng dokumento, DTD (Document Type Declaration) na nakapaloob sa pagitan ng mga characterat maaaring sumasaklaw sa maraming linya. Idineklara ng bahaging ito ang mga tag na ginamit sa dokumento, o nagbibigay ng link sa file kung saan naitala ang mga naturang deklarasyon.

Pagkatapos deklarasyon ng uri ng dokumento mga komento, mga utos sa pagpoproseso, at mga character na white space ay maaari ding sumunod.

Dahil opsyonal ang lahat ng bahaging ito, maaaring alisin ang prologue.

Ang katawan ng XML na dokumento.

Ang katawan ng dokumento ay binubuo ng isa o mas maraming elemento. Sa isang maayos na na-format na XML na dokumento, ang mga elemento ay bumubuo ng isang simpleng hierarchical tree, na kinakailangang naglalaman elemento ng ugat( root element ) kung saan naka-nest ang lahat ng iba pang elemento ng dokumento. Ang XML ay naglalagay ng isang napakahalagang hadlang sa mga elemento: dapat na naka-nest ang mga ito nang tama. Ginagawa nitong medyo madali ang pag-embed ng isang XML na dokumento sa isa pa nang hindi lumalabag sa istruktura ng dokumento, habang elemento ng ugat ng isang nested na dokumento ay magiging isa lamang sa mga elemento ng dokumento kung saan ito naka-nest. Kaugnay nito, nahaharap tayo sa isa pang limitasyon, ibig sabihin, na ang mga pangalan ng mga elemento ay dapat na natatangi sa loob ng dokumento, dahil sa kasamang dokumento ang parehong mga pangalan tulad ng sa nakapaloob na dokumento ay maaaring magkaroon ng ganap na magkakaibang kahulugan. Upang malutas ang problema ng magkakasabay na mga pangalan, ipinakilala ang konsepto ng namespace.

Ang pangalan ng root element ay itinuturing na pangalan ng buong dokumento at ipinahiwatig sa ikalawang bahagi ng prologue pagkatapos ng salitang Doctype. Kung ang kahulugan ng DTD ay nasa loob ng isang XML na dokumento, pagkatapos ay inilalagay ito sa mga square bracket pagkatapos ng pangalan ng elemento ng ugat:

Ngunit kadalasan ang DTD ay tinukoy para sa ilang mga XML na dokumento nang sabay-sabay. Sa kasong ito, maginhawang isulat ito nang hiwalay mula sa dokumento at pagkatapos ay sa halip na mga square bracket ang isa sa mga salitang System o Public ay nakasulat na sinusundan ng address sa anyo ng isang URI (Uniform Resource Identifier) ​​​​ng file na may ang kahulugan ng DTD. Para sa lahat ng praktikal na layunin, ang isang URI ay itinuturing na katumbas ng Mga URL, bagaman sa prinsipyo maaari itong maging anumang natatanging pangalan. Ang kahulugan ng DTD, halimbawa, ay maaaring magmukhang ganito:

Mga XML Namespace

Dahil ang iba't ibang mga XML na dokumento ay maaaring maglaman ng parehong mga pangalan ng mga tag at ang kanilang mga katangian, na may ganap na magkakaibang mga kahulugan, ito ay kinakailangan upang kahit papaano ay matukoy ang mga ito. Upang gawin ito, ang mga pangalan ng mga tag at katangian ay binibigyan ng maikling prefix, na pinaghihiwalay mula sa pangalan ng isang colon. Ang prefix ng pangalan ay nauugnay sa isang identifier na tumutukoy namespace(namespace). Ang lahat ng mga pangalan ng tag at attribute na ang mga prefix ay nauugnay sa parehong identifier sa form one namespace, kung saan ang mga pangalan ay dapat na natatangi. Ang prefix at identifier ng namespace ay tinukoy ng katangian ng xmlns tulad ng sumusunod:

Sa hinaharap, ang mga pangalan ng mga tag at attribute na gusto naming italaga sa namespace na "http://URI_namespace" ay may prefix na ns, halimbawa:

Novosibirsk.

Ang katangian ng xmlns ay maaaring lumitaw sa alinman Elemento ng XML, at hindi lang sa ugat. Ang prefix na tinukoy nito ay maaaring gamitin sa elemento kung saan nakasulat ang attribute ng xmlns at sa lahat ng elementong naka-nest sa loob nito. Bukod dito, maraming namespace ang maaaring tukuyin sa isang elemento. Sa mga nested na elemento namespace maaaring ma-override sa pamamagitan ng pag-uugnay ng prefix sa ibang identifier. Ang hitsura ng pangalan ng tag na walang prefix sa isang dokumentong gumagamit namespace, nangangahulugan na ang pangalan ay kabilang sa default na namespace. Ang mga prefix na nagsisimula sa mga xml na character sa anumang kaso ay nakalaan para sa XML na wika mismo.

Ang pangalan kasama ang prefix ay tinatawag na pinalawak o kwalipikadong pangalan. Ang bahagi ng pangalang nakasulat pagkatapos ng tutuldok ay tinatawag na lokal na bahagi ng pangalan.

Sa artikulong ito ay tatalakayin natin ang paksa Mga istruktura ng XML na dokumento. Ikaw at ako ay napag-usapan na tungkol dito, at ngayon ay isusulat natin ang ating una XML na dokumento, at ipapaliwanag ko rin ang istraktura nito nang detalyado.

Hayaan mong bigyan kita ng isang simple kaagad halimbawa ng XML na dokumento:




]>


IBM Lenovo V570
&n; DELL Inspiron N5010


Gothic 2
Might & Magic 6

Ang pamagat ay dumating sa pinakadulo simula XML na dokumento. Ang header sa halimbawa ay unibersal, ang tanging bagay ay ang pag-encode ay minsan ay naiiba. Inilagay ko ang pinakakaraniwan - UTF-8.

Sunod sunod ang section DOCTYPE, na naglalarawan ng iba't ibang entity. Inilarawan namin ang dalawa: " n"may kahulugan" Laptop"At" g"may kahulugan" Isang laro". Ang isang kakanyahan ay, sa isang kahulugan, isang pare-pareho na magagamit natin sa isang katawan XML na dokumento upang paikliin ang pag-record at gawing mas madali ang pagpapanatili sa hinaharap.

Pagkatapos ng section DOCTYPE darating katawan ng dokumento ng XML. Ang lahat dito ay katulad ng syntax ng wika HTML, iyon ay, may mga tag (mga elemento din sila), mayroon silang mga katangian, pati na rin ang mga panloob na tag. Pero hindi katulad HTML, dito mo naisip ang mga pangalan ng mga elemento sa iyong sarili, din sa XML napakahigpit na syntax, ibig sabihin, hindi dapat magkaroon ng anumang hindi nagsasara na mga tag o nawawalang mga quote sa mga halaga ng katangian ng tag.

Bigyang-pansin kung paano ginagamit ang mga inilarawan namin sa seksyon CDATA kakanyahan. Kung kailangan mong magpakita ng ilang espesyal na karakter, halimbawa, & o < , pagkatapos ay dapat mong gamitin ang naaangkop na mga nakalaan na entity.

Tungkol sa relasyon sa pagitan ng iba't ibang elemento. Kumain 5 mga uri ng koneksyon:

  • Magulang. Ang magulang para sa isang ibinigay ay ang elemento na eksaktong matatagpuan sa 1 mga notebook"ang magulang ay" tindahan".
  • Elemento ng bata. Kabaligtaran ng isang magulang. Ang isang elemento ng bata ay isa na eksaktong naka-on 1 antas sa ibaba at matatagpuan sa loob ng ibinigay na elemento. Halimbawa, mga elemento ng bata " tindahan"ay" mga notebook"At" mga laro". Pakitandaan na palaging may isang magulang, habang maaaring maraming elemento ng bata.
  • Ninuno. Ang ninuno ay ang elementong iyon para sa isang naibigay na higit sa 1 mas mataas na antas. Halimbawa, para sa elementong " prod"ang ninuno ay" tindahan".
  • Kaapu-apuhan. Ganun din elemento ng bata, ngunit ang mga elemento lamang ang dapat nasa ibaba 1st antas ng nesting sa isang naibigay na elemento. Halimbawa, para sa " tindahan"ang inapo ay" prod".
  • Kuya. Ang isang elemento ay sinasabing kapatid ng isa pang elemento kung ito ay nasa parehong antas ng isa. Siyempre, bilang karagdagan sa isang antas, ang pagkakaroon ng isang karaniwang magulang ay kinakailangan din. Halimbawa, ang mga elemento " mga notebook"At" mga laro"magkapatid.

Iyon lang ang nais kong sabihin sa iyo XML na istraktura ng dokumento. At upang mapalakas ito, inirerekumenda ko na gumawa ka ng isang simpleng gawain: gawin ito sa loob ng elemento prod dalawa pang elemento, ang isa ay maglalaman ng pangalan ng produkto, at ang isa pa - ang presyo nito. Upang suriin ang kawastuhan XML na dokumento, buksan ito sa iyong browser. Kung walang mga error na nangyari, nangangahulugan ito na ang lahat ay nakasulat nang wasto sa syntactically.

Ngayon ay magsisimula kaming isaalang-alang ang isang napaka-tanyag at maginhawa XML markup language. kasi ang format na ito Ang representasyon ng data ay napaka-flexible at unibersal, at maaari itong gamitin halos kahit saan, ibig sabihin ay may kaugnayan sa isang bagay. Samakatuwid, ang isang baguhang programmer ay maaga o huli ay kailangang harapin ang wikang ito, at hindi mahalaga kung ano ang eksaktong gagawin mo, maging ito man ay web programming o database administration, dahil lahat ay gumagamit ng XML, at gagamitin mo rin ito upang ipatupad ang mga gawain. kailangan mo.

Magsisimula tayo, gaya ng dati, sa teorya, tingnan natin kung anong uri ng wika ito, kung bakit ito maganda, paano ito gamitin at kung saan ito ginagamit.

Kahulugan ng Wika ng XML

XML (eXtensible Markup Language) ay isang universal at extensible data markup language na hindi nakadepende sa operating system at mga kapaligiran sa pagpoproseso. Ang Xml ay ginagamit upang ipakita ang ilang partikular na data sa anyo ng isang istraktura, at maaari mong bubuoin ang istrakturang ito sa iyong sarili o i-customize ito para sa isang partikular na programa o ilang serbisyo. Kaya naman binigay na wika Tinatawag nila itong napapalawak, at ito ang pangunahing bentahe nito, kung saan ito ay pinahahalagahan.

Tulad ng alam mo, mayroong maraming mga markup na wika, halimbawa, ang HTML na wika, ngunit lahat ng mga ito, sa isang paraan o iba pa, ay nakasalalay sa processor, halimbawa, ang parehong html, ang code kung saan na-parse ng browser, ay standardized at hindi extensible, may malinaw na mga tag doon, syntax na hindi maaaring labagin, at sa xml maaari kang lumikha ng iyong sariling mga tag, i.e. iyong markup. Pangunahing Mga parangal sa HTML at ang XML ay ang html na iyon ay naglalarawan lamang ng markup para sa pagpapakita ng data, at ang xml ay isang abstract na istraktura ng data na maaaring iproseso at ipakita ayon sa gusto mo at kahit saan, at samakatuwid ay hindi na kailangang ihambing ang mga wikang ito, mayroon silang ganap na magkakaibang mga layunin.

Tulad ng nabanggit sa itaas, ang xml ay napakakaraniwan at wikang unibersal, kung saan halos lahat ng mga application, parehong web at para lamang sa computer, ay ginagamit ito bilang isang pagpapalitan ng impormasyon, dahil sa tulong nito ay napakadali mong makapagpalitan ng data sa pagitan ng mga application o serbisyo na kahit na nakasulat sa iba't ibang wika. Kaugnay nito, ang bawat baguhang programmer na kasangkot sa ganap na anumang programming ay dapat magkaroon ng pang-unawa sa XML. Kung gusto mong maging isang web master, dapat lang na alam mo ang XML, at napag-usapan na namin kung paano maging isang WEB Master at kung ano ang kailangan mong malaman para dito.

Halimbawa, minsan ay nagkaroon ako ng gawain na magsulat ng isang partikular na serbisyo na, kapag hiniling, ay dapat magbalik ng data xml form, ibig sabihin. uri ng pag-unlad bahagi ng server application, at wala akong ideya kung saan isinulat ang kliyente na magpoproseso ng data na ito, at na nagsulat ako ng serbisyo na nagbabalik ng data sa xml form at iyon lang, gumana nang perpekto ang application. At ito ay isang halimbawa lamang na kailangan kong harapin, ngunit ngayon isipin kung gaano karaming iba't ibang mga organisasyon ang nagtutulungan at tapat na bumuo software at palitan ng data, at hindi ako magtataka na ang data na ito ay nasa xml form.

Halimbawa, minsan ay nagkaroon ako ng gawain na magsulat ng isang partikular na serbisyo na dapat magbalik ng data sa xml form kapag hiniling, i.e. isang uri ng pagbuo ng bahagi ng server ng application, at wala akong ideya kung saan nakasulat ang kliyente na magpoproseso ng data na ito, at na nagsulat ako ng isang serbisyo na nagbabalik ng data sa xml form at iyon lang, gumana nang perpekto ang application . At ito ay isang halimbawa lamang na kailangan kong harapin, ngunit ngayon isipin kung gaano karaming iba't ibang mga organisasyon ang nagtutulungan at tapat na bumuo ng software at palitan ng data, at hindi ako magtataka na ang data na ito ay nasa xml form.

Minsan din ako nag-imbak xml data sa MS SQL 2008 database, upang mas mahusay na kumatawan sa data na ito at palitan ito sa pagitan ng server at panig ng kliyente mga application, tiningnan namin ito sa artikulo - Transact-sql - nagtatrabaho sa xml.

Ang wikang XML mismo ay napaka-simple, at imposibleng malito dito ang lahat ng pagiging kumplikado ay tiyak na lumitaw sa pagproseso at pakikipag-ugnayan ng XML sa iba pang mga application, teknolohiya, i.e. lahat ng bagay na nakapaligid sa xml, na kung saan madali kang malito.

Ngayon ay tungkol lamang ang pinag-uusapan natin Mga pangunahing kaalaman sa XML, at hindi kami magtutuon ng pansin sa mga teknolohiya para sa pagproseso at pakikipag-ugnayan sa wikang ito, dahil totoo ito, napakaraming materyal, ngunit sa palagay ko sa hinaharap ay patuloy tayong makikilala sa mga kaugnay na teknolohiya.

Magpatuloy tayo sa pagsasanay. At isusulat ko ang lahat ng mga halimbawa na isasaalang-alang natin sa Notepad++ dahil ito ay napaka-maginhawa, ngunit hindi natin ito pag-uusapan ngayon, dahil napag-usapan na natin ito sa artikulo - Bakit ang Notepad++ ay mabuti para sa isang baguhan na developer.

Mga XML tag

Ang wikang XML ay gumagamit ng mga tag ( case sensitive ang mga tag), ngunit hindi ang parehong mga tag tulad ng sa html, ngunit ang mga naisip mo sa iyong sarili, ngunit ang xml na dokumento ay mayroon ding malinaw na istraktura, i.e. mayroong isang pambungad na tag at isang pansarang tag, mayroong mga nested na tag at, siyempre, may mga halaga na matatagpuan sa mga tag na ito. Sa madaling salita, lahat ng kailangan mo pangunahing kaalaman xml ay para lamang sundin ang mga patakarang ito. Magkasama, ang pambungad, pagsasara na tag at halaga ay tinatawag na isang elemento, at ang buong xml na dokumento ay tiyak na binubuo ng mga elemento na magkasamang bumubuo ng isang istraktura ng data. Ang isang xml na dokumento ay maaari lamang magkaroon ng isang elemento ng ugat, tandaan ito, dahil kung magsusulat ka ng dalawang elemento ng ugat, ito ay magiging isang error.

At oras na para dalhin halimbawa xml markup, at ang unang halimbawa sa ngayon para sa syntax:

<Начало элемента> <Начало вложенного элемента>Nested na halaga ng elemento

Tulad ng nakikita mo, ang lahat ay medyo simple, at maaaring mayroong maraming mga naturang elemento na nakapugad sa bawat isa.

Ngayon magbigay tayo ng isang halimbawa ng isang tunay na xml na dokumento:

Tulad ng nakikita mo, nagbigay lang ako ng isang halimbawa ng isang uri ng katalogo ng libro dito, ngunit hindi ko idineklara ang dokumentong ito, i.e. Hindi ako nagsulat ng XML deklarasyon na nagsasabi sa application na magpoproseso ng data na ito na ang XML data ay matatagpuan dito at sa kung anong pag-encode ito ay ipinakita. Maaari ka ring magsulat ng mga komento at mga katangian, kaya magbigay tayo ng isang halimbawa ng naturang dokumento:

Aklat 1 Ivan Book 1 pa lang Aklat 2 Sergey Book 2 na lang Aklat 3 nobela Book 3 na lang

Kung saan ang unang linya ay ang deklarasyon ng deklarasyon na ito ay XML na dokumento at dapat itong basahin sa UTF-8 encoding.

Kung walang pagproseso, ang data na ito ay magiging hitsura, halimbawa, sa isang browser ( Mozilla Firefox) sa sumusunod na paraan:

Umaasa ako na naiintindihan mo na dito ang katalogo ay ang root element, na binubuo ng mga elemento ng libro, na binubuo naman ng pangalan, may-akda at mga elemento ng komento, at para sa halimbawa, nagtakda din ako ng ilang mga katangian para sa elemento ng catalog at elemento ng libro. .

Para sa mga pangunahing kaalaman, sa palagay ko ay sapat na iyon, dahil kung sumisid tayo nang mas malalim at mas malalim sa XML, at sa lahat ng mga teknolohiyang nauugnay sa wikang ito, hindi na magtatapos ang artikulong ito. Kaya iyon lang para sa araw na ito. Bye!