Выбор шаблонов для элементов пространства имен, определенного по умолчанию

Выбор шаблонов для элементов пространства имен, определенного по умолчанию

Одним из значительных неудобств первой версии XSLT была невозможность сменить пространство имен, определенное по умолчанию для паттернов. То есть, если шаблон будет определен как

<xsl:template match="foo">

 ...

</xsl:template>

то обрабатывать он будет только те элементы foo, которые принадлежат нулевому пространству имен. Для элемента

<bar:foo xmlns:bar="urn:bar-namespace"/>

придется писать шаблон вида

<xsl:template match="ns:foo" xmlns:ns="urn:bar-namespace">

 ...

</xsl:template>

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

Листинг 12.8. Изменение пространства имен для паттерна

<xsl:stylesheet

 version="2.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 xmlns="urn:bar-namespace">

 <xsl:template match="foo">

  ...

 </xsl:template>

</xsl:stylesheet>

В элементе xsl:stylesheet пространство имен с URI "urn:bar-namespace" определяется как пространство имен по умолчанию и паттерн foo соответствует элементу с локальной частью имени "foo" и URI пространства имен "urn:bar-namespace".

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Пользовательские пространства имен

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Пользовательские пространства имен До этого момента мы создавали небольшие тестовые программы, используя пространства имен, существующие в среде .NET (в частности, пространство имен System). Но иногда при создании приложения бывает удобно объединить связанные типы в одном


Вложенные пространства имен

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

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


Дополнительные пространства имен ADO.NET

Из книги Стандарты программирования на С++. 101 правило и рекомендация автора Александреску Андрей

Дополнительные пространства имен ADO.NET В дополнение к пространствам имен .NET, определяющим типы конкретного поставщика данных, библиотеки базовых классов предлагают ряд дополнительных пространств имен, связанных с ADO.NET (табл. 22.4).Следует понимать, что эта глава не


Пространства имен ASP.NET 2.0

Из книги Технология XSLT автора Валиков Алексей Николаевич

Пространства имен ASP.NET 2.0 В библиотеках базовых классов .NET 2.0 предлагается не менее 34 пространств имен, имеющих отношение к Web. Всю эту совокупность пространств имен можно разбить на четыре главные группы.• Базовые функциональные возможности (типы, обеспечивающие


Пространства имен .NET для Web-сервисов XML

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

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


1.4. Пространства имен

Из книги C++ для начинающих автора Липпман Стенли

1.4. Пространства имен Если два неродственных процесса используют какой-либо вид IPC для обмена информацией, объект IPC должен иметь имя или идентификатор, чтобы один из процессов (называемый обычно сервером — server) мог создать этот объект, а другой процесс (обычно один или


Пространства имен и модули

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Пространства имен и модули Системы имеют подсистемы, которые в свою очередь состоят из подсистем и так до бесконечности — именно поэтому мы всегда движемся сверху вниз. — Алан Перлис (Alan Perlis) Пространство имен — очень важный инструмент для управления именами и снижения


Пространства имен

Из книги автора

Пространства имен В программе на языке Си имена (идентификаторы) используются для ссылок на различного рода объекты — функции, переменные, формальные параметры и т. п. При соблюдении определенных правил, описанных в данном разделе, допускается использование одного и


2.7. Использование пространства имен

Из книги автора

2.7. Использование пространства имен Предположим, что мы хотим предоставить в общее пользование наш класс Array, разработанный в предыдущих примерах. Однако не мы одни занимались этой проблемой; возможно, кем-то где-то, скажем, в одном из подразделений компании Intel был


8.5. Определения пространства имен А

Из книги автора

8.5. Определения пространства имен А По умолчанию любой объект, функция, тип или шаблон, объявленный в глобальной области видимости, также называемой областью видимости глобального пространства имен, вводит глобальную сущность. Каждая такая сущность обязана иметь


8.5.1. Определения пространства имен

Из книги автора

8.5.1. Определения пространства имен Определение пользовательского пространства имен начинается с ключевого слова namespace, за которым следует идентификатор. Он должен быть уникальным в той области видимости, в которой определяется данное пространство; наличие другой


8.5.3. Вложенные пространства имен

Из книги автора

8.5.3. Вложенные пространства имен Мы уже упоминали, что пользовательские пространства имен могут быть вложенными. Такие пространства применяются для дальнейшего структурирования кода нашей библиотеки.// ---- primer.h ----namespace cplusplus_primer {// первое вложенное пространство имен://


8.5.6. Безымянные пространства имен

Из книги автора

8.5.6. Безымянные пространства имен Может возникнуть необходимость определить объект, функцию, класс или любую другую сущность так, чтобы она была видимой только в небольшом участке программы. Это еще один способ решения проблемы засорения глобального пространства


8.6.1. Псевдонимы пространства имен

Из книги автора

8.6.1. Псевдонимы пространства имен Псевдоним пространства имен используется для задания короткого синонима имени пространства. Например, длинное имяnamespace International_Business_Machines{ /* ... */ }может быть ассоциировано с более коротким синонимом:namespace IBM = International_Business_Machines;Объявление