Xsl html xmlns http

XML Namespaces

XML Namespaces provide a method to avoid element name conflicts.

Name Conflicts

In XML, element names are defined by the developer. This often results in a conflict when trying to mix XML documents from different XML applications.

This XML carries HTML table information:

This XML carries information about a table (a piece of furniture):

A user or an XML application will not know how to handle these differences.

Solving the Name Conflict Using a Prefix

Name conflicts in XML can easily be avoided using a name prefix.

This XML carries information about an HTML table, and a piece of furniture:

XML Namespaces — The xmlns Attribute

When using prefixes in XML, a namespace for the prefix must be defined.

The namespace can be defined by an xmlns attribute in the start tag of an element.

The namespace declaration has the following syntax. xmlns:prefixURI«.

When a namespace is defined for an element, all child elements with the same prefix are associated with the same namespace.

Namespaces can also be declared in the XML root element:

Note: The namespace URI is not used by the parser to look up information.

The purpose of using an URI is to give the namespace a unique name.

However, companies often use the namespace as a pointer to a web page containing namespace information.

Uniform Resource Identifier (URI)

A Uniform Resource Identifier (URI) is a string of characters which identifies an Internet Resource.

The most common URI is the Uniform Resource Locator (URL) which identifies an Internet domain address. Another, not so common type of URI is the Uniform Resource Name (URN).

Default Namespaces

Defining a default namespace for an element saves us from using prefixes in all the child elements. It has the following syntax:

This XML carries HTML table information:

This XML carries information about a piece of furniture:

Namespaces in Real Use

XSLT is a language that can be used to transform XML documents into other formats.

Читайте также:  Java home plugin home

The XML document below, is a document used to transform XML into HTML.

The namespace «http://www.w3.org/1999/XSL/Transform» identifies XSLT elements inside an HTML document:



My CD Collection


Title Artist



If you want to learn more about XSLT, please read our XSLT Tutorial.

Источник

4. Обработка нескольких пространств имен¶

Пространство имен в XML представляет собой набор имен элементов и атрибутов. Например, в пространстве имен XHTML мы находим имена элементов, такие как body, link и h1, а также имена атрибутов, такие как href и align.

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

  • См. Раздел 4.1. Глоссарий терминов пространства имен , чтобы ознакомиться с терминологией.
  • Раздел 4.2. Синтаксис документов с несколькими пространствами имен описывает, как пространства имен представлены в XML-файле.

4.1. Глоссарий терминов пространства имен¶

4.1.1. URI: Universal Resource Identifier¶

Формально каждое пространство имен называется URI или универсальным идентификатором ресурса. Хотя URI часто выглядит как URL-адрес, существует важная разница:

  • URL (Universal Resource Locator) соответствует более или менее фактической веб-странице. Если вы вставляете URL-адрес в свой браузер, вы ожидаете получить какую-либо веб-страницу.
  • URI — это просто уникальное имя, которое идентифицирует конкретную концептуальную сущность. Если вы вставляете его в браузер, вы можете получить веб-страницу или не можете; не требуется, чтобы URI, который определяет данное пространство имен, также является URL-адресом.

4.1.2. NSURI: Namespace URI¶

Не все URIs определяют пространства имен.

Термин NSURI для NameSpace URI — это URI, который используется для уникальной идентификации определенного пространства имен XML.

The W3C Recommendation Namespaces in XML 1.0 предпочитают термин имя пространства имен для более широко используемого NSURI.

Например, здесь есть NSURI, который идентифицирует «XHTML 1.0 Strict» диалект XHTML:

4.1.3. Пустое пространство имен¶

В рамках данного документа ни один набор имен элементов и атрибутов не может быть отнесен к определенному пространству имен и соответствующему NSURI. Эти элементы и атрибуты, как говорят, находятся в пустом пространстве имен.

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

Например, многие страницы XHTML используют пустое пространство имен, потому что все имена находятся в одном пространстве имен и потому, что браузеру не требуется NSURI, чтобы отображать их правильно.

4.1.4. Clark notation¶

Каждый элемент и имя атрибута в документе связаны с определенным пространством имен и соответствующим им NSURI, иначе он находится в пустом пространстве имен. В общем случае документ может указывать NSURI для каждого пространства имен; см. раздел 4.2. Синтаксис документов с несколькими пространствами имен .

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

Когда ваш документ представлен как ElementTree, атрибут .tag, который указывает на Element , содержит как NSURI, так и имя элемента с использованием обозначения Кларка, названного в честь его изобретателя Джеймса Кларка.

Когда NSURI элемента известен, атрибут .tag содержит строку этой формы:

Например, когда правильно построенный документ XHTML 1.0 Strict обрабатывается в ElementTree, атрибут .tag корневого элемента документа будет выглядеть следующим образом:

Нотация Кларка фактически не появляется в исходном файле XML. Она используется только в представлении ElementTree документа.

Для имен элементов и атрибутов в пустом пространстве имен нотация Кларка — это просто имя без префикса «».

4.1.5. Предок (Ancestor)¶

В понятие предок элемента включают его непосредственного родителя, родителя родительского элемента и т.д. до корня дерева. У корневого узла нет предков.

4.1.6. Потомок (Descendant)¶

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

4.2. Синтаксис документов с несколькими пространствами имен¶

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

Вот небольшой фрагмент, чтобы показать вам общую идею:

 font-style='italic' font-family='sans-serif'>  select="$content"/>  

inline элемент находится в пространстве имен XSL-FO, которое в этом документе использует префикс пространства имен fo:. Элемент copy-of находится в пространстве имен XSLT, префиксом которого является «xsl:».

В вашем документе вы должны определить NSURI, соответствующий каждому префиксу пространства имен. Это можно сделать несколькими способами.

  • Любой элемент может содержать атрибут «xmlns: P =« NSURI »», где P — префикс пространства имен для этого NSURI.
  • Любой элемент может содержать атрибут «xmlns =» NSURI ». Это определяет NSURI, связанный с пустым пространством имен.
  • Если элемент или атрибут не содержит префикс пространства имен, он наследует NSURI ближайшего элемента-предка, который имеет префикс.
  • Некоторые атрибуты могут встречаться где угодно в любом документе в пространстве имен «xml:», которое всегда определяется.

Например, любой элемент может иметь атрибут «xml: id», который служит для идентификации уникального элемента в документе.

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

 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> head> title>My page titletitle> head> body> h1>Hello worldh1> body> html> 

Атрибут xmlns элемента html указывает, что все его дочерние элементы находятся в пространстве имен XHTML 1.0 Strict.

Атрибут xml: lang = “en” указывает, что документ использует английский язык.

Вот более подробный пример. Это корневой элемент таблицы стилей XSLT. Префикс «xsl:» используется для элементов XSLT; префикс «fo:» используется для элементов XSL-FO; и третье пространство имен с префиксом «date:» также включено. В этом документе не используется пустое пространство имен.

 version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:date="http://exslt.org/dates-and-times"> 

4.3. Карты пространства имен¶

Карта пространства имен — это словарь Python, который связывает префиксы пространства имен с пространствами имен. Ключи словаря являются префиксами пространства имен, и каждое связанное значение является именем пространства имен как NSURI .

Карты пространства имен используются в нескольких целях.

  • При чтении XML-файла с несколькими пространствами имен вы можете использовать карту пространства имен в процессе поиска и извлечения элементов и атрибутов из ElementTree. См., Например, раздел 9.5, «Element.find (): найти соответствующий подэлемент».
  • При создании нового документа XML, содержащего элементы в нескольких пространствах имен, вы можете использовать карту пространства имен, чтобы указать, какие префиксы пространства имен появятся, когда ElementTree будет сериализован в XML-форму. См. Раздел 7.2, «Конструктор Element ()» и раздел 7.8 «Конструктор SubElement ()» для подробностей.

Например, в конце раздела 4.2 «Синтаксис документов с несколькими именами» есть тег начала xsl: stylesheet, который определяет xsl: как префикс для пространства имен XSLT, fo: для пространства имен XSL-FO и date : для date-and-time. Вот карта пространства имен, которая описывает те же отношения префиксов к NSURI:

Чтобы определить NSURI пустого пространства имен , используйте запись с ключом None. Например, эта карта пространства имен будет определять элементы без пространства имен как принадлежащие XHTML, а элементы с префиксом пространства имен «xl:» относятся к пространству имен XLink:

Источник

Оцените статью