Кабель лвс что. Подключаем телевизор к интернету по сетевому кабелю (LAN). Преимущества использования ЛВС

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

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

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

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

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

Префиксы пространств имен XML. Примеры использования пространств имен в XML и XSLT

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

<префикс:элемент xmlns:префикс="URI"> ...

Как видно с примера, префиксы пространств имен задаются как атрибуты с именами, которые начинаются последовательностью xmlns. Если говорить об XSLT, то там чаще всего используется префикс xsl. На практике все это выглядит следующим образом.

...

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

...

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

any content ...

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

Any text ...

Несмотря на то, что элементы stylesheet и text имеют разные префиксы, они принадлежат одной схеме, так как их префиксам проставлены в соответствие одинаковые идентификаторы. Таким образом, в документе может использоваться любое количество префиксов пространств имен. Зачастую все они определяются в корневом элементе, а потом просто используются в нужном месте документа. И опять еще один пример для демонстрации.

...

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

Any content Any content Any content Any content ...

Здесь стоит обратить внимание, что элементы one и two будут принадлежать пространству имен элемента thirdelement, так как он является для них родительским. Как видим, здесь прослеживается так называемое наследование. Если для элемента не указано пространство имен, то ему автоматически присваивается пространство имен ближайшего родительского элемента.

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

Any content Any content Any content Any content ...

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

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

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

Антигона Софокл 103.50

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

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

8.3.2. Декларация простанства имен

Существует два способа декларации пространства имен: декларация по умолчанию и явная декларация. Декларация по умолчанию объявляет пространство имен для всех элементов и их атрибутов, которые содержатся в данном элементе. Она имеет вид:

Xmlns=URI

где xmlns — ключевое слово XML, а URI — это адрес ресурса, содержащего соответствующий словарь. В следующем примере элемент book и все элементы и атрибуты внутри него будут браться XML-анализатором из пространства имен "http://www.booker.com/schema".

Антигона Софокл 103.50

Явная декларация имеет вид:

Xmlns: имя =URI

Как мы видим, она отличается наличием имени, которое задает префикс данного пространства имен. Рассмотрим следующий пример:

Антигона Софокл 103.50

Здесь элемент book содержит декларации двух пространств имен: первое из них имеет префикс bk , второе — money . При этом содержащиеся в нем элементы title и author относятся к первому пространству имен, а price и его атрибут title ко второму.

8.3.3. Область действия пространства имен

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

НазваниеКлассификацияОписание
осина род тополь
леса и степи Северной Евразии производство целлюлозы и спичек

В этом примере имена элементов не ограничены, т. е. не имеют префиксов. Поэтому элемент Trees не относится ни к какому пространству имен, элементы tr и td относятся к пространству имен "http://www.w3.org/TR/REC-html40", а все остальные элементы к пространству имен "http://flora.com/trees".

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

8.3.4. Базовые URI фрагментов XML-документа

Пространства имен в XML были, в частности, использованы для задания в XML-документе базового URI любого из его фрагментов. Как мы помним, в HTML для этого используется элемент BASE , однако он относится к HTML-документу в целом. XML в этом отношении более гибок; в нем мы можем задать базовый URI любого элемента с помощью атрибута xml:base следующего вида (напомним, что префикс xml относится к пространству имен "http://www.w3.org/XML/1998/namespace"):

Xml:base=URI

Рассмотрим такой пример:

<a href="/android/chto-luchshe-faerfoks-ili-hrom-chto-luchshe-mozilla-firefox-ili-google-chrome-novoe-v-firefox-quantum/">Виртуальная библиотека</a> Прочти горячие новости дня! Горячая новость №1 Горячая новость №2 Горячая новость №3

Здесь корневой элемент doc содержит указание на свой базовый URI "http://example.org/today/", а относительные URI вложенных в него элементов будут разрешаться так:

  • базовым URI элемента olist является "http://example.org/today/hotpicks";
  • базовым URI элементов item являются "http://example.org/today/hotpicks/pick1.xml" и т. п.

Тепеь мы можем сформулировать строгие правила описания базовых URI. Во-первых, их синтаксис и семантика сооответствуют общим правилам, принятым для URI (см. Приложение 2). Во-вторых, действуют следующие соглашения о присвоении элементам базовых URI:

  • если элемент имеет атрибут xml:base , то это базовый URI элемента; в противном случае
  • если предок элемента имеет атрибут xml:base , то это базовый URI элемента; в противном случае
  • базовым URI элемента является URI раздела документа или внешнего раздела, содержащего данный элемент.

Наконец, в-третьих, относительные URI разрешаются в полные так же, как все относительные URI , но со следующими уточнениями:

  • базовым URI для ссылки внутри текста является базовый URI содержащего этот текст элемента;
  • базовым URI для ссылки внутри атрибута xml:base является базовый URI предка этого элемента;
  • базовым URI для ссылки внутри любого другого атрибута является базовый URI этого элемента;
  • базовым URI для ссылки внутри директивы является базовый URI предка этой директивы.

Пространство имен XML является набором имен, обозначаемых с помощью ссылки URI, используемых в документах XML в качестве типов элементов и имен атрибутов.

Пространства имен XML определены рекомендацией W3C от 16 августа 2006 года: Пространства имен в XML . Имена тегов XML должны быть глобально уникальными, а также короткими для повышения производительности. Исходя из этого в рекомендации W3C, касающейся пространства имен, задается атрибут xmlns , позволяющий дополнить любой элемент XML. Если он присутствует в элементе, он обозначает пространство имен для данного элемента.

Атрибут xmlns используется со следующим синтаксисом:

xmlns: префикс =пространство_имен

где пространство_имен является уникальным URI (например, www.сайт) и префикс представляет пространство имен и задает указатель на него.

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

Corporation invoice

Определение пространства имен в первой строке присваивает префиксу пространство имен http://www.my.com/acct-REV10. Префикс используется для имен элементов, таких как name, для прикрепления их к пространству имен. Например, второе приложение - система выполнения, может присвоить к своим элементам заказчиков другие пространства имен:

Corporation shipped

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

Corporation invoice

В этом примере все теги в записи заказчика уточнены пространством имен http://www.my.com/acct-REV10. Явно задавать префикс нет необходимости, так как используется пространство имен оп умолчанию. Обратите внимание, что пространство имен по умолчанию применяется ко всем определениям атрибутов.

Схемы и пространства имен XML

В следующей схеме XML пространство имен по умолчанию определено как стандартное пространство имен схемы XML http://www.w3.org/2001/XMLSchem. Существует также специфическое пространство имен http://www.сайт.

Предположим, что предыдущая схема XML сохранена в C:\temp\TestSchema.xsd , примером файла XML, допустимым для схемы, является:

xsi:schemaLocation="http://www..xsd"> x:Vangerowstrasse 69115 x:Heidelberg x:Bernal Road 90375 x:San Jose

Целевое пространство имен

Целевое пространство имен служит для идентификации пространства имен при наличии связи между элементом и ее именем. При объявлении эта связь определяет пространство имен элементов в файлах XML, соответствующих схеме. Файл XML, импортирующий схему, должен ссылаться на ее целевое пространство имен в атрибуте schemaLocation. Любые несовпадения между целевым и фактическим пространством имен элемента отображаются в виде ошибок проверки схемы. В нашем примере целевым пространством имен является http://www.сайт; оно задается в файле схемы XML и указывается дважды в файле XML. Несовпадения между этими тремя элементами пространства имен ведут к возникновению ошибок проверки.

В следующем примере показаны принципы работы префиксов пространств имен и целевых пространств имен в схемах XML и документах их соответствующих элементов XML.

Пример 1 - схема с целевым пространством имен и с пространством имен по умолчанию, а также с простыми локальными элементами

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

Peter Smith

Когда локальные элементы (такие как элемент "name") и атрибуты не уточнены в файле XML, тогда уточнен только корневой элемент. Таким образом, в этом примере префикс пространства имен "x" присвоен корневому элементу "MyAddress", связывая его с пространством имен "http://www..

Пример 2 - схема с целевым пространством имен и с пространством имен по умолчанию, а также с полными локальными элементами

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

Peter Smith

В данном примере префикс "x" пространства имен присвоен корневому элементу "MyAddress" и локальному элементу "name", связанному с пространством имен "http://www.сайт".

Пример 3 - схема с целевым пространством имен и явно заданным xmlns:xsd

Эта схема XML добавляет данный атрибут:

Xmlns:xsd="http://www.w3.org/2001/XMLSchema

Это означает, что каждая из конструкций языка схемы XML требует уточнения с помощью префикса "xsd". Например, xsd:complexType и xsd:string

Заметьте, что для объявления и использования можно выбрать любые другие префиксы, например, "xs" или "foobar".

Этот префикс можно указать на странице параметров схемы XML. Дополнительные сведения приведены в описании связанных задач.

Все определенные пользователем типы принадлежат к пространству имен http://www.сайт, как определено атрибутом targetNamespace, и имеют префикс "x", как определено атрибутом xmlns:x.

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

Peter Smith

Пример 4 - схема с необъявленным целевым пространством имен, явно задающая xmlns:xsd

Эта схема XML не имеет собственного целевого пространства. В этом случае настоятельно рекомендуется явно уточнять все конструкции схемы XML префиксом, таким как "xsd". Ссылки на определения и объявления из этой схемы, такие как AddressType, не уточнены пространством имен, так как не существует префикса пространства имен.

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

name

Пример 5 - схема, в которой целевое пространство имен является пространством имен по умолчанию

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

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

name

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

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

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

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

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

Префиксы пространств имен XML. Примеры использования пространств имен в XML и XSLT

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

<префикс:элемент xmlns:префикс="URI"> ...

Как видно с примера, префиксы пространств имен задаются как атрибуты с именами, которые начинаются последовательностью xmlns. Если говорить об XSLT, то там чаще всего используется префикс xsl. На практике все это выглядит следующим образом.

...

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

...

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

any content ...

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

Any text ...

Несмотря на то, что элементы stylesheet и text имеют разные префиксы, они принадлежат одной схеме, так как их префиксам проставлены в соответствие одинаковые идентификаторы. Таким образом, в документе может использоваться любое количество префиксов пространств имен. Зачастую все они определяются в корневом элементе, а потом просто используются в нужном месте документа. И опять еще один пример для демонстрации.

...

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

Any content Any content Any content Any content ...

Здесь стоит обратить внимание, что элементы one и two будут принадлежать пространству имен элемента thirdelement, так как он является для них родительским. Как видим, здесь прослеживается так называемое наследование. Если для элемента не указано пространство имен, то ему автоматически присваивается пространство имен ближайшего родительского элемента.

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

Any content Any content Any content Any content ...

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

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