XSL for HomeSite

Что дают?

Набор правил, рекомендаций и конфигурационных файлов для настройки редактора HomeSite на удобную работу с XSL.

Если хотя бы одно из слов в предыдущем предложении вам непонятно — дальше можно не читать.

Зачем вам это надо?

Система может вам пригодиться, если вы:

Система особенно рекомендуется тем, кто привык к горячей клавише Ctrl+F4.

Где брать?

Да прямо здесь: http://nnberg.narod.ru/xsl-for-homesite/xsl-for-homesite.zip (170 Кб)

Инсталляция файлов

Простым копированием решить вопрос вроде как не удаётся — нужны ещё некоторые телодвижения.

Обозначения

Последовательность действий

  1. скопировать каталог XSL со всем содержимым в Extensions\TagDefs\
  2. скопировать каталог XSL_Reference со всем содержимым в Help\
  3. скопировать файл XSL tags.vtm в каталог Extensions\Outline Profiles\
  4. включить режим Tag Insight (Settings/Editor/Tag Insight)
  5. для пользователей Home Site 4.5 и Home Site 5.0 – дополнительно добавить все XSL-теги в список тегов, к которым всплывают подсказки
  6. включить автозакрытие тегов Tag Completion (Settings/Editor/Tag Completion). Не забудьте добавить все XSL-теги в список для автозакрытия. Руками, при помощи кнопки Add.
  7. как вариант быстрой настройки и для проверки — панель редактирования должна выглядеть так:
  8. вставить *.xsl в список расширений файлов (Settings/File Settings/Extension Manager):
  9. определить библиотеку XSL-тегов как поддающуюся поиску и XML-совместимую:
  10. перезагрузить HomeSite (не обязательно, но желательно)

Ура! Теперь вы можете использовать HomeSite как редактор XSL-тегов.

Результаты в картинках

Счастливыми обладателями чего мы являемся в результате деятельности по XSL-облагораживанию HomeSite'а?


Шпаргалка доступных тегов начинает всплывать сразу после добавления тегов в язык XSL. Префикс <xsl: следует вводить самостоятельно. Кстати, если вы не хотите, чтобы после ввода "<" сразу начинали всплывать подсказки для стандартного HTML, выключите флажок "Enable tag insight tag List". Но я этого делать не советую.



Следующий шаг — шпаргалка атрибутов тега — начинает работу после добавления этих атрибутов в описание тега.



Редко используемая подсказка "список всех атрибутов" — поставьте курсор в тег и нажмите F2 (или Shift+F2, как я рекомендую настроить).



И, наконец, шпаргалка по возможным значениям атрибута — после настройки соответствующих атрибутов как Enumerated.



Тег сам закрывается — т.е. к нему приписывается парный закрывающий — в момент, когда вы нажимаете ">" у открывающего тега. Это после того, как все XSL-теги введены в список автозакрываемых (Tag Completion). Не пугайтесь, что там только про HTML речь — не страшно, XSL тоже съест. Правда, не весь — тегу <xsl:processing-instruction> не повезло, он оказался длинноват.



Как понять, обязательный атрибут или нет? Вообще-то пользователи и сами не дураки, но на всякий случай дадим ещё одну подсказку — разобьём атрибуты по группам.



Любимая функция — редактор тега. Вы не знаете, что это такое? Ни разу в жизни не нажимали Ctrl+F4 (или просто F4, как я рекомендую настроить)? Хм... Почитайте хотя бы раздел Using Home Site/Editing Pages/Using Tag Editors в стандартной документации. Сэкономите очень много сил и времени.



Если в теге есть обязательные атрибуты, то их названия выделены жирным шрифтом. Не самое лучшее решение, но хоть что-то — возможности VTML по оформлению текста сильно ограничены.



Если элемент обычно используется в краткой форме (нпр., <xsl:fallback/>), то соответствующий флажок по умолчанию установлен. Иначе (как на этой картинке) — снят.



Снабдим редактор тегов контекстной помощью. Я просто нарезала куски спецификации. Но нет предела совершенству: файлы помощи находятся по адресу Extensions/TagDefs/XSL/имя тега.html, их можно безболезненно редактировать.



Помощь можно открыть и в независимом окне, если нажать самую маленькую кнопочку (невнятная пиктограммка справа от Help).

ToDo List

Список дел по проекту. Ведётся в системе WackoWiki по одному из шаблонов WeaselWiki.
Здесь — лишь один из "срезов" по времени (17.01.2004, 23:32), а не актуальная версия.


  1. автозакрытие XSL-тегов
    1. вставить все теги XSL в список автозакрываемых тегов (Tag Completion) в настройках HomeSite (обязательно с префиксом!)
      1. тег <xsl:processing-instruction> не влез — длинноват
  2. подсказки в HomeSite для XSL-тегов
    1. создать язык разметки XSL => папка Extensions/TagDefs/XSL с файлами, описывающими теги
      1. ввести собственно список тегов => файлы *.vtm в папке Extensions/TagDefs/XSL
        1. сгруппировать теги (есть теги верхнего уровня, есть инструкции, есть ещё что-то) => не нужно (точнее, не придумать потребность пользователя под эту функциональность)
      2. ввести атрибуты тегов
        1. пометить обязательные атрибуты каждого тега => группа "обязательно" (см. <ATTRIBCATEGORIES> в .vtm-файлах тегов)
  3. быстрое редактирование XSL-тегов
    1. можно ли сделать кнопку, запускающую проверку XPath внешними средствами
      1. видимо, можно через AciveX, но это пока не выглядит лёгким делом
    2. эскиз окон редактора тегов атрибутов — поля и метки, самый общий набор
    3. спросить Сайго о приоритетных тегах и атрибутах => вопрос / ответ
      1. "естественно" (по приоритетам) расположить в окнах редактора тегов поля ввода атрибутов
      2. этот же приоритет учесть при задании порядка вывода атрибутов в тег
    4. прописать заголовки панелей в редакторе тегов, содержащих поля ввода атрибутов => пока — кроме тегов, не имеющих атрибутов
      1. прописать заголовки тегов где-нибудь в редакторе для тегов, не имеющих атрибутов
      2. может, полезно прописать описание тега в атрибуте name VTML-тега <TAG>
    5. пометить, какие теги могут иметь содержание => параметр bodyediting тега <TAG>
      1. создать элементы для ввода содержания тега => *TagBody
        1. привязать переменную $$TagBody к элементу valTagBody
    6. в каких тегах есть смысл сразу генерить дочерние элементы
    7. проставить значения по умолчанию для флажка "сразу закрыть" => только в актуальных для Сайго тегах
      1. проставить эти же значения в "неактуальных" тегах
    8. привязать значения атрибутов к элементам формы
    9. пометить тип данных для атрибутов => отложу, это вторично
    10. выбор способа цитирования значения атрибута (апостроф или кавычки)
      1. функция Find автоматически поймет, нужны ли апострофы
        1. автоматически анализировать необходимость апострофов в момент вывода тега
    11. комментирование тега
      1. для краткой формы — обычный комментарий, для полной — "окружающий"
    12. быстрое закрытие
      1. как распознать, что тег не имеет парного закрывающего
        1. это реализовано на системном уровне (точнее, не реализовано :), о проблеме можно забыть
    13. определить логику редактирования тегов
  4. контекстная помощь по XSL
    1. прописать страницы помощи к тегам => Extensions/TagDefs/XSL/имя тега.html
      1. оформить так, чтобы тексты были читабельными (увеличить шрифт)
    2. объединить помощь по XSL с общесистемной помощью HomeSite => каталог Help/XSL_Reference/, просто html-файлы
      1. поставить ссылки из окон редактирования тегов в общую помощь
      2. отредактировать систему помощи
  5. языковой профиль (outline) для XSL
    1. создать профиль => конфирурируется в XML-файле Extensions/Outline Profiles/XSL tags.vtm
      1. поместить в этот профиль XSL-теги
        1. руками править соответствующий *.vtm-файл Extensions/Outline Profiles/XSL tags.vtm
      2. проставить флажок Unenclosed tag warning для каждого тега
      3. определить правила описания тега в окне структуры документа => пока везде вполне можно выводить тег целиком
        1. проставить режим '<' & TagName & TagString & '>' для отображения тега в дереве документа
    2. сопоставить иконки с ключевыми тегами
      1. какие теги — ключевые, и где взять иконки
  6. визарды для шаблонных задач вёрстки
    1. составить предварительный список задач
  7. интеграция в систему
    1. написание инструкции по ручной инсталляции пакета
      1. проверка на версиях 4.5, 5.0 и 5.5
    2. рисование кнопок для визардов шаблонных задач

Ссылки по теме

Набор ссылок не отличается оригинальностью — наверняка вы уже побывали на всех этих сайтах.

http://www.w3.org/TR/1999/REC-xslt-19991116
Официальная спецификация XSLT 1.0. Рекомендована W3C 16 ноября 1999 года.

http://www.rol.ru/news/it/helpdesk/xslt01.htm
Русский перевод спецификации XSLT 1.0. Перевод выполнен Радиком Усмановым.

http://www.bhv.ru/books/book.php?id=288
http://www.books.ru/shop/books/22090
http://www.ozon.ru/context/detail/id/964846/
Книга Алексея Валикова "XSLT". Рекомендую как настольную. Нечасто наша книга по технологиям на порядок лучше всех западных. Правда-правда.

http://www.vbxml.com/xslathome/
Тоже самое, что и здесь, только по-английски и в десять раз больше :). Переходите по этой ссылке, если вам мало того, что вы увидели здесь.

http://www.dpawson.co.uk/xsl/sect2/sect21.html
Великолепный архив часто задаваемых вопросов (FAQ) по XSLT-технологиям. Живёт не сам по себе, а паразитирует на рассылке XSL-List. Участие в рассылке рекомендую для тех, кто по уши завяз в XSLT (я — нет :).

http://xml.raleigh.ru/phpbb/
Довольно активный русскоязычный форум по XSLT-технологиям. К посещению рекомендуется и весь сайт.

http://www.xmlhack.ru/forum/xml/
Ещё один - даже более правильный, чем предыдущий - русскоязычный форум по XSLT-технологиям. И сайт при нём тоже весьма полезен.

О проекте

Самое скучное — потому и в конце.

Где деньги?

Теоретически — здесь всё бесплатно. Я жду от вас только bug report'ы :) — пишите: nnberg@yandex.ru.

Вы кто?

Команда разработчиков выглядит примерно так:

Нина Николаевна Берг
Реальный человек (и действительно девушка — точнее, тётенька), написавший все эти килобайты текстов и кода.
Обычно пишу куда более читабельные материалы — но этот проект просто уж очень давно хотелось сделать.
А тут и время нашлось (без работы сижу).

Сайго Кадзума
Виртуальный "идеальный XSL-верстальщик". Бета-тестер проекта.
У Сайго есть реальный тёзка-прототип. Запомните это имя, пригодится.

Ну и?

Вопросы, предложения, пожелания, замечания — вполне себе welcome: nnberg@yandex.ru.
Hosted by uCoz