Программированием на Java я занимаюсь уже 10 лет, и большую часть этого периода активнейшим образом использую в своих программах XML. Этот несложный, но строгий язык разметки породил вокруг себя огромный мир со своими кумирами (такими, как Джеймс Кларк), фундаментальными концепциями (DOM, SAX, XSLT) и мощными сообществами (Apache). Поддержка XML - один из стратегических приоритетов Java (версия 1.6 JDK в очередной раз это подтвердила). Сегодня я хочу рассказать о свободнораспространяемом редакторе Jaxe, с помощью которого можно эффективно работать с XML-документами.
Сначала несколько слов о некоторых особенностях XML. С одной стороны, этот язык разметки базируется на немногих и простых правилах. Создать XML-документ объемом в пару килобайт можно даже в таком редакторе, как mcedit или vim, где есть соответствующие подсветки синтаксиса. (Можно даже в Notepad, но это, пожалуй, совсем уж для мазохистов). С другой стороны, правила создания XML нужно строжайшим образом соблюдать. Этим он отличается от HTML старого образца, где тэг <IMG src=logo.gif> будет проглочен браузером столь же успешно, как и <img src="logo.gif">. В XML такие вещи не прокатывают. Регистр букв имеет значение в названиях тэгов, значения аттрибутов должны быть обязательно заключены в кавычки, структура вложенности тэгов должна строго соблюдаться. Достаточно нарушить одно из этих правил (а нарушить их по невнимательности проще простого) - и ни один уважающий себя парсер такой документ обрабатывать не будет. А есть еще проблема с кодировками, проблема строгого соответствия XSD-схемам, описывающим структуру того или иного вида XML. Не каждый программист рискнет выйти на XML "с голыми руками". Нужен специализированный редактор.
В начале своей программистской деятельности я пользовался программой XML Spy. Очень хороший продукт, но, во-первых - под винду, во-вторых - платный. Может меня это и не остановило бы, но однажды я потерял к нему надежный кряк. Погоревав пару дней и решив поискать все-таки свободные альтернативы, я остановил свой выбор на Jaxe - продукте, рожденном в недрах... Парижской городской обсерватории. Отсюда вытекала первая проблема. Вообще-то я никогда не заморачиваюсь русификацией программ, но тут потребовалось нечто большее - англофикация, поскольку весь интерфейс был на французском языке. Требовалось скачать специальный словарь и поколдовать с ключами запуска, чтобы все буковки стали знакомыми, то есть из чисто латинского алфавита. Были у Jaxe и другие недостатки. Некоторые из них сохранились до сих пор (например, явно наспех написанный механизм выбора файлов). И все-таки, чем-то этот редактор меня зацепил (в частности тем, что написан на чистой Java). Я стал время от времени скачивать его свежие версии.
С тех пор (а время моего знакомства с Jaxe пришлось на 2003 год, а может и чуть раньше) наш герой проделал огромный путь, сохранив неизменной основную структуру интерфейса. Проект развивается до сих пор (последний релиз - 3.1 - датирован сентябрем текущего года). У него своя страничка на Кузне (jaxe.sourceforge.net). Он локализован для основных европейских языков, включая русский, причем язык интерфейса определяется по текущей локали. Появился у Jaxe и собственный API, позволяющий писать сколь угодно сложные представления для интерпретации специфических элементов тех или иных разновидностей XML. Посмотрите, например, на эти скриншоты:


Используя API Jaxe можно создавать программы, с помошью которых пользователи могут напрямую заполнять данные непосредственно в XML-документе, не заморачиваясь его структурой. Документ этот потом несложно будет прогнать через какой-нибудь парсер. Это позволяет существенно сократить путь преобразований информации от вида, понятного пользователю до вида, понятного процессору.
Есть у Jaxe еще одна особенность. Нелатинские буквы он сохраняет в создаваемых документах не как байты соответствующих кодировок, а как xml entities, то есть конструкции вида О для русской буквы О, например. С одной стороны, это увеличивает объем документа и требует больше вычислительных ресурсов. Зато с другой гарантирует правильную интерпретацию документа любым XML-приложением, полную независимость от кодировки. Тот, кто имеет опыт загрузки XML-документов в AJAX-приложения, наверно, поймет о чем я.
Особенность Jaxe заключается в том, что он работает отнюдь не с любыми XML-документами, а только с теми, на которые у него есть соответствующие XSD-схемы и конфигурационные файлы особого формата. Для самых распространенных видов - XHTML, XSLT и некоторых других готовые конфигурационные файлы включены в дистрибутив. Для менее распространенных форматов нужно создавать XSD и конфиги самостоятельно. Но пугаться не надо, для этого в Jaxe есть необходимый инструментарий. Чтобы не быть голословным, прилагаю к данной статье файлы для создания посредством Jaxe rss-лент. Скопируйте их в каталог config программы и rss появится в списке документов, которые можно редактировать. Кстати, ипсталляции Jaxe не требует. Просто распакуйте и запустите jaxe.sh (в нем желательно прописать правильную переменную JAVA_HOME, но это так, факультативно).




блин, неправильно прочитал
блин, неправильно прочитал заголовок и повёлся на иконку. думал статья про java. до последней строчки надеялся, что щя будет... но это не в адрес автора =)
"бругие" -> "другие"?
А разве статья не про Java?
А разве статья не про Java? Редактор Jaxe написан на Java. У него есть Java-API. XML активно используется при разработке Java-приложений. Всё это в материале звучит, так что статья, думаю, все-таки в тему :)
Я стараюсь писать об аспектах, во-первых, малоизветных, во-вторых - практических. В противном случае пришлось бы копипастить то, что уже говорено-переговорено на других ресурсах (типа juga.ru). Если есть предложения по поводу тематики дальнейших материалов - с удовольствием рассмотрю и поучаствую в обсуждении. Следующие две статьи планирую посвятить выполнению удаленных процедур (RPC) и построению HTTPRequests в GWT.
За правку спасибо :)
Отправить комментарий