Атрибут xmlns в HTML

Содержание

Что делает атрибут xmlns?

Валидация требует, чтобы я ее установил, но почему? Мне нравится думать, что код в моем документе xhtml что-то делает.

Атрибут xmlns указывает пространство имен xml для документа.

Это в основном помогает избежать конфликтов пространства имен между различными XML-документами, если, например, разработчик микширует XML-документы из разных xml-приложений.

Пример этого (также с веб-сайта W3):

XML-данные для определения таблицы html:

XML-данные для определения информации о кофейном столике

Здесь есть два элемента таблицы, которые могут вызвать конфликт. Чтобы исправить это, вы можете добавить пространство имен, чтобы указать, какая часть информации определяет таблицу html и которая содержит информацию о журнальном столике:

Представьте, что мы оба определили схемы xlm, которые включают тег foobar. Как бы вы различали если оба используются в одном документе? Ответ — мы помещаем их в разные пространства имен. И то, что xmlns для Он похож на java-пакеты.

Когда XHTML-документ служит как text/html, как обычно, атрибут xmlns ничего не делает.

Когда документ XHTML обслуживается типом содержимого XML, атрибут определяет пространство имен по умолчанию для элементов. В этом случае практическое воздействие заключается в том, что если атрибут опущен, ни один элемент не имеет своего значения HTML — все элементы принимаются как чистый XML, а это означает, что они не имеют особого поведения и не имеют форматирования по умолчанию, и этот документ является бесполезным, он не воспринимается как HTML вообще.

Посмотрите другие вопросы по меткам html validation xhtml или Задайте вопрос

IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

Конфликты в XML. Пространство имен в XML. Способы именования пространства имен в XML. Как использовать HTML теги в XML документах

Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Сегодня я продолжу рубрику Заметки о XML и XLST. И хочу поговорить о пространстве имен в XML, что такое пространство имен и для чего оно используется, так же затрону тему конфликта имен в XML документе и как бороться с этим явлением, поговорим о том как задать пространство имен в XML документе, сразу скажу, что есть два способа задания пространства имен, первый при помощи атрибута xmlns, а второй при помощи префиксов, посмотрим различие между двумя этими способами. Поговорим о рекомендованных способах именования пространства имен в XML, их так же два. Первый заключается в использование URN, а второй в использование URL. Разберемся, какой из способов, когда и как применяется. Так же мы поговорим о том, как задать пространство имен XML атрибутам. А так же разберемся как можно использовать HTML теги в XML документах и что для этого нужно сделать.

Конфликты в XML документах. Пространство имен в XML документах

Очень важным моментом в XML является конфликт имен тэгов, ведь имена тегов мы придумываем сами, и нет гарантии, что кто-нибудь другой в своем проекте не будет использовать точно такие же имена для своих тегов, как и мы. Например, у меня есть книжный магазин и решил я записывать название книг внутрь тега … , а какой-нибудь Василий Иванович Пупкин использует этот тег для своих каких-то целей, к примеру, продает он аудио пластинки и внутрь тега записывает название фильмов. И все это будет хорошо работать, пока не решим мы с Пупкиным объединиться и вместе продавать книги и пластинки. Получается ситуация, в которой один и тот же XML элемент имеет одинаковое имя, но имеет разный смысл. И наступает процесс именуемый конфликт имен.

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

Если до сих пор непонятно, то можно привести более конкретный пример – файловая система. Все наверное знают, что в одной папке не может находиться два файла с одинаковым названием и расширением. Но можно ведь создать две папки, в одну папку поместить файл document.xml и в другую папку поместить файл document.xml и эти два файла будут прекрасно существовать, и работать, имея различное содержание. Эти два файла для операционной системы будут разные так как она учитывает не только имя файла, но и путь к этому файлу, то есть для операционной системы имя файла состоит из непосредственного имени файл плюс полный путь к этому файлу. Вот как раз из-за этого пути к файлу имена становятся разными и не мешают друг другу.

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

Рекомендации w3.org при именовании пространства имен

Да, w3.org попыталась как-то ограничить процесс придумывания имен для пространства имен и рекомендует нам консорциум два способа именования пространства имен. Обратите внимание, что это не стандарт, а просто рекомендация. Если вы решили дать своему пространству имен какое-то имя, ну например moe-prostranstvo-imen, то начинать это имя рекомендуется с последовательности urn:, а затем уже имя пространства.

Атрибут xmlns в HTML

На сайте htmlbook пишут, что на странице XHTML в теге требуется указывать обязательный атрибут xmlns со значением http://www.w3.org/1999/xhtml.
Так ли это? Спрашиваю, потому что вижу некоторые страницы некоторых сайтов без этого атрибута.

И что значит «xmlns определяет пространство имен — так называется набор имен всех элементов и атрибутов, чтобы обеспечить их уникальность в пределах XHTML-документа»? Что это значит, не пойму, каких имен элементов и атрибутов, что за уникальность?

Konceptovskiy
Посмотреть профиль
Найти ещё сообщения от Konceptovskiy

Это обязательный атрибут в XHTML. Написано же там. Некоторые и теги не закрывают и значения атрибутов пишут без кавычек и много чего ещё другого.

XSLT первый шаг

1. Введение

Не прошло и трёх лет с тех пор, как у меня зародилась мысль о том, что пора изучать XSLT -))). Мысль зародилась, а везде ещё стоял PHP 4 и зверствовал Salbotron , который, мягко говоря, не отличался высокой производительностью. Да и редко какой браузер мог похвастаться поддержкой этого самого XSLT. По этим соображениям изучение столь перспективного направления я отложил до лучших времён. На данный момент можно смело заявить, что эти времена настали, поскольку вышел PHP 5 с поддержкой XSLT и сносной объектной моделью, а все топовые браузеры уже сами уверенно держат преобразования, только подавай XML. :)

Важные ссылки по теме, первоисточники:

  • http://w3c.org — комитет по разработке и продвижению стандартов всемирной паутины Internet. На данный момент он является первоисточником практически всех веб-ориентированных стандартов и рекомендаций.
  • http://www.w3.org/TR/xml — спецификация расширяемого языка разметки XML, который является основой современного веба. На момент написания статьи доступна пятая редакция версии 1.0, а также вторая редакция версии 1.1.
  • http://www.w3.org/TR/xml-names — спецификация использования пространств имён в XML.
  • http://www.w3.org/TR/xpath — спецификация по использованию языка поиска частей XML-документа XPath.
  • http://www.w3.org/TR/xsl/ — спецификация расширенного языка стилей XSL.
  • http://www.w3.org/TR/xslt — спецификация языка преобразований XSLT.
  • http://validator.w3.org/ — валидатор HTML.
  • http://www.w3.org/TR/xhtml1/ — спецификация XHTML1.0.

Переводы на русский язык:

Для лучшего понимания всего происходящего я рекомендую читать спецификации в следующем порядке:

  1. XML (это основа!)
  2. пространства имён (механизм разнородного XML-кода в одном файле)
  3. XPath (язык выборки элементов из дерева структуры)
  4. XSLT (преобразования)
  5. XHTML (то, к чему нужно стремиться)

Особо пытливые могут также уделить внимание расширенному языку стилей XSL.

2. Валидный XHTML

Что такое валидный XHTML? В первую очередь, это XML-документ, который должен соответствовать спецификации XML. Во-вторую, почти обычная HTML-страница, к которой все привыкли.

Почему нужен именно XHTML? Исключительно из соображений совместимости и кросс-браузерности. Страница в XHTML будет с большей вероятностью отображаться корректно в популярных браузерах, чем обычный HTML.

Для рядового клепателя страниц словосочетание XML-документ должно означать следующее:

  1. Документ содержит объявление XML-документа в самом начале страницы:
  2. Документ содержит один корневой элемент, в котором находятся все остальные.
  3. Все элементы (тэги) должны иметь закрывающую часть (
    ,

).

  • Атрибуты всегда имеют значение, которое обязательно указывается в кавычках (одинарных или двойных). Например, «radio» disabled= «disabled» /> .
  • Управляющие символы & , и > всегда должны маскироваться. Например, «?a=1&b=2» > & . Исключение составляет только , внутри которого спецсимволы можно не маскировать.
  • Также сам XHTML обязывает выполнять следующие условия:

    1. Документ должен объявлять пространство имён, в рамках которого будут использоваться элементы HTML.
    2. Документ должен объявлять DOCTYPE перед корневым элементом и указывать в нём один из типов XHTML и соответствующий DTD.

    Пример простого документа XHTML1.0:

    И так обо всём по порядку.

    Объявление XML-документа, в котором указывается его версия и кодировка.

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

    Объявление типа документа и его схемы.

    Для XHTML 1.0 есть три типа — Strict (строгое соответствие рекомендациям W3C), Transitional (переходный тип) и Frameset (использование фреймов). Для каждого из них предусмотрен отдельный DTD.

    Объявление пространства имён и используемого языка.

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

    Три версии XHTML1.0 предназначены для лучшей обратной совместимости:

    • Strict — обеспечивает наибольшее соответствие рекомендациям W3C со стороны браузеров. Однако и сам HTML-код должен следовать этим рекомендациям.
    • Transitional — менее строгое соответствие, которое заставляет браузер вести себя так, как если бы это был обычный HTML-документ.
    • Frameset — позволяет использовать фреймы.

    Помимо XHTML1.0 на данный момент доступен XHTML1.1:

    XHTML1.1 по сути является тем же XHTML1.0 Strict и призван вытеснить другие версии XHTML1.0. Однако, по сравнению с XHTML1.0 Strict, у него есть ряд отличий:

    1. Удалён атрибут lang , его роль выполняет xml:lang . (Модуль [ XHTMLMOD ])
    2. Для элементов a и map вместо атрибута name нужно использовать атрибут id . (Модуль [ XHTMLMOD ])
    3. Доступен набор элементов ruby . (Модуль [ RUBY ])

    Итак, если вам нужна наибольшая кросс-браузерность и совместимость с рекомендациями W3C, то XHTML1.1 самое оно!

    Из этих соображений результатом моих преобразований будет именно XHTML1.1.

    3. XSLT-преобразования

    Что такое XSLT? Это язык преобразований XML-документа, который был разработан как часть расширенного языка стилей (XSL).

    Зачем нужен XSLT? Он позволяет реализовать схему, при которой данные хранятся отдельно, а их представление отдельно. То есть, один XML-документ преобразуется с помощью другого XML-документа (XSL, в котором находятся XSLT-шаблоны) в конечный документ. Результатом может быть XML, HTML или текстовый документ любого формата.

    Для того, чтобы воспользоваться XSLT-преобразованиями, в первую очередь нужно сформировать правильный стиль XSL и подключить его к XML-файлу.

    Валидным XSL-документом является XML-документ, у которого задано пространство имён xsl и присутствует корневой элемент stylesheet. В самом простом случае стиль может выглядеть, например, так:

    Этот стиль не содержит каких-либо явных определений шаблонов или других элементов XSL. Однако, его уже можно использовать. Чтобы посмотреть результат, достаточно сформировать произвольный XML-документ и подключить к нему этот стиль:

    За подключение стиля отвечает строка:

    Если файлы text.xml и test.xsl созданы и находятся в одной папке, то с помощью любого XSLT-парсера можно преобразовать исходный test.xml в результирующий документ. В качестве парсера могут выступать все популярные браузеры (IE5+, FF2+, Opera9+ и другие), а также модули в языках программирования, например, в PHP. Если вы используете браузер, то достаточно открыть test.xml, и он сразу отобразит примерно такой результат:

    При этом кодировка результата будет UTF-8, несмотря на то, что исходный документ был сформирован в windows-1251. К сожалению, браузеры обычно не позволяют просмотреть код результирующего документа, но модуль XSLT в PHP5 даёт возможность передать результирующий код в переменную, которую можно сохранить в файл. Поэтому, используя PHP, я приведу исходный код результирующего документа:

    Этот код не является валидным XML-документом и тем более XHTML1.1. Для того, чтобы сформировать нужный код, я усложню исходный XSL-стиль и добавлю туда необходимые шаблоны и преобразования. При этом исходный XML-документ останется без изменений.

    В качестве примера я приведу XSL-стиль, который при помощи XSLT будет выводить список атрибутов исходного XML-документа с их значениями, при этом будет формироваться валидный XHTML1.1. Итак, стиль:

    Чтобы понять, как он работает, я распишу каждое действие отдельно:

    Документ сформирован в кодировке windows-1251, о чём сообщается в атрибуте encoding. Версию XML-документа желательно всегда указывать, это рекомендация W3C.

    Затем идёт объявление корневого элемента, стиля:

    Обязательным атрибутом является определение пространства имён xsl через атрибут xmlns:xsl= «http://www.w3.org/1999/XSL/Transform» .

    Следующим шагом в корневом элементе stylesheet объявляется, каким образом нужно формировать результирующий документ:

    • method= «xml» — метод вывода документа. Результирующий документ будет в формате XML.
    • encoding= «windows-1251» — кодировка результирующего документа.
    • omit-xml-declaration= «no» — пропускать или нет начальное объявление XML-документа ( ). Может иметь значение «yes» или «no» (актуально только для html).
    • indent= «yes» — формировать отступы согласно уровню вложенности. Может иметь значение «yes» или «no».
    • media-type= «text/xml» — MIME-тип результирующего документа (используется только для метода вывода html).
    • doctype-public= «-//W3C//DTD XHTML 1.1//EN» — тип результируюшего документа (DOCTYPE)
    • doctype-system= «http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd» — ссылка на DTD

    Если метод вывода объявлен html, то значения атрибутов encoding и media-type будут подставлены в заголовок страницы ( . ) посредством метатега.

    Объявление основного шаблона:

    Именно этот XSLT-шаблон соответствует корню исходного дерева и будет вызван первым для преобразования. Атрибут match принимает значения, которые должны соответствовать языку поиска элементов XPath.

    Остальные шаблоны, если таковые имеются, должны подключаться из этого шаблона при помощи средств XSLT.

    Формирование XHTML-страницы. Оно начинается с элемента , у которого указано пространство имён xhtml:

    Атрибут xmlns= «http://www.w3.org/1999/xhtml» указывает на пространство имён xhtml, которое будет применено по умолчанию к этому элементу и всем дочерним элементам, у которых оно не задано явно.

    Атрибут xml:lang= «ru» указывает на язык, в котором сформирована страница (будущая).

    Эта часть стиля была нужна для формирования атрибутики валидного XHTML1.1 кода.

    Теперь что касается XSLT-преобразований:

    Вставка простого текста:

    Текст «Мой список:» будет подставлен в тег

    Организация цикла по выборке:

    Атрибут select принимает выражение XPath, на основе которого делает выборку. Если выборка вернула список узлов, то начинает работать цикл по каждому элементу.

    В данном случае выборка вернёт список атрибутов для этого (корневого) и всех дочерних элементов.

    В данном случае проверяется на чётность позиция элемента в списке выборки. Если тест возвращает true (порядковый номер элемента чётный), то срабатывает содержимое этого элемента.

    Управление атрибутами вышестоящего элемента:

    В данном случае, если позиция элемента чётная (определяется вышестоящим if), то в стиль элемента
    будет прописан серый цвет фона.

    Вывод значений элемента:

    Этот код подставит в вышестоящий элемент строку, собранную из имени текущего элемента и его значения. Содержимое атрибута select соответствует XPath.

    Вывод ссылки на разработчика парсера XSLT:

    Этот небольшой код XSLT формирует ссылку на разработчика парсера XSLT. Во многих случаях она будет разная и содержать разные значения.

    Результатом обработки этого стиля ( test.xsl ) станет такой код:

    Этот код соответствует стандарту XHTML1.1 и был сформирован на основе исходного XML-документа. Для проверки можно воспользоваться валидатором от W3C, который расположен по адресу http://validator.w3.org/.

    В браузере этот код выглядит примерно так:

    13.02.2014, 16:36 #2
    IE 6 FireFox 3 Opera 9.02

    4. Приложение

    Ссылки на исходный код

    Постоянный адрес статьи //anton-pribora.ru/articles/xml/xslt-first-step/. /Автор: Прибора Антон Николаевич, 2009 год/

    Использование PHP5 для обработки XSLT

    Для получения результирующего документа при помощи PHP5 я использовал такой код:

    Дополнительную информацию по использованию XSLT в PHP5 можно найти по адресу http://ru2.php.net/manual/ru/book.xslt.php.

    Мысли вслух

    «Товарищи, мы стоим на краю огромной пропасти! И я предлагаю сделать большой, решительный шаг вперёд!»

    © 2020 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.

    HTML в профилях/Базовый профиль

    В данном разделе мы рассмотрим элементы и атрибуты, без которых на практике не обходится ни один документ HTML. Наличия трех из этих элементов требует действующая версия спецификации, в то время как остальные средства необходимы для несения непосредственно «полезной нагрузки» документа.

    Мы также рассмотрим атрибут dir , используемый для явного указания направления письма (слева-направо или справа-налево), что особенно важно для воспроизведения документов, содержащих текст на нескольких языках.

    Содержание

    Пример документа [ править ]

    Вновь обратимся к простейшему примеру документа, для наглядности приводимому здесь в XHTML-записи.

    Пример. Привет, мир!

    Это — пример документа HTML5.

    Обязательные элементы [ править ]

    Корневым элементом документа является элемент html . Этот элемент, в свою очередь, обязан содержать два (и только два) дочерних элемента: [1]

    1. head — метаданные (или «заголовок») документа в целом;
    2. body — «тело».

    Кроме того, данный элемент может содержать (незначимые) пробельные символы, комментарии, а также ряд атрибутов, три из которых ( lang , dir , xmlns ) рассмотрены ниже.

    Атрибуты lang и xml:lang [ править ]

    В качестве пожелания, спецификация предлагает всегда указывать атрибут lang для элемента html , определяя тем самым основной язык документа согласно BCP 47 (в простейшем случае — используя код языка ISO 639-1.) [2] [3]

    Свойство языка наследуется дочерними элементами и может быть переопределено на любом уровне вложенности явным указанием атрибута lang .

    В числе прочего, такое указание языка может способствовать использованию речевых синтезаторов и программ автоматизированного перевода, [1] корректной работе Web-поиска, а равно и правильному выбору шрифтовых вариантов некоторых букв ( cf. : серб. буква и рус. буква.)

    Спецификация XML предусматривает для указания языка атрибут xml:lang . [4] Использование этого атрибута может быть полезно из соображений совместимости с инструментами обработки XML, не реализующими особо поддержку HTML5. Если при этом также используется и атрибут lang , его значение обязано совпадать с таковым для xml:lang . [2]

    С целью обеспечения некоторой «совместимости» между представлениями HTML и XHTML, HTML5 допускает использование атрибута xml:lang также и в HTML-представлении. В этом случае, данный атрибут обязан дублировать атрибут lang элемента; использование xml:lang отдельно от lang , или с отличным значением, не допускается. [2]

    Атрибут dir [ править ]

    Наряду с атрибутом lang , для корректного воспроизведения многоязычных текстов также важен атрибут dir , определяющий направление письма для содержания элемента, и допускающий три возможных значения: [5]

    • ltr — направление письма для данного элемента — слева-направо (от англ. left-to-right );
    • rtl — справа-налево (от англ. right-to-left ); применимо для языков на основе арабского письма, иврита, etc. ;
    • auto — направление письма для данного элемента следует определить автоматически, независимо от направления письма для родительского элемента; (по-умолчанию, направление письма наследуется элементами-потомками.)

    Как и в случае атрибута lang , направление письма наследуется дочерними элементами и может быть переопределено на любом уровне вложенности явным указанием атрибута dir .

    Спецификация HTML5 предлагает использовать вариант auto только в исключительных случаях, когда направление письма содержащегося в элементе текста действительно не может быть установлено сколь угодно достоверно. [5]

    Атрибут xmlns [ править ]

    При использовании представления на основе XML (XHTML), элементы HTML должны быть отнесены к соответствующему пространству имен, чего обычно можно достичь используя атрибут xmlns в форме xmlns=»http://www.w3.org/1999/xhtml» для корневого элемента, как показано в примере выше. [6] [7]

    В представлении HTML данный атрибут не используется и допускается спецификацией в том и только том случае, когда имеет указанное значение. [6]

    Элемент title [ править ]

    Обязательный элемент head должен, в свою очередь, содержать элемент title , содержащий заглавие документа. Этот элемент может присутствовать в документе лишь в единственном экземпляре, и только как дочерний для элемента head . Содержанием данного элемента может быть только текст, — вложенные элементы не допускаются. [8]

    В тех случаях, когда заглавие может быть определено из контекста передачи документа (как, например, при передаче документа электронной почтой), спецификация позволяет не указывать данный элемент. [8] На практике, однако, существующие системы проверки действительности документов HTML [9] [10] всегда требуют наличия данного элемента.

    Элемент p [ править ]

    Основным элементом разметки текста является элемент p (от англ. paragraph — «абзац».) [11]

    В рамках рассматриваемого профиля, тело документа состоит из произвольного количества элементов p , каждый из которых может содержать текст на произвольном (задаваемом атрибутом lang) языке, как показано в примере ниже. Отметим, что спецификация HTML5 также включает критерии обнаружения неявных абзацев — задаваемых без использования элемента p . [12] В данном разделе, однако, мы не будем рассматривать данную возможность.

    В тех случаях, когда требуется переопределить язык для участка текста меньшего, чем абзац в целом, можно применить один из элементов, описываемых в разделе Ссылки и акценты.

    Пример. Привет, мир! — на разных языках

    Управление пространствами имен в XML-документе Managing Namespaces in an XML Document

    Пространства имен XML связывают имена элементов и атрибутов в XML-документе с пользовательскими и стандартными URI. XML namespaces associate element and attribute names in an XML document with custom and predefined URIs. Для создания этих связей определяются префиксы для URI пространства имен, с помощью которых затем квалифицируются имена элементов и атрибутов в XML-данных. To create these associations, you define prefixes for namespace URIs, and use those prefixes to qualify element and attribute names in XML data. Пространства имен предотвращают конфликты имен элементов и атрибутов, а также позволяют обрабатывать и проверять элементы и атрибуты с одним и тем же именем. Namespaces prevent element and attribute name collisions, and enable elements and attributes of the same name to be handled and validated differently.

    Объявление пространств имен Declaring namespaces

    Пространство имен для элемента объявляется с помощью атрибута xmlns: : To declare a namespace on an element, you use the xmlns: attribute:

    где — это префикс пространства имен, а — это URI, который определяет это пространство имен. where is the namespace prefix and is the URI that identifies the namespace. После объявления префикса его можно использовать для уточнения имен элементов и атрибутов в XML-документе и связывания их с URI-кодом пространства имен. After you declare the prefix, you can use it to qualify elements and attributes in an XML document and associate them with the namespace URI. Так как этот префикс пространства имен используется во всем документе, он должен быть коротким. Because the namespace prefix is used throughout a document, it should be short in length.

    В данном примере определяются два элемента BOOK . This example defines two BOOK elements. Первый элемент квалифицируется префиксом mybook , а второй — префиксом bb . The first element is qualified by the prefix, mybook , and the second element is qualified by the prefix, bb . Каждый префикс связан с разными URI-кодами пространств имен: Each prefix is associated with a different namespace URI:

    Чтобы указать, что элемент принадлежит к определенному пространству имен, добавьте к нему префикс пространства имен. To signify that an element is a part of a particular namespace, add the namespace prefix to it. Например, если элемент Author принадлежит пространству имен mybook , то он объявляется как . For example, if a Author element belongs to the mybook namespace, it is declared as .

    Область видимости объявления Declaration scope

    Пространство имен действует от точки объявления до конца элемента, где оно было объявлено. A namespace is effective from its point of declaration until the end of the element it was declared in. В этом примере пространство имен, определенное в элементе BOOK , не применяется к элементам, которые находятся за пределами элемента BOOK , например к элементу Publisher : In this example, the namespace defined in the BOOK element doesn’t apply to elements outside the BOOK element, such as the Publisher element:

    Пространство имен можно использовать только после его объявления, однако это не значит, что объявление пространства имен должно располагаться в самом начале XML-документа. A namespace must be declared before it can be used, but it doesn’t have to appear at the top of the XML document.

    Если в XML-документе используются несколько пространств имен, можно определить одно из них как пространство по умолчанию, чтобы упростить чтение документа. When you use multiple namespaces in an XML document, you can define one namespace as the default namespace to create a cleaner looking document. Пространство имен по умолчанию объявляется в корневом элементе и применяется ко всем элементам в документе, которые не квалифицированы. The default namespace is declared in the root element and applies to all unqualified elements in the document. Пространства имен по умолчанию применяются только к элементам и не применяются к атрибутам. Default namespaces apply to elements only, not to attributes.

    Для использования пространства имен по умолчанию не указывайте префикс и двоеточие в объявлении элемента: To use the default namespace, omit the prefix and the colon from the declaration on the element:

    Управление пространствами имен Managing namespaces

    В классе XmlNamespaceManager хранится коллекция URI пространств имен и их префиксов. С его помощью можно искать, добавлять и удалять пространства имен из этой коллекции. The XmlNamespaceManager class stores a collection of namespace URIs and their prefixes, and lets you look up, add, and remove namespaces from this collection. В некоторых контекстах этот класс необходим для повышения производительности обработки XML. In certain contexts, this class is required for better XML processing performance. Например, класс XsltContext используется классом XmlNamespaceManager для обеспечения поддержки XPath. For example, the XsltContext class uses XmlNamespaceManager for XPath support.

    Диспетчер пространств имен не выполняет проверку пространств имен, так как предполагается, что префиксы и пространства имен уже проверены и соответствуют спецификации W3C для пространств имен. The namespace manager doesn’t perform any validation on the namespaces, but assumes that prefixes and namespaces have already been verified and conform to the W3C Namespaces specification.

    Интерфейс LINQ to XML в C# и Visual Basic использует XmlNamespaceManager для управления пространствами имен. LINQ TO XML in C# and Visual Basic don’t use XmlNamespaceManager to manage namespaces. Дополнительные сведения об управлении пространствами имен в случае использования LINQ to XML см. в документации по LINQ, в разделах Работа с пространствами имен XML (C#) и Работа с пространствами имен XML (Visual Basic). See Working with XML Namespaces (C#) and Working with XML Namespaces (Visual Basic) in the LINQ documentation for information about managing namespaces when using LINQ to XML.

    Вот некоторые из задач по управлению и подстановке, которые можно выполнить с помощью класса XmlNamespaceManager. Here are some of the management and lookup tasks you can perform with the XmlNamespaceManager class. Дополнительные сведения и примеры см. в разделах справочника, посвященных каждому методу или свойству. For more information and examples, follow the links to the reference page for each method or property.

    HTML — это не XML

    Многие считают, что html — это подмножество xml. И, соответственно, пишут код в том же стиле. Но это не так, между этими разметками есть различия. Есть некоторые правила xml, которые неприменимы в html.

    Я рассмотрю три основные ошибки тех, кто пытается писать html в стиле xml.

    1. Самозакрывающиеся теги

    Первая и самая распространенная ошибка. Я много раз видел, как кто-то пытается закрыть html тег с
    помощью /> Например, или
    .
    Но даже если элемент не имеет содержимого, все равно так писать нельзя. Потому как в отличие от xml
    в html закрывать теги с помощью /> запрещено. Тег можно закрывать только явно, с помощью . Это не просто хороший стиль. Браузер воспринимает символ «/» внутри элемента как ошибку и игнорирует его. Элемент просто не закрывается.

    Давайте посмотрим, как браузер обрабатывает такие теги. Выполним следующий html:

    Все вроде бы нормально, но выглядеть это будет так:

    Как видно, браузер не закрыл элемент, завершающийся />. Его нужно было закрывать при помощи явного

    И кстати, даже серьезные компании, бывает, пишут неправильно.

    2. Закрытие тегов

    Хорошо, теги нужно явно закрывать. Значит, нужно всегда писать ? Нет. Не все так просто. Согласно спецификации в html некоторые теги нужно обязательно закрывать, некоторые необязательно, а некоторые запрещено.

    Приведу примеры:

    • Обязательно нужно закрывать div, span, script, table и footer;
    • Такие теги, как option, li, tr, body можно закрывать, а можно и нет. С точки зрения качества кода, конечно, лучше всегда закрывать теги, но стандарт разрешает не делать этого;
    • А вот некоторые теги, такие как input, br, img и hr закрывать запрещено. Если написать или
      — то это будет невалидный html. Такие теги нужно оставлять незакрытыми.

    Конечно, эти примеры не полные. По каждому отдельному тегу смотрите документацию.

    3. Запись булевых атрибутов

    Как записывать булевы атрибуты в html (такие как checked и disabled)? Те, кто пишет html в стиле xml, случается, записывают их так:
    Так делать не нужно. В html нет значения «true». Стандарт говорит, что если атрибут заявлен в разметке, то его значение уже true.

    Можно выбрать один из трех вариантов записи:

    Я предпочитаю использовать короткий третий вариант, вроде: .

    HTML и XHTML

    XHTML — это HTML, написанный как XML.

    Что такое XHTML?

    • XHTML расшифровывается как EXtensible HyperText Markup Language
    • XHTML почти идентичен HTML
    • XHTML является более строгим, чем HTML
    • XHTML — это HTML-код, определяемый как XML-приложение
    • XHTML поддерживается всеми основными браузерами

    Почему XHTML?

    Многие страницы в Интернете содержат «плохие» HTML.

    Этот HTML-код отлично работает в большинстве браузеров (даже если он не следует правилам HTML):

    Синтаксис CSS, отображение XML-документов в Web

    Таблицы каскадных стилей

    Язык CSS в настоящее время широко используется для отображения HTML-страниц, и с не меньшим успехом может быть использован для отображения XML-документов. Создание таблицы каскадных стилей и связывание её с вашим XML-документом — это один из способов сообщить браузеру, как отображать каждый из элементов XML-документа. XML-документ со связанной таблицей каскадных стилей может быть открыт непосредственно в Internet Explorer. Таблица каскадных стилей представляет собой текстовый файл с расширением .css, который содержит инструкции для форматирования элементов в XML-документе. Простейший пример отображения XML-документа с помощью таблицы каскадных стилей приведён в статье «Синтаксис и основные понятия языка XML, создание валидных документов».

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

    Таблицы каскадных стилей имеют ограничения: они не дают возможности модифицировать или реорганизовывать содержимое XML-документа и не позволяют вам осуществить доступ к атрибутам, примитивам, инструкциям по обработке и другим компонентам XML-документа.

    Таблица стилей состоит из одного или нескольких правил (иногда их называют наборами правил). Правило содержит информацию по отображению определённого типа элемента XML-документа. Правило состоит из селектора и блока объявлений. Пример правила:

    Селектор представляет собой имя типа элемента, к которому относится информация по отображению. За селектором следует блок объявлений, который ограничивается фигурными скобками и содержит одно или несколько объявлений, разделяемых точкой с запятой. Каждое объявление задаёт установку определённого свойства, например такого, как размер шрифта. Объявление состоит из свойства, вслед за которым идёт двоеточие, после которого следует значение данного свойства.

    Таблица стилей может иметь комментарии, которые начинаются с символов /* и заканчиваются символами */. Вы можете использовать комментарии в процессе разработки таблицы стилей, чтобы временно отключить правило или его часть.

    Таблицы каскадных стилей являются нечувствительными к регистру символов. Если вы предполагаете отображать ваш XML-документ с использованием таблицы каскадных стилей, у вас не должно быть типов элементов, имена которых отличаются только регистром одной или нескольких букв.

    Набор свойств, который вы присвоили определённому элементу, действует на все дочерние элементы, вложенные в него. Следующие свойства, однако, являются исключениями и не наследуются дочерними элементами:

    • свойство display
    • свойства, относящиеся к фону (например, background-color)
    • свойство vertical-align
    • свойства размещения текста (например, margin-top)

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

    Вы можете применить одно правило к нескольким элементам, включив все имена элементов в селектор и отделив имена запятыми. Например:

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

    В селекторе вы можете предварить имя элемента именами одного или нескольких элементов-предков (родительский, родительский плюс родительский родителя и т.д.), и правило будет применено только к элементам, которые вложены подобным образом. Селектор, который включает один или несколько элементов-предков, называется контекстуальным (contextual). Остальные селекторы называются родовыми (generic). Например, к такому XML-документу:

    Santa Fe
    New Mexico

    California

    можно применить такую таблицу каскадных стилей:

    CITY STATE

    STATE

    Селектор CITY STATE является более конкретным, и следовательно, имеет приоритет.

    Вы можете использовать специальный атрибут STYLE в вашем XML-документе вместо того, чтобы устанавливать одно или несколько свойств элемента в таблице стилей. Установка свойств с помощью атрибута STYLE имеет наивысший приоритет. Например:

    Для валидных документов вам необходимо объявить атрибут STYLE в DTD, например:

    Вы можете включить в вашу таблицу каскадных стилей другие таблицы каскадных стилей. Вот форма записи директивы @import:

    Здесь «ТаблСтил» — полный или относительный URL файла, содержащего таблицу каскадных стилей, которую вы хотите импортировать. Директива @import должна располагаться в начале таблицы стилей перед правилами. Вы можете поместить несколько директив @import. Основная таблица стилей (файл, в который осуществляется импорт) имеет приоритет перед импортируемыми таблицами стилей. Если директив @import несколько, приоритет имеют более «поздние» таблицы стилей.

    Чтобы связать таблицу каскадных стилей с XML-документом, вы должны вставить в пролог XML-документа зарезервированную инструкцию по обработке xml-stylesheet, например:

    Если браузер не может найти указанный файл таблицы стилей, он отображает текст документа с использованием своего собственного набора свойств. Если XML-документ не связан с таблицей стилей, Internet Explorer отобразит исходный код документа.

    Вы можете включить в XML-документ более одной таблицы стилей, вставив для каждой из них инструкцию по обработке xml-stylesheet в пролог XML-документа. Если отдельные таблицы стилей содержат конфликтующие правила, приоритет имеют правила из последней связываемой с XML-документом таблицы стилей.

    Уровни приоритетов правил таблиц стилей, представленные в порядке от высшего к низшему:

    1. Значение свойства, заданное в атрибуте STYLE конкретного элемента XML-документа.
    2. Значение свойства, заданное в правиле CSS с контекстуальным селектором.
    3. Значение свойства, заданное в правиле CSS с родовым селектором.
    4. Значение свойства, заданное в правиле CSS для ближайшего элемента-предка (для ненаследуемого свойства браузер будет использовать значение по умолчанию).
    5. Значение свойства по умолчанию, либо значение, заданное пользователем браузера.

    Основной принцип приоритетов следующий: браузер отдаёт предпочтение более конкретизированному правилу. Если для определённого свойства установлены конфликтующие значения на одном и том же уровне приоритетов, браузер использует последнюю установку, которую он обработал. Это противоположно правилу, применяемому XML-процессором в случае наличия множественных объявлений атрибутов или примитивов (в этом случае XML-процессор использует первое объявление и игнорирует все последующие).

    В Internet Explorer пользователь может присвоить установке свойств в браузере наивысший приоритет (приоритет перед установкой свойств в таблице стилей), выбрав соответствующие опции в меню «Сервис» — «Свойства обозревателя», вкладка «Общие», кнопка «Оформление».

    Порядок, в котором браузер обрабатывает правила таблицы стилей:

    • Если есть несколько инструкций xml-stylesheet, браузер обрабатывает таблицы стилей в той последовательности, в которой они указаны.
    • Если в таблице стилей используются директивы @import, импортированные таблицы стилей обрабатываются перед таблицей, в которую они импортируются.
    • В таблице стилей правила обрабатываются в том порядке, в котором они записаны.

    Способы установки значений свойств

    Для многих свойств CSS вы должны присваивать значение с использованием предопределённых ключевых слов CSS, например:

    Значение какого-либо свойства в процентах задаёт размер обычно как процент от размера шрифта самого элемента. Исключение составляет свойство font-size, где значение берётся как процент от размера шрифта родительского элемента. Пример задания значения свойства в процентах:

    Задание значений свойств в размерных единицах:

    • cm — сантиметры
    • in — дюймы
    • mm — миллиметры
    • pc — пики
    • pt — пункты

    cm in mm pc pt
    cm 1 0.3937 10 2.3622 28.3465
    in 2.54 1 25.4 6 72
    mm 0.1 0.0393 1 0.2362 2.8346
    pc 0.4233 0.1666 4.2333 1 12
    pt 0.0352 0.0138 0.3527 0.0833 1

    Пример задания значения свойства в размерных единицах:

    Значение какого-либо свойства можно задавать в относительных размерных единицах:

    • em — высота шрифта самого элемента
    • ex — высота строчной буквы х шрифта самого элемента
    • px — размер пикселя на мониторе

    Исключение составляет свойство font-size, где значение «em» или «ex» берётся относительно размера шрифта родительского элемента. Пример задания значения свойства в относительных размерных единицах:

    Значения цветов можно задавать с использованием четырёх форматов:

    Последние три формата задают цвет путём установки относительной интенсивности компонентов красного, зелёного и синего в составе цвета (именно в таком порядке). Таблица соответствия способов задания цвета:

    красный red rgb(255,0,0) #FF0000 rgb(100%,0%,0%)
    коричневый maroon rgb(128,0,0) #800000 rgb(50%,0%,0%)
    светло-зелёный lime rgb(0,255,0) #00FF00 rgb(0%,100%,0%)
    зелёный green rgb(0,128,0) #008000 rgb(0%,50%,0%)
    голубой blue rgb(0,0,255) #0000FF rgb(0%,0%,100%)
    тёмно-синий navy rgb(0,0,128) #000080 rgb(0%,0%,50%)
    светло-жёлтый yellow rgb(255,255,0) #FFFF00 rgb(100%,100%,0%)
    тёмно-жёлтый olive rgb(128,128,0) #808000 rgb(50%,50%,0%)
    светло-голубой aqua rgb(0,255,255) #00FFFF rgb(0%,100%,100%)
    тёмно-голубой teal rgb(0,128,128) #008080 rgb(0%,50%,50%)
    светло-фиолетовый fuchsia rgb(255,0,255) #FF00FF rgb(100%,0%,100%)
    тёмно-фиолетовый purple rgb(128,0,128) #800080 rgb(50%,0%,50%)
    белый white rgb(255,255,255) #FFFFFF rgb(100%,100%,100%)
    чёрный black rgb(0,0,0) #000000 rgb(0%,0%,0%)
    светло-серый silver rgb(192,192,192) #C0C0C0 rgb(75%,75%,75%)
    тёмно-серый gray rgb(128,128,128) #808080 rgb(50%,50%,50%)

    Описание свойств

    СвойствоОписание
    displayУстанавливает способ отображения элемента. Не наследуется дочерними элементами, кроме установки «none». Возможные значения:

    • block — перед и после текста элемента помещается пустая строка (похоже на абзац).
    • inline (по умолчанию) — текст элемента может быть размещён в той же строке, что и предыдущий или последующий текст.
    • none — элемент не отображается.

    font-familyОпределяет имя шрифта (гарнитуру). Если браузер не сможет найти требуемый шрифт, он заменит его на похожий. Если имя шрифта содержит пробелы, заключите его в кавычки:

    Вы можете привести несколько вариантов допустимых шрифтов в порядке приоритета, разделяя их запятыми:

    Вы можете включить в конец списка ключевое слово CSS, указывающее на тип шрифта (имя родового семейства), который вы хотите использовать:

    Перечень родовых семейств шрифтов:

    SerifTimes New Roman
    sans-serifArial
    CursiveZapfChancery
    FantasyCutout
    monospaceCourier New
    font-sizeУстанавливает высоту шрифта. Возможные способы задания значения:

    • Относительно текущего размера шрифта браузера: xx-small , x-small , small (текущий размер шрифта браузера) , medium , large , x-large , xx-large .
    • Относительно размера шрифта родительского элемента: smaller , larger .
    • В процентах от размера шрифта родительского элемента.
    • Численное значение размера в (относительных) размерных единицах.

    font-styleУправляет стилем начертания символов — обычный или курсив. Возможные значения:

    • italic — курсив
    • oblique — наклонное начертание, если это возможно (путём наклона символов обычного шрифта)
    • normal — обычный (романский) шрифт

    font-weightОпределяет, насколько жирными будут символы. Возможные значения:

    • normal — обычный текст
    • bold — полужирный
    • bolder — жирнее, чем в родительком элементе
    • lighter — светлее, чем в родительском элементе
    • 100
    • 200
    • 300
    • 400 — эквивалентно normal
    • 500
    • 600
    • 700 — эквивалентно bold
    • 800
    • 900

    font-variantДля преобразования всех символов текста в прописные буквы. Возможные значения:

    • normal — текст не преобразуется
    • small-caps — прописные

    fontВ одном свойстве font можно указать несколько параметров шрифта. Во избежание проблем указывайте значения свойств в следующем порядке: font-style, font-weight, font-variant, font-size, font-family. Значения свойств можно пропускать. Пример:

    PRODUCT color Устанавливает цвет текста. background-color Устанавливает цвет фона (заливку). Если задано «transparent», будет виден фон родительского элемента (или браузера). background-image Вы можете добавить элементу фоновый рисунок, назначив этому свойству URL файла с рисунком:

    Рисунок повторяется, заполняя всю область элемента. Любая часть изображения, выступающая за пределы элемента, обрезается. Установка свойства в none приведёт к тому, что будет виден фон родительского элемента (или браузера). Если одновременно используется свойство background-color, рисунок будет располагаться поверх заливки.background-repeatЕсли свойству background-image назначен файл рисунка, можно управлять повторами изображения, назначив свойству background-repeat одно из следующих ключевых слов:

    • repeat (по умолчанию) — повторяет изображение.
    • repeat-x — повторяет изображение только в горизонтальном направлении.
    • repeat-y — повторяет изображение только в вертикальном направлении.
    • no-repeat — приводит к однократному отображению рисунка.

    background-positionЕсли свойству background-image назначен файл рисунка, по умолчанию верхний левый угол фонового изображения совмещается с верхним левым углом элемента. Можно изменить такое совмещение, назначив свойству background-position значение одним из следующих способов:

    • Значения горизонтальной и вертикальной позиции в единицах размеров. Первое значение определяет горизонтальную позицию изображения внутри элемента, второе — вертикальную. Можно использовать любой тип численного значения размера. Пример:

      Значения горизонтальной и вертикальной позиции в процентах. Пример:

      Значения в виде одного или двух ключевых слов: left, right, center, top, bottom. Порядок ключевых слов не имеет значения. Пример:

      PRODUCT


    backgroundПозволяет задать несколько свойств фона сразу. Пример:

    PRODUCT letter-spacing Позволяет увеличить или уменьшить просвет между символами в тексте элемента. Для увеличения просвета следует присвоить свойству положительное значение в размерных единицах, для уменьшения — отрицательное. Значение normal обеспечивает обычную величину просвета. Пример:

    PRODUCTvertical-alignСлужит для создания верхних или нижних индексов. Оказывает действие только на элементы inline. Дочерние элементы не наследуют это свойство. Возможные значения:

    • baseline (по умолчанию) — совмещает базовую линию текста элемента с базовой линией текста родительского элемента
    • sub — нижний индекс
    • super — верхний индекс

    text-alignСлужит для управления горизонтальным выравниванием текста элемента. Работает только для элементов block и воздействует на дочерние элементы, причём уже независимо от того, относятся ли они к типу block или inline. Возможные значения: left, right, center.text-indentПозволяет задать отступ для первой строки текста элемента. Может задаваться в любых размерных единицах или процентах от полной ширины текста элемента. Отрицательное значение обеспечивает «выступ» первой строки. В случае с «выступом» может потребоваться установить для элемента левое поле с помощью свойства margin-left для того, чтобы строка была видна полностью.line-heightСлужит для задания междустрочного интервала (разбивки строк по вертикали). Может получать значение в любых размерных единицах или в процентах от высоты текста элемента.text-transformСлужит для управления стилем прописных букв текста элемента. Возможные значения:

    • capitalize — превращает все первые буквы слов в прописные
    • uppercase — превращает в прописные все буквы
    • lowercase — отображает все буквы строчными
    • none — отображает текст без изменения стиля прописных букв

    text-decorationСлужит для рисования линий внутри текста элемента. Возможные значения:

    • underline — рисует линию под текстом
    • overline — рисует линию над текстом
    • line-through — рисует линию, перечёркивающую текст
    • none — отображает текст без линий

    Вы можете применить более одного типа линий:

    PRODUCT Группы свойств текстовых областей: margin, border, padding, height, width, float и clear. Три группы свойств margin, border и padding наиболее предсказуемо работают с элементами типа block. В некоторых версиях браузеров данные свойства могут не работать с элементами типа inline. margin Эта группа свойств служит для добавления полей с одной или нескольких сторон элемента. Для свойств margin-left, margin-right, margin-top и margin-bottom может быть задано значение в любых размерных единицах или в процентах от ширины родительского элемента. Зона полей всегда прозрачна, т.е. через неё видна фоновая заливка или фоновый рисунок родительского элемента или браузера. Вы можете назначить одинаковые величины полей по всем четырём сторонам элемента путём присвоения одного значения в размерных единицах или процентах свойству margin. Два значения будут интерпретированы как верхнее и нижнее поля. Четыре значения будут интерпретированы как верхнее, правое, нижнее и левое поля. Пример:

    PRODUCTborder-styleСлужит для добавления видимого обрамления с одной или нескольких сторон элемента, а также для установки стиля рамки. Возможные значения:


      sol >такое обрамление

    dotted — такое обрамление (только в Internet Explorer)

    dashed — такое обрамление (только в Internet Explorer)

    double — такое обрамление

    groove — такое обрамление

    r >такое обрамление

    inset — такое обрамление

    outset — такое обрамление

  • none — без обрамления

  • Вы можете использовать различные рамки с каждой стороны элемента, назначая несколько ключевых слов свойству border-style. Порядок значений соответствует рамкам сверху, справа, снизу и слева. Пример:

    PRODUCTborder-widthЕсли вы установили видимые линии рамки с одной или нескольких сторон элемента с помощью свойства border-style, вы можете изменить толщину рамки путём задания свойства border-w >такое обрамление

    medium — такое обрамление

    thick — такое обрамление

    Вы можете использовать различные рамки с каждой стороны элемента, назначая несколько значений свойству border-width. Порядок значений соответствует рамкам сверху, справа, снизу и слева. Пример:

    PRODUCT border-color По умолчанию рамки, которые созданы с помощью свойства border-style, имеют тот же цвет, что и цвет, установленный для свойства color элемента. Вы можете менять этот цвет для рамки путём присвоения свойству border-color любого допустимого значения цвета. Кроме того, вы можете задавать различный цвет для каждой из границ рамки, присваивая четыре различных значения свойству border-color:

    PRODUCT padding Свойства просвета (padding-top, padding-right, padding-bottom и padding-left) добавляют пространство непосредственно вокруг содержимого элемента внутри имеющейся вокруг элемента рамки. Добавление просвета может улучшить восприятие рамки. По умолчанию ширина просвета устанавливается близкой к нулю. Для свойств просвета вы можете устанавливать значения в любых размерных единицах или в процентах относительно ширины родительского элемента. Вы можете добавить просвет одинаковой ширины со всех сторон элемента, присвоив единственное значение в размерных единицах или в процентах свойству padding. Пример:

    Для просвета отображается любой фон в виде заливки или рисунков, которые назначены для элемента. (В отличие от области полей, для которой отображается фон родительского элемента.)width
    heightЭти свойства управляют размерами зоны содержимого элемента плюс областями, занимаемыми просветом и обрамлением. Этим свойствам могут быть заданы следующие типы значений:

    • Любые значения в размерных единицах.
    • Значение в процентах от ширины или высоты родительского элемента.
    • Ключевое слово auto (по умолчанию).

    Если текст не помещается в зону содержимого по вертикали вследствие недостаточно большого значения, установленного для свойства height, браузер увеличит значение для height автоматически, как если бы вы установили для свойства height значение auto.floatПозволяет отобразить содержимое элемента типа block слева или справа от следующего за элементом текста. Возможные значения:

    • left — слева от последующего текста
    • right — справа от последующего текста
    • none (по умолчанию) — отключает обтекание

    clearВлияет на обтекание элемента текстом. Возможные значения:

    • left — элемент будет отображён ниже (а не рядом) относительно предшествующего обтекаемого элемента, для которого установлено свойство float:left
    • right — элемент будет отображён ниже (а не рядом) относительно предшествующего обтекаемого элемента, для которого установлено свойство float:right
    • both — элемент будет отображён ниже (а не рядом) относительно предшествующего обтекаемого элемента, для которого установлено свойство float:left или float:right
    • none (по умолчанию) — элемент будет отображён рядом c предшествующим обтекаемым элементом

    first-letter
    first-lineТолько для Internet Explorer. Вы можете создать правило, которое применяется только в первой букве элемента типа block с помощью добавления указателя first-letter к имени элемента в селекторе. Аналогично для первой строки элемента — с помощью добавления указателя first-line. Подобные выражения создают так называемый «псевдо-элемент» — правило применяется к фрагменту текста, который на самом деле не является отдельным элементом. Примеры:

    PRODUCT:first-letter
    PRODUCT:first-line cursor Задаёт форму курсора при его наведении на элемент. Возможные значения: default, wait, ne-resize, sw-resize, se-resize, nw-resize, n-resize, e-resize, s-resize, w-resize, text, help, hand, move, crosshair.

    Вставка элементов HTML в XML-документ

    Когда вы отображаете XML-документ с помощью присоединённой таблицы стилей, вы можете вставить в него любой стандартный элемент HTML и заставить браузер отобразить его.

    Язык XML позволяет использовать пространства имён. Два разных типа элемента могут иметь одно и то же имя, если они принадлежат разным пространствам имён. Пространство имён объявляется следующим образом:

    Элемент с именем «my-namespace:MY-ELEMENT» и элемент с именем «MY-ELEMENT» могут существовать в одном и том же XML-документе и считаются элементами различных типов, т.к. элемент «my-namespace:MY-ELEMENT» принадлежит к пространству имён «my-namespace», а элемент «MY-ELEMENT» по умолчанию принадлежит к пространству имён документа.

    Если имя XML-элемента совпадает с именем стандартного HTML-элемента (например, IMG, A или HR) и если он принадлежит пространству имён «html», Internet Explorer интерпретирует и отобразит его как HTML-элемент. В любом другом случае Internet Explorer интерпретирует его как обычный XML-элемент. Пространство имён «html» является специальным зарезервированным пространством имён, которое объявляется следующим образом:

    Вот пример XML-элемента, который указывает Internet Explorer вставить HTML-элемент IMG:

    Это корректно сформированный пустой XML-элемент. Его имя включает указание пространства имён, и он имеет два атрибута. Первый атрибут объявляет пространство имён, а второй атрибут является стандартным HTML-атрибутом.

    Если вы вставляете HTML-элемент описанным выше способом, XML-документ должен иметь присоединённую таблицу стилей, и вы должны открыть его непосредственно в браузере.

    Основные конструкции XML — элементы XML, теги, атрибуты, процессинговые инструкции, секции CDATA, комментарии

    Мы снова продолжаем изучение XML и в данной статье познакомимся с такими конструкциями XML, как процессинговые инструкции, комментарии, атрибуты и другие элементы XML. Эти элементы являются базовыми и позволяют гибко, в четком соответствии со стандартом размечать документы абсолютно любой сложности.

    Некоторые моменты, такие как теги XML, мы уже частично рассматривали в предыдущей статье «Разметка XML-документов». Теперь мы еще раз затронем эту тему и разберем ее более подробно. Это сделано специально, чтобы вам было проще представить всю картину конструкций XML.

    Элементы XML. Пустые и непустые элементы XML

    Как уже говорилось в предыдущей статье, теги в XML не просто размечают текст, как это бывает в HTML, а выделяют отдельные элементы (объекты). В свою очередь элементы иерархически организуют информацию в документе, что в свою очередь и сделало их основными структурными единицами языка XML.

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

    Пустой элемент XML

    Непустой элемент XML

    Как мы видим с примера выше, главным отличием пустых элементов от непустых является то, что они состоят только из одного тега. Кроме того стоит также заметить, что в XML все имена регистрозависимые. Это означает, что имена myElement, MyElement, MYELEMENT и т.д. различаются между собой, поэтому данный момент стоит сразу запомнить, чтобы избежать ошибок в будущем.
    Итак, с элементами мы разобрались. Теперь давайте перейдем к следующему моменту, такому как логическая организация XML-документов.

    Логическая организация XML-документов. Древовидная структура XML данных

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

    Чтобы было проще понять суть вышесказанного, давайте рассмотрим следующее изображение с примером.

    Как мы видим, организация XML-документа в виде дерева является довольно простой структурой для обработки. При этом выразительная сложность самого дерева достаточно велика. Именно древовидное представление является наиболее оптимальным способом описания объектов в XML.

    Атрибуты XML. Правила записи атрибутов в XML

    В XML элементы могут содержать также и атрибуты с присвоенными им значениями, которые помещаются в одинарные или двойные кавычки. Атрибут для элемента задается следующим образом:

    В данном случае использовался атрибут с именем «attribute» и значением «value». Тут стоит сразу заметить, что атрибут XML обязательно должен содержать какое-то значение и не может быть пустым. В противном случае код будет некорректным с точки зрения XML.

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

    Прежде чем приступить к рассмотрению других конструкций XML стоит также заметить, что при создании атрибутов в качестве значений не могут использоваться такие специальные символы, как амперсанд «&» или угловые скобки «<>». Данные символы зарезервированы в качестве управляющих («&» — сущность, а « » открывают и закрывают тег элемента) и не могут быть использованы в «чистом виде». Для их использования нужно прибегать к замене спецсимволов.

    Инструкции по обработке XML (процессинговые инструкции). XML-декларация

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

    Как видно с примера выше, в XML инструкции по обработке заключаются в угловые кавычки со знаком вопроса. Это немного напоминает обычный php-блок, который мы рассматривали в первых уроках по PHP. В первой части процессинговой инструкции определяется приложение или система, которой предназначена вторая часть этой инструкции или ее содержимое. При этом инструкции по обработке действительны только для тех приложений, которым они адресованы. Примером процессинговой инструкции может быть следующая инструкция.

    Стоит заметить, что в XML есть особая конструкция, которая очень сильно похожа на инструкцию по обработке, но сама она такой не является. Речь идет об XML-декларации, которая передает обрабатывающему программному обеспечению некоторую информацию о свойствах XML-документа, таких как кодировка, версия языка в соответствии с которым написан данный документ и т.д.

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

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

    • Encoding – отвечает за кодировку XML документа. Обычно используется кодировка UTF8.
    • Version – версия языка XML, на котором написан данный документ. Обычно это XML версии 1.0.

    Ну а теперь перейдем к заключающей части статьи и рассмотрим такие конструкции XML как комментарии и секции CDATA.

    Комментарии в XML. Секции CDATA

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

    Здесь сразу стоит обратить ваше внимание на 2 правила:

    1. В тексте комментария не может быть двух символов «-» подряд.
    2. Комментарий не может заканчиваться символом «-».

    Это были два главных правила, которых стоит придерживаться при создании комментариев в XML-документе. Ну а теперь давайте рассмотрим последнюю конструкцию XML под названием секция CDATA.

    Секции CDATA используются для того, чтобы дать понять обработчику XML документа, что данный участок кода не стоит воспринимать как разметку. Обычно это применяется, например, если нужно отобразить какие-то данные в исходном виде. Сама же конструкция создается следующим образом.

    При этом в качестве содержимого могут быть любые символы, включая амперсанд «&» и угловые скобки « ». Исключением здесь является лишь последовательность символов «]]>», которая не может быть использована в секции CDATA.

    Ну и в завершение статьи давайте рассмотрим пример использования секций CDATA.

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

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

    На этом все. Удачи вам и успехов в изучении XML.

    Илон Маск рекомендует:  Русификация компонента trichedit
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL