Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВСхнология XSLTΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 15

Автор АлСксСй Π’Π°Π»ΠΈΠΊΠΎΠ²

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ, Π³Π΄Π΅ трСбуСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΊΠ°ΠΊ с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ всСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π² памяти Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ объСм, поэтому DOM Ρ€Π΅Π·ΠΎΠ½Π½ΠΎ считаСтся модСлью, ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊ рСсурсам.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ парсСра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² памяти. Π‘ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ достаточным ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈ Π·Π°Ρ‚Π΅ΠΌ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ SAX-парсСра, произвСсти ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±Π΅Π· особых Π·Π°Ρ‚Ρ€Π°Ρ‚ рСсурсов. Если ΠΆΠ΅, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ модСль всСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ DOM-парсСра.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ классы Π·Π°Π΄Π°Ρ‡ XML

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ нСсколько основных Ρ‚ΠΈΠΏΠΎΠ² Π·Π°Π΄Π°Ρ‡, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… цСлСсообразно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ XML. ЕстСствСнно, этот список Π΄Π°ΠΆΠ΅ Π±Π»ΠΈΠ·ΠΊΠΎ Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ нСльзя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° языкС Java. НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… областСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ классичСскиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с успСхом Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ XML-тСхнологиями.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… языков

Π₯отя ΠΌΡ‹ ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± XML, ΠΊΠ°ΠΊ ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ описания Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° самом Π΄Π΅Π»Π΅ XML β€” это мСтаязык, язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создаСм XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΌΡ‹ создаСм Π΅Π³ΠΎ Π½Π΅ Π½Π° XML, Π° Π² соотвСтствии с XML-синтаксисом. XML β€” это всСго лишь Π½Π°Π±ΠΎΡ€ синтаксичСских ΠΏΡ€Π°Π²ΠΈΠ», Π½Π΅ Π±ΠΎΠ»Π΅Π΅. Настоящим языком Π² этой ситуации являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΏΠΎΠ΄ логичСской, сСмантичСской схСмой создаваСмого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ описываСм Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ схСму Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ язык с ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ сСмантикой ΠΈ XML-синтаксисом. Достоинством XML Π² Π΄Π°Π½Π½ΠΎΠΌ случаС являСтся ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΡΡ‚ΡŒ этого синтаксиса, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ создании модуля для синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° (парсСра) ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся сСмантики языка, Ρ‚ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹Π΅ XML-структуры ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для Π΅Π΅ описания, Π±ΡƒΠ΄ΡŒ это язык Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ язык программирования.

Π“Π»Π°Π²Π½Ρ‹ΠΌ нСдостатком XML являСтся Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΡΡ‚ΡŒ синтаксиса. НапримСр, арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 2*2 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² XML ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΊ:

<mul>

 <arg>2</arg>

 <arg>2</arg>

</mul>

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ с чСловСчСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния это Π½Π΅ самый ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ элСгантный способ.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сущСствуСт Π²Π΅Π»ΠΈΠΊΠΎΠ΅ мноТСство языков, созданных Π½Π° основС XML. ΠœΡ‹ пСрСчислим нСсколько Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных ΠΈΠ· Π½ΠΈΡ…:

β–‘ WML (Wireless Markup Language) β€” язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ для бСспроводных устройств, основной Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… для бСспроводного ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° WAP;

β–‘ SVG (Scalable Vector Graphics) β€” язык описания ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ;

β–‘ XHTML β€” XML-совмСстимая вСрсия языка гипСртСкстовой Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²;

β–‘ SOAP (Simple Object Access Protocol) β€” XML-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² распрСдСлСнных систСмах;

β–‘ RDF (Resource Description Framework) β€” систСма описания рСсурсов;

β–‘ XML/EDI (XML/Electronic Data Interchange) β€” XML-язык для прСдставлСния сообщСний EDI Π² систСмах Π’2Π’ ΠΈ элСктронной ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ†ΠΈΠΈ;

β–‘ OML (Ontology Markup Language) β€” язык для описания ΠΎΠ½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ тСзаурусов;

β–‘ VoxML (Voice Markup Language) β€” язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ для голосовых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;

β–‘ MathML (Mathematical Markup Language) β€” язык для описания матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ;

β–‘ CML (Chemical Markup Language) β€” язык для описания химичСских Ρ„ΠΎΡ€ΠΌΡƒΠ»;

β–‘ UML exchange Format β€” XML-выраТСния языка UML (Unified Modeling Language);

β–‘ CDF (Channel Description Format) β€” язык для описания Π΄Π°Π½Π½Ρ‹Ρ… для автоматичСской доставки ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ (тСхнология push-ΠΊΠ°Π½Π°Π»ΠΎΠ²).

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ XML это язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для создания языков программирования. Π‘Π°ΠΌΡ‹ΠΌ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся язык XSLT, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ посвящСна эта ΠΊΠ½ΠΈΠ³Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт мноТСство ΠΌΠ΅Π½Π΅Π΅ извСстных языков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ XML-вСрсия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка Lisp, язык HaXML ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ всСгда, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹ Π΄Π²Π° процСсса: парсинг (синтаксичСский Ρ€Π°Π·Π±ΠΎΡ€) ΠΏΡ€ΠΈ считывании Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сСриализация (созданиС физичСского выраТСния состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) ΠΏΡ€ΠΈ сохранСнии (рис. 1.2).

Рис. 1.2. Бтандартная схСма хранСния Π΄Π°Π½Π½Ρ‹Ρ…

ИспользованиС XML Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ схСмС ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° хранСния позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто парсСра ΠΈ сСриализатора стандартныС XML-инструмСнты, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ своС ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сохраняСмый Π² этом случаС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ XML-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами, вСдь ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ осущСствлСн Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€ΠΎΠ² (рис. 1.3).

Рис. 1.3. Π‘Ρ…Π΅ΠΌΠ° хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML

Помимо пСрСчислСнных Π²Ρ‹ΡˆΠ΅ достоинств ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ способа слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

β–‘ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Π² XML Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ практичСски Π»ΡŽΠ±ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ; ΠΎΠ½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° лишь ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹Ρ… структур;

β–‘ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Π² XML Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, коммСнтариями ΠΈΠ»ΠΈ инструкциями ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅);

β–‘ XML ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ Π΄Π°ΠΆΠ΅ для хранСния Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ссли ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ;

β–‘ SAX ΠΈ DOM/XPath-интСрфСйсы ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эффСктивный доступ ΠΊ XML-Π΄Π°Π½Π½Ρ‹ΠΌ.

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΊ использованию XML Π² качСствС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Ρ… XML-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 10 ΠšΠ±Π°ΠΉΡ‚. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, XML-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ это Π½Π΅ самый ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ способ хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ внСшним прилоТСниям Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ лишнСй.

ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство систСм, стандартов ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ эффСктивно ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ источники Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½Ρƒ систСму Π½Π΅ получаСтся. Π”Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΈΠ΅, казалось Π±Ρ‹, ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ источники, ΠΊΠ°ΠΊ систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ языки запросов ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ прСдставлСния Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимы ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Как слСдствиС, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ‚Π°ΠΊΠΈΡ… условиях Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… усилий β€” трСбуСтся Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ интСграция Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ систСм рСализуСтся ΠΏΠΎ схСмС, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π° рис. 1.4.

Рис. 1.4. Випичная схСма ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

НСслоТно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π—Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ систСмы Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСстС β€” Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ трудоСмкая Π·Π°Π΄Π°Ρ‡Π°.

ИдСя использования XML Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сводится ΠΊ созданию ΠΎΠ±Ρ‰Π΅Π³ΠΎ XML-языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ каТдая ΠΈΠ· Π½ΠΈΡ….

Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сразу ΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” вСдь вмСсто Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠΉ систСм слСдуСт всСго лишь Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… "Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ" Π½Π° созданном XML-языкС. Π˜Π½Π°Ρ‡Π΅ говоря, всС сводится ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€ΠΎΠ² (Π°Π½Π³Π». wrapper β€” ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ срСдство создания систСмной ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ для стандартизации Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΈ измСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ систСмы), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ со стандартного XML-языка ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмы Π½Π° язык, понятный ΠΊΠ°ΠΆΠ΄ΠΎΠΉ систСмС Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, интСграция ΠΏΠΎ XML-схСмС (рис. 1.5) Π½Π΅ отличаСтся ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° основС любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ стандарта. ВмСстС с Ρ‚Π΅ΠΌ, ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ ряд вСсомых прСимущСств:

β–‘ XML-языки Π½Π΅ зависят ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ систСмы;

β–‘ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ XML достаточно Π²Π΅Π»ΠΈΠΊΠ° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ практичСски любой слоТности;

β–‘ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для XML ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ практичСски Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° популярных языков программирования;

β–‘ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XML достаточно стандартны для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ;

β–‘ ΠΈΠ½Ρ„ормация, оформлСнная Π² Π²ΠΈΠ΄Π΅ XML, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ машинами, Π½ΠΎ ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ (Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ).

Рис. 1.5. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π½Π° основС XML

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ история XML

XML основываСтся Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… ΠΈ ΡΠΎΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡΡ… Π΄Π²ΡƒΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языков Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, XML ΠΈ SGML, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ использовался для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ своСго ΠΊΡ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π΅Ρ‰Π΅ Π² 60-Ρ… Π³ΠΎΠ΄Π°Ρ…, SGML (standard generalized markup language, стандартный язык ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ) Π±Ρ‹Π» Ρ€Π°Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ (ISO) Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² 1986 Π³ΠΎΠ΄Ρƒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ SGML Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅, практичСски, 10 Π»Π΅Ρ‚ β€” Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом ΠΎΠ½ Π±Ρ‹Π».