Файл xml с использованием списка стилей xsl

Прежде, чем начать проектировать макет сайта, нам понадобится эскиз, на котором будет виден его внешний вид и функциональность. Для эскиза я использовал только серые тона, чтобы в целом сосредоточиться на "планировке" и пока не заморачиваться с цветами. В результате вы в любой момент можете быстренько что-то поменять местами или переделать.

2. Создание документа

Макет сайта будет шириной 960 пикселей, поэтому нам необходимо создать документ с размерами 1200х1500 пикселей, с разрешением 72пикс/дюйм.

Мы определились с шириной, теперь нам необходимо обозначить эту область при помощи . Нажатием клавиш Ctrl + A выделите весь документ.

Перейдите в Select (Выделение) и выберите Transform Selection (Трансформировать выделенную область). В панели параметров вверху для ширины установите значение 960, это рабочая область будущего макета.

Расположите направляющие по краям выделения.

Теперь мы создадим отступ между границей рабочей области и областью для контента, который будет добавлен позже. Убедитесь, что у вас выделение активно, после этого снова пройдите в меню Select > Transform Selection (Выделение - Трансформировать выделенную область). Размер ширины уменьшите до 920 пикселей. А это значит, что с обеих сторон макета появится отступ по 20 пикселей, а в целом 40 пикселей.

Добавим еще две вертикальные направляющие по краям нового выделения.

3. Создание шапки сайта

В верхней части макета образуйте выделение высотой 465px.

Выделенный участок заполните серым оттенком, чуть позже мы применим к нему стили слоя для изменения цвета.

К шапке добавьте градиент при помощи стиля Наложение градиента. Градиент будет состоять из двух цветов #0f201c и #002931.

Вот, что должно получиться:

Теперь к шапке добавим подсветку. Возьмите кисть с мягкими краями, диаметром 600px, цвет - #19535a и на новом слое сделайте клик кистью в верху в центре шапки.

В верхней части шапки образуйте выделение размером 110px.

Нажатием клавиши Delete удалите выделенный участок.

При помощи свободного трансформирования (Ctrl + T) отразите по вертикали слой с подсветкой.

Убедитесь, что подсветка на шапке расположена ровно по центру. Для этого активируйте слои с подсветкой и шапкой, на панели инструментов выберите Перемещение (V). В верху на панели параметров выберите функцию Align Horizontal Centers (Выравнивание центров по горизонтали).

Создав новый слой, инструментом Карандаш (B) нарисуйте линию в 1 пиксель по ширине всего документа. Цвет - #01bfd2.

При помощи градиентной маски, сгладьте края созданной линии. Возьмите инструмент Градиент (G) и настройте его, подобно скриншоту ниже:

Созданный слой заполните градиентом.

4. Создание узора

Шапку макета мы украсим клетчатым узором. Карандашом в 2 пикселя нарисуйте две точки, расположенные по диагонали. На время отключите фоновый слой, кликнув по глазку возле миниатюрки фонового слоя. Затем создайте узор, перейдя в меню Edit (Редактирование) и выбрав Define Pattern (Определить узор).

Ниже подсветки создайте новый слой. Выберите участок, к которому необходимо применить узор. Нажатием клавиш Shift + F5 заполните шапку.

Результат:

Осталось сделать плавный переход от узора к шапке. Добавив маску к слою с узором, сделайте плавный переход мягкой кистью белого цвета с непрозрачностью 60%.

Смотрите результат:

5. Добавление логотипа

Логотип - это неотъемлемая часть каждого сайта. Для его создания возьмите мягкую кисть, установите цвет #19535a и в верхнем левом углу нарисуйте пятно.

Затем напишите текст для логотипа.

Примените к нему следующие эффекты:

Наложение градиента:

6. Навигация

Создайте кнопку для выделенной категории навигации при помощи инструмента Прямоугольная область (M). Заполните выделенный участок любым цветом и значение заливки понизьте до 0%.

7. Слайдер для контента

Образуйте выделенную область 580х295 пикселей.

Выделенный участок залейте любым оттенком серого цвета.

Сверху наложите изображение и прикрепите его к нижнему слою.

К слайдеру нужно добавить тень. Создав новый слой, возьмите Кисть (B) размером 400px и нажатием клавиши F5 откройте окно настроек кистей. Все настройки смотрите на изображении ниже.

Цвет установите черный и нарисуйте пятно.

Чтобы смягчить края используйте фильтр Gaussian Blur (Размытие по Гауссу).

Образуйте выделение для нижней половины тени и удалите ее.

Тень расположите вверху слайдера.

Сначала немного сожмите тень, а затем отцентрируйте её, используя функцию Align Horizontal Centers (Выравнивание центров по горизонтали).

Продублируйте тень и копию расположите внизу слайдера.

При помощи инструмента Прямоугольная область (M) на слайдере создайте две кнопки и заполните их черным цветом.

Для слоя с кнопками снизьте непрозрачность до 50%.

Используя стандартные фигуры Фотошоп, добавьте стрелочки на кнопки.

Внизу слайдера создайте полоску и заполните черным цветом.

Для полоски снизьте непрозрачность до 50%.

Здесь вы можете добавить описание для своего проекта.

8. Текст с приветствием

Левее слайдера введите текст с приветствием.

9. Завершение работы над шапкой

Мы заканчиваем работать над шапкой. И напоследок кистью добавим чуть заметную тень.

Между тенью и заголовком оставьте расстояние в 1 пиксель.

Ниже слоя с шапкой создайте новый слой. Примените к нему градиент.

10. Кнопки для слайдера

Пришло время добавить кнопки для смены слайдов.

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

11. Разделитель для контента

Чуть ниже кнопок для слайдера, нарисуйте линию светло-серого цвета #aaaaaa, шириной в 1 пиксель.

Добавив маску к линии, сделайте на краях плавный переход, используя градиент. Мы создали разделительную линию.

12. Добавление контента

Теперь добавим области для контентной части. Они будут разделены на 3 колонки с отступом в 25px.

Расположите вертикальные направляющие по обеим краям колонок.

Для каждой колонки добавьте заголовок и подходящую иконку. Ниже заголовков добавьте контент.

Используя инструмент Прямоугольник со скругленными углами, создайте кнопку Read More. Обратите внимание, чтобы на панели параметров был выбран режим Фигура.

К кнопке примените стили Наложение градиента и Обводка.

Кнопку Read More продублируйте (Ctrl + J) еще два раза и расположите их в каждой колонке под контентом.

Как и ранее нужно создать разделительную линию, расположив её под кнопками. Ниже расположите прямоугольники серого цвета и примените к ним стиль Обводка.

На каждый прямоугольник наложите изображение.

Как и ранее создайте тени и расположите их ниже областей с изображениями.

Ниже каждого изображения разместите заголовок, контент, кнопку Read More и разделительную линию.

Ниже в первую колонку поместите иконку Twitter.

Затем разместите сообщение о Twitter.

Нарисуйте ещё одну кнопку More Tweets.

К этой кнопке примените стили Наложение градиента и Обводка:

Напишите на ней текст More Tweets.

13. Создаем футер

В самом низу макета сайта образуйте выделенную область и залейте её серым цветом.

Примените к футеру стиль Наложение цвета.

И в заключении разместите на футере навигацию и копирайт.

Макет сайта готов!

У меня есть xml-документ, который сейчас даже не распознается как xml в IE9. Я попытался добавить правильный атрибут xmlns: xsl, также он имеет правильный заголовок, начинающийся с

Этот xml отлично отображается в IE 6 7 8, но не работает в IE9. Я не уверен, что это проблема, связанная с режимом Quirks, и если я не уверен, что DOCTYPE должен использовать для XML-документов. Любая помощь будет оценена. Ниже приведены первые несколько строк документа XML.

3 ответов

Можете ли вы уточнить, как он "даже не распознается как xml на IE9"? Появляется ли сообщение об ошибке, или просто оно выглядит иначе в IE9, чем в предыдущих версиях?

Первое, что делает ваш XML файл, - это связать себя с таблицей стилей XSLT на странице "/mobiledoc/jsp/empi/master/CCD.xsl", так что это может стать источником вашей проблемы. Некоторые предложения:

    В качестве теста удалите бит . Вы теперь получаете такое же поведение во всех браузерах? (Возможно, это просто иерархическое представление XML файла). Если это так, то проблема заключается в вашей таблице стилей XSLT.

    Что делает эта таблица стилей? Если он преобразует XML файл в HTML, он может использовать некоторые несоответствующие (X) HTML-конструкции или стили, которые более старые версии IE допускают, но какой IE9 является более строгим. Если "не распознано" - это проблема с макетом/отображением, настройка таблицы стилей может исправить то, что вы видите в браузере.

Основываясь на том, что вы сказали нам до сих пор, я думаю, что, вероятно, там, где вам нужно начать.

ETA. Ниже приведенный ниже разговор заключался в том, что директива вынуждала к выпуску 4,04 HTML doctype; изменив это на (и установив пару других проблем с преобразованием), исправил проблему в IE9.

Я рад, что проблема была исправлена ​​- в данном конкретном случае. Но реальная причина ошибки в IE9 пока не разглашается, поэтому я сделаю это здесь.

Причина встречного поведения - ошибка в обработке XSLT в IE9 .

Хорошо, хорошо, это не ошибка, а просто плохая отчетность об ошибках. Дело в том, что IE9 применяет MSXML6 по умолчанию, и многое изменилось в отношении MSXML4. Когда в XSLT есть простая ошибка, она не сообщается - IE9, похоже, пропускает обработку шаблонов по умолчанию text(), что приводит к представлению всех текстовых узлов.
Хуже того, когда что-то делается в XSLT, который по умолчанию запрещен в MSXML6, происходит то же самое. Итак, что запрещено по умолчанию в MSXML6? Много! Например, применение Jscript. И DTD. И функция document() не будет работать.

В вышеприведенном случае можно подозревать, что текст, показанный на рисунке (который, очевидно, исходит от применения шаблонов по умолчанию), свидетельствует о наличии ошибки в xslt - ожидании обнаружения с помощью хороших инструментов. Но это поведение IE9 не так явно связано с xslt, когда нет текста в xml-части открытого файла (то есть, когда сам xslt поставляет все обрабатываемые данные, например, импортируя xml файлы во время выполнения или данные в xml, что xslt-процессы - все в атрибутах и ​​nodenames). Вы просто должны знать...

Вы можете увидеть сообщение об ошибке за всем этим, если вы перейдете к инструментам разработчика, нажав F12 (или выберите его в меню "Инструменты"). В подэкране инструментов разработчика выберите Script Меню и загрузите свою страницу сейчас. Вы увидите, что справа, на консоли появится сообщение об ошибке:
XSLT8690: XSLT processing failed.
Когда эта ошибка возникает, отображаются только текстовые узлы в xml (поэтому для пустого корня xml node страница будет пустой).
Я могу найти только одну ссылку на эту ошибку в Интернете: http://www.wikistep.org/bugzilla/show_bug.cgi?id=4140 .

Обратите внимание, что когда вы выбираете "вид совместимости", нажав кнопку рваной страницы рядом с кнопкой обновления (которая не всегда доступна, другая -minor-ошибка IE9), страница возвращается к отображению IE8 и будет в порядке опять же - ну, конечно, кроме любых ошибок в xslt, конечно, но MSXML 4.0 не имеет всех этих ограничений, которые по умолчанию имеет MSXML 6.0. Это безопаснее, конечно, но очень раздражает.

Обратите внимание, что, выбирая представление совместимости, часть сайта файла url добавляется в список сайтов, для которых автоматически применяется вид совместимости.
Чтобы воссоздать проблему, вам нужно будет удалить сайт из этого списка, нажав Alt, чтобы открыть меню, выбрать инструменты/параметры просмотра совместимости и удалить сайт из списка, прежде чем повторять попытку.
Также обратите внимание, что трюк применения представления совместимости не всегда исправить: когда, например, xslt вызывает встроенный javascript, содержащий классы, недоступные в версии Jscript IE8, xslt также не будет отображаться в представлении совместимости.

The W3C Recommendation “Associating Style Sheets with XML documents” doesn"t define the case of embedded style sheets, although it seems a reasonable extrapolation to allow URL fragments (starting with a “#”). At this time, early 2006, there are still unsolved problems and there is no published specification. The problems are as follows:

  1. Because the embedded style sheet is not downloaded separately from the server, the server cannot tell the browser what the format of the style sheet is. Therefore, the type attribute is required in this case. It is undefined what happens if the attribute is omitted: is the style sheet ignored? is it assumed to be CSS? is there some algorithm to determine the language?
  2. In most XML-based formats, a fragment identifier identifies a complete element, not the contents of an element. But a style sheet that starts with
    is not correct CSS, so it seems there needs to be an extra rule that a fragment identifier used in a style sheet PI points to the contents of an element, not to the element itself.
  3. Similarly, it is undefined what happens if there are child elements inside the element that is pointed to. Does the style sheet consist of all the contents of all the elements concatenated? the contents of just the first element? or is this an error and is the whole element ignored?
  4. In the example above, the URL pointed into the document itself. The fact that the browser is able to look at that URL at all indicates that it knows how to parse XML and is probably capable of finding the indicated style element. But now consider a URL that points to a fragment of an external document. In order to succesfully retrieve the style sheet, the browser must first download and parse the external document and then extract and parse the style sheet. But the type attribute only gives the type of one of the two and thus the browser cannot know if it is able to use the style sheet. It is not even defined whether the type attributes gives the type of the external document or of the style sheet embedded in it.

Возрадуйтесь, дети мои, ибо пришёл я к вам с миром и богатыми дарами. Нет, я не принёс вам того, чего вы не видели. И даже не принёс того, чего вы не имели. От чистого сердца вручаю вам то, что всегда лежало у вас под ногами, но вы не замечали того, брезгливо перешагивая, пробегая мимо по своим, несомненно самым важным, делам.

Константы! Да, ваши чаяния достигли моих ушей, пробрались в глубины души и вырвали наружу эти прекрасные создания, позволяющие синхронно менять связанные значения в разных частях файла.

Примеси! Я же знаю, вы так устали без наследования. Приходится внедрять лишние классы в элементы или даже, переходить на тёмную сторону силы - копипастить по чёрному.

Отныне! Ваша душа будет чиста как у младенца. Руки в золоте как у царевичей. Дети послушными и приветливыми.









"margin: 0; text-align: center;"
>

]>< css >< body >

html {
background: &color.main;;
margin: 0;
padding: &width.padding;pt;
}
h1 { &mixin.header;
border: &width.border;pt solid &color.add;;
padding: &width.padding;pt;
font-size: 32pt;
color: &color.add;;
line-height: 1em;
text-overflow: ellipsis;
overflow: hidden;
}
p { &mixin.header;
font-size: 16pt;
color: &color.main;;
background: &color.add;;
padding: 0 &width.border;pt &width.border;pt;
font-style: italic;
border-bottom: &width.decor;pt dashed &color.main;;
}


Да пребудет с вами мир и понимание!

Вместе с документами XML тоже можно применять таблицы стилей CSS. Для этого в язык XML введена инструкция по обработке stylesheet, которая используется так, как показано в листин­ге 8.4.

Листинг 8.4. Документ XML, использующий таблицу стилей CSS

TpyflOBoii floroBop

Иванов Петр Сидорович

01.07.03

Всякий браузер, "понимающий" XML, например Mozilla или Internet Explorer 6.x, покажет приведенный в листинге 8.4 документ в соответствии со стилями, записанными в файле xmlcontractcss.

Таблица стилей, включенная в файл xmlcontract.css, оформляется по прави­лам CSS и может выглядеть так, как показано в листинге 8.5.

Листинг 8.5. Таблица стилей для документа XML

date, period { margin: 0.5em; }

Хотя таблицы стилей CSS и можно использовать в XML, но реализация стилей для документов XML должна быть другой. Как видно из приведен­ных примеров, синтаксис CSS весьма оригинален и никак не похож на син­таксис XML. Кроме того, стили CSS определяют способы показа документа HTML в окне браузера, его визуализацию, а язык XML выявляет структуру документа, ничего не говоря о его представлении в виде, удобном для чте­ния. Поэтому в технологии XML для записи стилей был разработан специ­альный язык XSL - одна из реализаций XML.

Язык описания стилей XSL

Таблицы стилей для документов XML записываются при помощи специаль­но сделанной реализации языка XML, названной XSL (XML Stylesheet Language). В то время, когда писалась эта книга, действовала первая версия XSL, изложенная в рекомендации "Extensible Stylesheet Language (XSL). Version 1.0". Она опубликована на Web-странице http://www.w3.org/TR/xsl/.

Язык XSL, как и язык XPath, представляет документ в виде дерева. Процес­сор языка XSL преобразует это дерево, руководствуясь таблицей стилей, и форматирует его для вывода в окно браузера, на принтер, экран проектора или на какое-то другое устройство. Таким образом, обработка проходит два этапа: преобразование дерева документа (XML transform) и форматирование (formatting) дерева, полученного после преобразования.

Первый этап - этап преобразования - может быть достаточно сложным и кардинально поменять структуру дерева: изменить уровни вложенности, удалить или добавить новые узлы, создать оглавление, предметный указа­тель, индекс. Результат преобразования может стать новым самостоятель­ным документом или даже несколькими документами. Таблица стилей, по которой идет преобразование, содержит правила, состоящие из двух частей: образцов (patterns) для отбора узлов, предназначенных для преобразования, и шаблонов (templates) или конструкторов (sequence constructors) для по­строения преобразованных узлов.

Второй этап - этап форматирования - абстрагируется от конечного уст­ройства, хотя может выполняться непосредственно в нем, например, в брау­зере, пейджере, принтере, проекторе. Форматирование формулируется в терминах классов и объектов. Под объектами форматирования FO (for­matting objects) понимаются узлы дерева, а под их классами - некие конеч­ные структуры: страницы, абзацы, таблицы, списки. Таблица стилей опре­деляет правила форматирования (formatting properties). По этим правилам строится дерево, но уже не дерево узлов, а дерево геометрических областей (area tree), на которые разбивается документ, и определяются их характери­стики: размеры, цвет, шрифт.

Вскоре после выхода рекомендации языка XSL стало ясно, что преобразо­вание документа XML - это самостоятельная и независимая задача, кото­рую можно выполнять не только для приведения их к одному стилю, но и для многих других целей. Например, можно преобразовать документ XML в документ HTML, XHTML или даже в документ PDF. Можно обновить документ, изменив некоторые узлы, или разделить его на несколько доку­ментов.

Поэтому преобразование документов XML было выделено в отдельную об­ласть исследования и описано отдельным языком XSLT (XSL Transfor­mation), первая версия которого изложена в рекомендации "XSL Transfor­mation (XSLT). Version 1.0". Эта версия рекомендации, действующая на вре­мя написания данной книги, расположена по адресу http://www.w3.org/TR /xslt. Ее русский перевод, сделанный Радиком Усмановым, можно посмот­реть в нескольких местах Рунета, например, по адресу http://www.online.ru /it/helpdesk/xslt01.htm.

После выделения преобразований в отдельный язык XSLT первоначальная рекомендация языка XSL была переработана, сейчас основной акцент в ней сделан на форматировании, поэтому ее часто называют рекомендацией "XSL-FO". Мы рассмотрим форматирование в следующей главе, а в этой займемся преобразованием документов XML с помощью языка XSLT.