Что видим – то и получаем eto'o Хакер, номер #082, стр. 082-124-4 [редактируем xml] А мы, тем временем, подобрались к кульминации - сейчас мы поговорим о визуальном редактировании XML-данных. На первым взгляд может показаться, что это мало чем отличается от редактирования HTML. Однако это совершенно не так: здесь огромная куча трудностей, которую порождает, прежде всего, сам стандарт XML, за строгость которого мы его так любим :). Прежде всего, нужно ответить на вопрос: что понимается под «визуальным редактированием» XML? Природа и суть формата такова, что отрицает саму возможность какой-то оформительной привязки внутри документа, более того, в общем случае XML-документ вообще не является атомарным текстовым носителем. Он запросто может описывать строение пассажирского самолета, вывод математической формулы, биохимический процесс, векторное изображение. Поэтому под «визуальным редактированием» мы будем понимать редактирование, преобразованное к конкретному графическому представлению документа. Логично, что такое преобразование удобно выполнять при помощи инструмента XSLT, мы будем использовать его. И здесь встает еще одна, уже более весомая проблема. Формат XML - очень строгий, относительно html. И когда мы преобразовываем строгие XML-данные в html-помойку, невозможно допустить и мысли о свободном редактировании этого html-документа, поскольку провести «обратную операцию» по сборке в xml будет, в ряде случаев, невозможно. Как говорят, будет нарушена целостность документа. Поэтому редактирование XML-данных лишено смысла, если при этом не учитывается структура документа. Необходим какой-то инструмент для контроля действия пользователя, чтобы при редактировании, во-первых, соблюдались правила XML, а во-вторых, не нарушалась структура самого документа. Где же взять такой инструмент? Если ты читал какие-то статьи об XML, то должен знать, что есть такая штука, как DTD - Document Type Definiton. Это своего рода макет XML-документа, набор правил, который позволяет отличать «правильные» документы от «неправильных». Однако механизм DTD не может обеспечить нам требуемой строгости и корректности документа, кроме того, этот инструмент не предоставляет удобных механизмов для редактирования данных. Дня наших нужд значительно больше подходит язык XML-схем - XML Schema, который, во-первых, позволяет максимально строго описать структуру документа, и во-вторых, вкупе с Xupdate, предоставляет удобные механизмы для редактирования документа. [доверимся Microsoft] Если вновь обратиться к сайту MSDN, можно довольно быстро найти интересную статью XML Editing: A WYSIWYG XML Document Editor (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxmlweb/html/xmldocedit.asp). Этот материал комплектуется примером готовой системы по редактированию XML. Разработчики Microsoft, по непонятной мне причине, не используют связку XML Schema + Xupdate и городят собственный огород, заточенный именно под нужды редактирования. Однако когда хоть что-то уже готово, всегда хочется использовать именно это. По этой причине мы с тобой воспользуемся именно наработками майкрософтовцев. Во-первых, научимся их использовать, а во-вторых, добавим некоторую функциональность. |