Здесь помещаем некоторые технические детали, связанные с WEB строительством - CSS, XML, XSLT ...Чтобы не забылось...
Правильный интернет
- 23.09.2005 г.XSL - трансформации , непроцедурное программирование
На XML описывается web-страница. Чтобы преобразование ее в HTML-страницу было полностью непроцедурным естественно избегать "обязательных" этапов преобразования, то есть директив. Лучше, когда у вас есть CALL-TEMPLATES - вызов всех шаблонов, а каждый шаблон применяется тогда, когда встречается. То есть, если тега нет, то соответствующий ему шаблон и не применяется вовсе. Все основывается на предполагаемых в самом начале правилах просмотра документа - PARSING'e, который делается самой системой. А вы этим парсингом управляете через CALL-TEMPLATES. Управлять можно довольно хитро - нужно знать правила пврсинга. Впрочем для того, чтобы писать вполне работоспособные и, главное, востребованные XSL преобразования, всего знать сразу не обязательно....
Это похоже на описание алгоритма с помощью систем подстановок (алгоритмы Маркова). Традиционная программа - это управление и преобразования (расчет), здесь только преобразования, правила управления - просмотра текста - фиксированы системой. Такое программирование удобно для преобразований, но не для счета - одно из достижений при создании ЭВМ (относящееся, впрочем, к 19 веку) было представление программы как данных, которые машина тоже может обрабатывать.
Конечно директивное CALL-TEMPLATE NAME="" можно применить к HEADER или FOOTER, они всегда должны присутствовать, и даже лучше, чтобы через XML файл - то есть через довольно доступное пользователю средство - эти шаблоны нельзя было отключить.
- 13.09.2005 г.Война броузеров - в прошлом
Я тестировал предварительно сделанную страничку на EXPLORER, OPERA, NETSCAPE и FIREFOX - показывали все абсолютно одинаково. На страничке были абсолютно размещаемые элементы и стили шрифтов - величина шрифта, расстояние между буквами и пр. Но конечно броузеры имеют особенности - но уже не в интерпретации CSS. OPERA, NETSCAPE и FIREFOX не понимают адресов типа E:\aa_20july_summary\base\main.htm - работает относительный адрес (или, наверное, адрес в интернете). OPERA не центрирует изображение - с этим я уже встречался , что-то дополнительно надо сказать в CSS…
- Странность в CSS
В примере ниже если не писать width div TEXT, то получается отступ первой
строки не несколько пикселей больше, чем второй - что странно…И только
для фиксированного WIDTH, а не для AUTIO!!!! Можно использовать position: absolute; align:left, и тогда все в порядке. HTML текст см. в кодах этой страницы
Статья
mmm mmmmmmmmmmmm mmm mmmmmmmmmmmm
************ а теперь правильно
Статья
text text text text text text
- XML-XSLT - технология. Шаблоны. XSLT преобразование и двух (нескольких) XML файлов (7 августа 2005)
XSLT преобразования основываются на шаблонах - templates типа (xsl: template match(thetag).(будем писать обычные скобки вместо угловых, чтобы не конфликтовать с броузером). Парсером разбирается XML файл и когда встречается thetag, то выполняется тело шаблона. Если у нас есть два XML файла, то как устроить разбор двух файлов? Один файл, ассоциированный с XSLT преобразованием, может, например, задавать внешний вид страницы, из другого нам надо выбрать нужное содержание - то есть тоже устроить разбор этого файла.
Конечно, это в книжках где-то описано, но такие книжки обячно читаются выборочно, и понимание всего образуется постепенно
Решение - в том месте, где нужно вставить отобранное содержимое второго файла thefile2.xml, пишем (xsl:call-template name="thename"). И определяем
(xsl:template name="thename")
(xsl: apply-templates select="document('thefile2'))
(xsl:template)
А дальше идут шаблоны (templates), содержащие теги (патерны) из файла thefike2. То есть применение шаблонов регулируется просмотром основного XML файла, а в нужный момент мы переключаемся на файл thefile2, просматриваем уже его и вместо его тегов применяем шаблонные правила. Важно эти правила не перепутать - паттерны могут быть одинаковыми для основного XML -файла и для thefile2.xml
Вызов шаблонов - несколько типов вызовов
(xsl:call-templates)
в процессе просмотра xml файла для всех узлов вызываются их шаблоны, если они есть
(xsl:call-templates select="…")
вызываются шаблоны только для узлов, соответствующих select
(xsl:call-template name="thename")
вызывается именной шаблон. Он не соответствует никакому узлу, это просто аналог вызова функции (ни с того, ни с сяго, вне зависимости от парсинга файла). Эти именные шаблоны можно хранить в отдельном файле и делать только include
Вообще-то разница не очень большая между выборкой узлов в вызове и в описание - но в описании выборка осуществляется более просто (допускаются более простые выражения. В описании не надо строить множество узлов, просто проверяются их свойства на соответствие паттерну.
А теперь - описание шаблона
(xsl:template match('pattern')), где pattern - некоторое свойство узла. Если узел удовлетворяет этому свойству - то это его шаблон. Что этот шаблон делает, описывается в теле шаблона - до закрывающего тега (/xsl:template).
Область видимости переменных и параметров
Во первых параметры, которые должны системой подаваться на вход преобразованию, должны определяться в самом начале, после (xsl:transform…)/. И они естественно не будут видны (хотя я теперь не уверен!), когда мы делаем парсинг другого файла (как выше) выход такой: вызывать именованный шаблон, в котором переходить на парсинг другого файла , передавая параметр для этого парсинга -
*************************** author_list - process publication_list
****************** we must pass param_author as param_author222
******************* because parser works in another file now!!
(xsl:template name="author_list")
(xsl:apply-templates select="document('../../publication_list.xml')/*")
( xsl:with-param name="param222_author" select="$param_author"/)
(/xsl:apply-templates0
(/xsl:template)
copy-of и value-of
(xsl: copy-of select=".") копирует и сам тег, и его содержимое.
с помощью (xsl: copy-of select="/") можно дублировать весь XML файл/
(xsl: value-of select=".") копирует только содержимое текущего тега
Один вопрос
В базах данных важную роль играют поля с уникальными значениями - то есть когда вся выборка определяется значением одного поля.. Как это реализовать в XSLT? Что -то такое там есть типа атрибута type="ID". Можно действовать через SELECT, но тогда вычисляется множество, нам достаточно проверять выполнение условия (разница match и select - см. выше)
Структура страницы
Есть содержание страницы, есть ее структура - что вначале, что потом - и есть представление-презентация. За последнее отвечает CSS, XML файл описания страницы - это и первое, и второе. А XSLT преобразование переводит XML описание на понятный броузеру язык. Просматриваются (парсером) теги XML описания страницы, в XSLT преобразовании просто вызываются все шаблон, а шаблоын для всех тегов располагаются в конце XSLT преобразования.
XML файл - схематично
(header/)
(menu/)
(content/)
(footer/)
и его XSLT преобразование
…………………….
(xsl:call-templates) - это в одном или нескольких местах
………………
И в конце файла - все шаблоны (xsl:template match('thetag') для всех тегов header, menu, content, footer
-
Технические детали - XQUERY.(4 октября 2005)
Вышла книжка по этому языку в издательстве КУДИЦ. Писали разработчики языка.
Формат XML пригоден для очень многого - точнее, он адаптируем под любую задачу (мы сами пишем язык, только придерживаясь правил XML!). Базы данных имеют интерфейсы XML - строки в реляционных базах данных записываются как XML объекты. Но можно совокупность XML объектов рассматривать как базу данных. Внутренняя часть ее - как все храниться и как обеспечивается доступ - нас мало волнует ( как по XML-SCHEMA устраивать эффективное хранение это отдельная хорошая задача).
Нас интересует доступ к данным в терминах XML. XQUERY - такой язык, конечно использующий XPATH. Но для XML баз данных этого мало - надо уметь пополнять, изменять данные, проверять базу данных на какие-то свойства и пр. И пока XML-SCHEMA не описывает какие то вещи, которые для базы нужны (в XML-SCHEMA есть описания типов…). В общем это все развивается, а пока надо хранить отдельные простые XML файлы и с помощью XSL преобразований в них копаться. XQUERY - продукт W3C в стадии рекомендации., это декларативный функциональный язык, как и XSLT. XML базы данных уже есть, XQUERY дополняется разными функциями для поддержки базы данных.
-
Зависимость ширины страницы от величинышрифта!!!!!!(20 октября 2005)
Одно очень важное наблюдение - о технологии интернета . На сайте Microsof msdn.com в зависимости отвеличины шрифта (к5оторое мы выбираем через стандартное меню броузера) меняется ширина элементов страницы.!!!!! Это очень хорошо выглядит - обычно при увеличении шрифта тексту явно не хватает места (ширины) . Скорей всего это делается на Action script!!! Проблема - как узнать, на какой шрифт - саиый крупный, крупный, среднтй, мелкий, самый мелкий - настроен броузер. И надо делать это независимо от броузера. Попробовать - может этого эффекта не работает в NETSCAPE, FIREFOX, OPERA
-
ВИДЕО, графика ...(7 августа 2005)
Цифры для видео - DVD и FLASH
Некоторые цифры - насколько хорошо сжимаетcя видео для DVD и во FLASH. При импорте в библиотеку FLASH видео всегда сжимается программой SORENSON SPARK , настройки сжатия выбирает сам пользователь. Сжатие DVD - это MPEG-2.
С Adobe Encore DVD создал DVD из видео в Дубне. Проект в Premier сохраняю как Microsoft AVI без сжатия и с первоначальными установками 720х576 и 25 кадров\мин. (файл довольно большой - 12 мин.. занимает 20 GB). А потом Adobe Encore - новый проект, Import Asset , положил на TIMELINE, сохранил проект и поехали - BUILD DVD. Для DVD сжатия - 12 мин. занимает 700 МБ, т.е. 1 мин. - 60 МБ., или 1 сек. - 1 МБ. Получасовой фильм - 1,8 ГБ.
Сравнение с FLASH - как я сжимаю для интернета. Если смотреть в маленьком окошке - примерно 200х160 (это приблизительно размер моих видео в интернете), то это примерно в 9 раз меньше, чем формат DVD (720x576) - получается 200 МБ получасовой фильм, примерно такого размера фильмы я видел (есть ли DVD сжатие такого размера???) Для моих видео (200х160) в интернете, сжатых во FLASH, 1 мин. видео весит примерно 2 МБ, в отличии от 6 МБ DVD (если такой маленький формат DVD есть). Это в 3 раза меньше, но качество сильно хуже. Если сжимать с качеством 90% во FLASH, то получается как на DVD - по объему и хорошее качество.
-
ЗВУК -- ЗВУК --- ЗВУК
Звук - очень тонкое дело. Это сложнее, чем видео - потому, что более абстрактно (?).Дублирование звука со смещением - часто это обогащает звук - это вроде добавления реверберации. Мне эо показал один мой знакомый, потом я это услышал - конечно, совершенно случайно - в видео, которое я делал. Собирал видео JAZZ , просто наложение разных фрагментов часто дает интересный результат.
Технические детали - как записать звук с микрофона или магнитофона
ПРОГРАММЫ- СТАНДАРТНЫЕ - РАЗВЛЕЧЕНИЯ - Панель ГОМКОСТЬ - и там выбрать микрофон (не выключить). Управление звуком - панель ГРОМКОСТЬ. Надо включить микрофон в этой панели для воспроизведения звука через компьютер, а от радио или микролфлна или магнитофона надо вставить эту штучку в розовое гнездо в компьютере.
Это все зачем-то надо продубдировать - надо включить ПАНЕЛЬ УПРАВЛЕНИЯ - ЗВУК и АУДИОУСТРОЙСТВА - АУДИО -ЗПИСЬ ЗВУКА - ГРОМКОСТЬ - и там выбрать - МИКРОФОН.
Это похоже на головоломку - но такова жизнь в Windows XP!
А записывать звук (только короткий, непрерывно около 1 мин, но зато можно много раз, и только потом записать в файл сразу все!) можно так: ПРОГРАММЫ- СТАНДАРТНЫЕ - РАЗВЛЕЧЕНИЯ - Запись звука
|