Technical details

Технические детали





Здесь помещаем некоторые технические детали, связанные с 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 мин, но зато можно много раз, и только потом записать в файл сразу все!) можно так: ПРОГРАММЫ- СТАНДАРТНЫЕ - РАЗВЛЕЧЕНИЯ - Запись звука


© Some GRAPHICS by Boris Budinas
Сайт управляется системой uCoz