Пространства имен (namespaces) XML являются решением проблемы неясности и коллизии имен.
Пространство имен представляет собой коллекцию имен, идентифицируемых по ссылке URI, которые используются документам XML в качестве имен типов элементов и атрибутов.
Иными словами, пространство имен представляет собой коллекцию имен, имеющую структуру. Это напоминает определение DTD, и, действительно, такое определение может быть пространством имен. Значит, в качестве URI можно использовать адрес DTD на вашем сервере, например:
http://www.wrox.com/xlmdtds/PubCatalog.dtd
Однако идентификатор URI не должен быть адресом URL (если вы не знаете, в чем заключается различие между ними, вскоре мы кратко опишем его). В данном случае пространство имен ссылается на имена, используемые в определении PubCatalog.dtd. Таким образом, если мы каким-либо способом связываем элемент Book с этим пространством имен, то любая ссылка на него в документе означает его использование.
Если DTD явным образом определяет структуру всего документа, пространство имен — ресурс, из которого можно извлекать необходимые нам определения. Это означает, что пространство имен не должно быть формальным описанием структуры, как DTD, и ограниченная область действия такого определения делает пространства имен широко применимыми в языке XML. Если пространство имен представляет собой DTD или схему, используемые нами определения должны быть согласованы с описанными в них структурой и синтаксисом. Мы можем, однако, использовать только те имена, которые хотим, а также применять пространства имен как способ различения видов использования элементов.
Итак, для того чтобы эффективно использовать пространства имен в документе, комбинирующем элементы из различных источников, нам надо определить:
• Ссылку на URI, описывающий использование элемента.
• Псевдоним, позволяющий понять, из какого пространства имен взят наш элемент. Этот псевдоним имеет форму префикса элемента (например, если псевдонимом для неясного элемента Book является слово catalog, то, элемент будет называться ).
Достарыңызбен бөлісу: |