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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 63

Автор Π­Ρ€ΠΈΠΊ Π Π΅ΠΉΠΌΠΎΠ½Π΄

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования Glade Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹. Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° спСциализируСтся Π½Π° создании ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ освобоТдаСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ нСобходимости Π΅Π³ΠΎ собствСнной спСциализации. Π’ΠΎ Π΅ΡΡ‚ΡŒ Glade ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° сСбя ΠΎΠ΄Π½Ρƒ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС придСтся Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ избавляСтся ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· источников ошибок, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π‘ΠΎΠ»Π΅Π΅ подробная информация, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ исходный ΠΊΠΎΠ΄, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ссылки Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, доступны Π½Π° страницС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Glade <http://glade.gnome.org/>. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Glade пСрСнСсСна Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Microsoft Windows.

8.2.4. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: m4

ΠœΠ°ΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ m4(1) ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈ-язык для описания трансформаций тСкста. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° m4 прСдставляСт собой Π½Π°Π±ΠΎΡ€ макросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт способы прСобразования ΠΎΠ΄Π½ΠΈΡ… тСкстовых строк Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ примСнСния описаний ΠΊ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ тСксту с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ m4 происходит ΠΌΠ°ΠΊΡ€ΠΎΡ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ создаСтся тСкст. (ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π‘ прСдоставляСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ слуТбы для компиляторов Π‘, хотя ΠΈ Π² нСсколько ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅ΠΌΡΡ стилС.)

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 8.2 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° m4, которая заставляСт ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ m4 ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ строки "OS" Π² тСстС Π²Π²ΠΎΠ΄Π° Π² строку "operating system" Π½Π° Π²Ρ‹Π²ΠΎΠ΄Π΅. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π΅Π½. m4 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ макросы с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π±ΠΎΠ»Π΅Π΅ слоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‡Π΅ΠΌ просто ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ фиксированной строки Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Π’Π²ΠΎΠ΄ info m4 Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ языку.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.2. ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° m4

define(`OS', `operating system')

ΠœΠ°ΠΊΡ€ΠΎΡΠ·Ρ‹ΠΊ m4 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΈ Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. ΠœΠ°ΠΊΡ€ΠΎΡΠ·Ρ‹ΠΊ m4 ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ создан ΠΊΠ°ΠΊ язык Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°. Однако Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌ Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка.

ΠœΠ°ΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ m4 ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ прСпроцСссор для ΠΌΠΈΠ½ΠΈ-языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ нСдостаток встроСнного понятия ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΠ»ΠΈ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚ΠΎ простой ΠΏΡƒΡ‚ΡŒ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ синтаксиса Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ языка, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ комбинация с m4 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° ΠΎΠ±Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Одним ΠΈΠ· ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстных способов примСнСния m4 являСтся очистка (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, эффСктивноС сокрытиС) Π΄Ρ€ΡƒΠ³ΠΎΠΉ конструкции ΠΌΠΈΠ½ΠΈ-языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π±Ρ‹Π» Π½Π°Π·Π²Π°Π½ ΠΏΠ»ΠΎΡ…ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ. Π’ настоящСС врСмя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСмных администраторов Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ sendmail.cf с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄ m4, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с дистрибутивом sendmail. ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ с ΠΈΠΌΠ΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΈΠ»ΠΈ ΠΏΠ°Ρ€ имя/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ (Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²Ρ‹Π΅) строки Π½Π° языкС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ sendmail.

Однако m4 слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠžΠΏΡ‹Ρ‚ Unix Π½Π°ΡƒΡ‡ΠΈΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΌΠΈΠ½ΠΈ-языков ΠΎΡΡ‚Π΅Ρ€Π΅Π³Π°Ρ‚ΡŒΡΡ ΠΌΠ°ΠΊΡ€ΠΎΡ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ этого ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π»Π΅Π΅ Π² настоящСй Π³Π»Π°Π²Π΅.

8.2.5. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: XSLT

Π―Π·Ρ‹ΠΊ XSLT, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ макросам m4, являСтся языком для описания трансформаций тСкстового ΠΏΠΎΡ‚ΠΎΠΊΠ°. Однако ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ просто ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρƒ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄. Он описываСт трансформации XML-Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ созданиС запросов ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ². XSLT β€” язык для написания Ρ‚Π°Π±Π»ΠΈΡ† стилСй XML. Π’ цСлях практичСского примСнСния рСкомСндуСтся ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ описаниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π³Π»Π°Π²Π΅ 18. XSLT описан стандартом ΠšΠΎΠ½ΡΠΎΡ€Ρ†ΠΈΡƒΠΌΠ° World Wide Web ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

XSLT ΠΈ макросы m4 ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ языками, Ρ‚Π°ΠΊ ΠΈ языками Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°, Π½ΠΎ XSLT ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рСкурсии ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ»Ρ‹. Он вСсьма слоТСн, нСсомнСнно, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΉ для освоСния язык ΠΈΠ· всСх упомянутых Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹, Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ самый Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΉ язык ΠΈΠ· упомянутых Π² этой ΠΊΠ½ΠΈΠ³Π΅[81].

НСсмотря Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, XSLT Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся ΠΌΠΈΠ½ΠΈ-языком. Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ (хотя ΠΈ Π½Π΅ всСми) характСристиками своСго класса:

β€’ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ онтология Ρ‚ΠΈΠΏΠΎΠ², Π² частности, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² структур записи ΠΈΠ»ΠΈ массивов;

β€’ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ интСрфСйс для связи с внСшним ΠΌΠΈΡ€ΠΎΠΌ; XSLT-процСссоры ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ стандартного Π²Π²ΠΎΠ΄Π° Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄, с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ возмоТностями ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹; ΠΎΠ½ΠΈ Π½Π΅ способны ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ сокСты ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 8.3, трансформируСт XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта трансформируСтся Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Ρ‚Π΅Π³ΠΎΠ², нСпосрСдствСнно Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° прСдставлСно ΠΊΠ°ΠΊ содСрТимоС ΠΏΠ°Ρ€Ρ‹ Ρ‚Π΅Π³ΠΎΠ².

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ XSLT ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ здСсь отчасти для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ понятиС "дСкларативности" Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ "простоту" ΠΈΠ»ΠΈ "ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒ", ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΊΠ°ΠΊΠΎΠ²ΠΎΠΉ являСтся XSLT.

Книга "XSLT: Mastering XML Transformations" [84] являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка. ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ доступны Π² Web[82].

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.3. XSLT-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

<?xml version="1.0"?>

<xsl:stylesheet

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

 <xsl:output method="xml"/>

 <xsl:template match="*">

  <xsl:element name="{name()}">

   <xsl:for-each select="@*">

    <xsl:element name="{name()}">

     <xsl:value-of select="."/>

    </xsl:element>

   </xsl:for-each>

   <xsl:apply-templates select="*|text()"/>

  </xsl:element>

 </xsl:template>

</xsl:stylesheet>

8.2.6. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: инструмСнтарий Documenter's Workbench

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° troff(1), срСдство форматирования тСкстов, Π±Ρ‹Π»Π°, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π² Π³Π»Π°Π²Π΅ 2, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° troff являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ Π² Π½Π°Π±ΠΎΡ€Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… срСдств (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ DWB, (Documenter's Workbench β€” Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ мСсто Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΎΡ€Π°), ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΠ½ΠΈ-языком. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ прСпроцСссорами, Π»ΠΈΠ±ΠΎ постпроцСссорами для troff-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ. Π’ Unix-систСмах с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ рСализация DWB (которая называСтся groff(1)), созданная Π€ΠΎΠ½Π΄ΠΎΠΌ свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° troff рассматриваСтся Π² Π³Π»Π°Π²Π΅ 18. Π—Π΄Π΅ΡΡŒ достаточно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° прСдставляСт собой Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈ-языка, Π³Ρ€Π°Π½ΠΈΡ‡Π°Ρ‰Π΅Π³ΠΎ с ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ (Π² troff ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ рСкурсия, Π½ΠΎ Π½Π΅Ρ‚ Ρ†ΠΈΠΊΠ»ΠΎΠ²; troff β€” отчасти язык Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°).

ΠŸΠΎΡΡ‚ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ ("Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹" Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ DWB) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ troff. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ созданныС troff-ΠΊΠΎΠ΄Ρ‹ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π½Ρ‹Ρ… машин Π±Ρ‹Π»ΠΈ доступны Π³Ρ€ΡƒΠΏΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Unix Π² 1970 Π³ΠΎΠ΄Ρƒ. ПозднСС ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ Π΄ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-нСзависимого ΠΌΠΈΠ½ΠΈ-языка для размСщСния тСкста ΠΈ простой Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° страницах. ΠŸΠΎΡΡ‚ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΉ язык (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ "ditroff ΠΎΡ‚ device-independent troff β€” Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-нСзависимый troff) Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ фактичСски ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ соврСмСнныС графичСскиС ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… (ΠΈ соврСмСнным стандартом) являСтся PostScript.

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ Π±ΠΎΠ»Π΅Π΅ интСрСсны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ фактичСски Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ возмоТности языка troff. БущСствуСт 3 распространСнных прСпроцСссора: tbl(1) для создания Ρ‚Π°Π±Π»ΠΈΡ†, eqn(1) для тСкстового прСдставлСния матСматичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ pic(1) для создания Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ. Π Π΅ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ Π΄ΠΎ сих ΠΏΠΎΡ€ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ gm(1) для Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, refer(1) ΠΈ bib(1) для форматирования Π±ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ groff. ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ grap(1) прСдоставлял довольно Π³ΠΈΠ±ΠΊΠΎΠ΅ срСдство для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²; ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ groff сущСствуСт Π΅Π³ΠΎ рСализация с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прСпроцСссоры Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π² настоящСС врСмя ΡˆΠΈΡ€ΠΎΠΊΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. НаиболСС извСстным ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ideal(1) для форматирования Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π‘ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π»Π΅Π½ Π΄Π°Π½Π½ΠΎΠ³ΠΎ сСмСйства, chem(1) ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ химичСских структур; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° доступна Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ netlib Bell Labs[83].

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· описанных прСпроцСссоров прСдставляСт собой Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈ-язык ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² troff-запросы. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ прСпроцСссор распознаСт Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΡƒΡ‚Π΅ΠΌ поиска ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ запроса, Π° Π»ΡŽΠ±ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΡ… запросов оставляСт Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° tbl ΠΈΡ‰Π΅Ρ‚ строки TS/.TE, pic β€” .PS/.Π Π• ΠΈ Ρ‚.ΠΏ.). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ прСпроцСссоров ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² любом порядкС, Π½Π΅ влияя Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ. БущСствуСт нСсколько ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ: Π² частности, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ chem ΠΈ grap ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ pic, ΠΈ поэтому Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°Ρ… ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ послС Π½ΠΈΡ….