Что делает атрибут 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 |
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]
- head — метаданные (или «заголовок») документа в целом;
- 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-документом таблицы стилей.
Уровни приоритетов правил таблиц стилей, представленные в порядке от высшего к низшему:
- Значение свойства, заданное в атрибуте STYLE конкретного элемента XML-документа.
- Значение свойства, заданное в правиле CSS с контекстуальным селектором.
- Значение свойства, заданное в правиле CSS с родовым селектором.
- Значение свойства, заданное в правиле CSS для ближайшего элемента-предка (для ненаследуемого свойства браузер будет использовать значение по умолчанию).
- Значение свойства по умолчанию, либо значение, заданное пользователем браузера.
Основной принцип приоритетов следующий: браузер отдаёт предпочтение более конкретизированному правилу. Если для определённого свойства установлены конфликтующие значения на одном и том же уровне приоритетов, браузер использует последнюю установку, которую он обработал. Это противоположно правилу, применяемому 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». Возможные значения:
|
font-family | Определяет имя шрифта (гарнитуру). Если браузер не сможет найти требуемый шрифт, он заменит его на похожий. Если имя шрифта содержит пробелы, заключите его в кавычки: |
Вы можете привести несколько вариантов допустимых шрифтов в порядке приоритета, разделяя их запятыми:
Вы можете включить в конец списка ключевое слово CSS, указывающее на тип шрифта (имя родового семейства), который вы хотите использовать:
Перечень родовых семейств шрифтов:
Serif | Times New Roman |
sans-serif | Arial |
Cursive | ZapfChancery |
Fantasy | Cutout |
monospace | Courier New |
- Относительно текущего размера шрифта браузера: xx-small , x-small , small (текущий размер шрифта браузера) , medium , large , x-large , xx-large .
- Относительно размера шрифта родительского элемента: smaller , larger .
- В процентах от размера шрифта родительского элемента.
- Численное значение размера в (относительных) размерных единицах.
- italic — курсив
- oblique — наклонное начертание, если это возможно (путём наклона символов обычного шрифта)
- normal — обычный (романский) шрифт
- normal — обычный текст
- bold — полужирный
- bolder — жирнее, чем в родительком элементе
- lighter — светлее, чем в родительском элементе
- 100
- 200
- 300
- 400 — эквивалентно normal
- 500
- 600
- 700 — эквивалентно bold
- 800
- 900
- normal — текст не преобразуется
- small-caps — прописные
PRODUCT
Рисунок повторяется, заполняя всю область элемента. Любая часть изображения, выступающая за пределы элемента, обрезается. Установка свойства в none приведёт к тому, что будет виден фон родительского элемента (или браузера). Если одновременно используется свойство background-color, рисунок будет располагаться поверх заливки.
- repeat (по умолчанию) — повторяет изображение.
- repeat-x — повторяет изображение только в горизонтальном направлении.
- repeat-y — повторяет изображение только в вертикальном направлении.
- no-repeat — приводит к однократному отображению рисунка.
- Значения горизонтальной и вертикальной позиции в единицах размеров. Первое значение определяет горизонтальную позицию изображения внутри элемента, второе — вертикальную. Можно использовать любой тип численного значения размера. Пример:
Значения горизонтальной и вертикальной позиции в процентах. Пример:
Значения в виде одного или двух ключевых слов: left, right, center, top, bottom. Порядок ключевых слов не имеет значения. Пример:
PRODUCT
PRODUCT
PRODUCT
- baseline (по умолчанию) — совмещает базовую линию текста элемента с базовой линией текста родительского элемента
- sub — нижний индекс
- super — верхний индекс
- capitalize — превращает все первые буквы слов в прописные
- uppercase — превращает в прописные все буквы
- lowercase — отображает все буквы строчными
- none — отображает текст без изменения стиля прописных букв
- underline — рисует линию под текстом
- overline — рисует линию над текстом
- line-through — рисует линию, перечёркивающую текст
- none — отображает текст без линий
Вы можете применить более одного типа линий:
PRODUCT
PRODUCT
sol >такое обрамление
dotted — такое обрамление (только в Internet Explorer)
dashed — такое обрамление (только в Internet Explorer)
double — такое обрамление
groove — такое обрамление
r >такое обрамление
inset — такое обрамление
outset — такое обрамление
Вы можете использовать различные рамки с каждой стороны элемента, назначая несколько ключевых слов свойству border-style. Порядок значений соответствует рамкам сверху, справа, снизу и слева. Пример:
PRODUCT
medium — такое обрамление
thick — такое обрамление
Вы можете использовать различные рамки с каждой стороны элемента, назначая несколько значений свойству border-width. Порядок значений соответствует рамкам сверху, справа, снизу и слева. Пример:
PRODUCT
PRODUCT
Для просвета отображается любой фон в виде заливки или рисунков, которые назначены для элемента. (В отличие от области полей, для которой отображается фон родительского элемента.)
height
- Любые значения в размерных единицах.
- Значение в процентах от ширины или высоты родительского элемента.
- Ключевое слово auto (по умолчанию).
Если текст не помещается в зону содержимого по вертикали вследствие недостаточно большого значения, установленного для свойства height, браузер увеличит значение для height автоматически, как если бы вы установили для свойства height значение auto.
- left — слева от последующего текста
- right — справа от последующего текста
- none (по умолчанию) — отключает обтекание
- left — элемент будет отображён ниже (а не рядом) относительно предшествующего обтекаемого элемента, для которого установлено свойство float:left
- right — элемент будет отображён ниже (а не рядом) относительно предшествующего обтекаемого элемента, для которого установлено свойство float:right
- both — элемент будет отображён ниже (а не рядом) относительно предшествующего обтекаемого элемента, для которого установлено свойство float:left или float:right
- none (по умолчанию) — элемент будет отображён рядом c предшествующим обтекаемым элементом
first-line
PRODUCT:first-letter
PRODUCT:first-line
Вставка элементов 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 правила:
- В тексте комментария не может быть двух символов «-» подряд.
- Комментарий не может заканчиваться символом «-».
Это были два главных правила, которых стоит придерживаться при создании комментариев в XML-документе. Ну а теперь давайте рассмотрим последнюю конструкцию XML под названием секция CDATA.
Секции CDATA используются для того, чтобы дать понять обработчику XML документа, что данный участок кода не стоит воспринимать как разметку. Обычно это применяется, например, если нужно отобразить какие-то данные в исходном виде. Сама же конструкция создается следующим образом.
При этом в качестве содержимого могут быть любые символы, включая амперсанд «&» и угловые скобки « ». Исключением здесь является лишь последовательность символов «]]>», которая не может быть использована в секции CDATA.
Ну и в завершение статьи давайте рассмотрим пример использования секций CDATA.
В обычных условиях содержимое секции CDATA было бы воспринято как часть разметки. В данном же случае оно будет расцениваться как обычные символьные данные.
На этом я завершаю данную статью. Следующую статью рубрики планирую посвятить такой важной теме, как пространствам имен, поэтому если вы не хотите ее пропустить, рекомендую подписаться на новостную рассылку любым удобным для вас способом в соответствующем пункте меню либо воспользовавшись формой подписки ниже.
На этом все. Удачи вам и успехов в изучении XML.