Псевдонимы пространств имен
Псевдонимы пространств имен
Любопытным фактом является то, что XML-документ, являющийся результатом выполнения XSLT-преобразования, может и сам быть XSLT- преобразованием. Иными словами, преобразования могут генерироваться другими преобразованиями. В некоторых случаях такая возможность будет очень полезна, например, входящий XML-документ может описывать преобразование, которое нужно сгенерировать.
Листинг 8.13. XML-документ, описывающий требуемое преобразование
<transform>
<remove select="a"/>
<replace select="b" with="B"/>
<replace select="c" with="C"/>
</transform>
Приведенный выше документ описывает преобразование, которое должно удалять из входящего документа элементы а, а элементы b и c заменять элементами B и C соответственно. Такое преобразование может выглядеть следующим образом.
Листинг 8.14. Преобразование
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="a"/>
<xsl:template match="b">
<xsl:element name="B">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="c">
<xsl:element name="C">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Преобразование, генерирующее такой код, не представляет особой сложности. Например, шаблон для обработки элемента replace может иметь следующий вид:
<xsl:template match="replace">
<xsl:element name="xsl:template">
<xsl:attribute name="match">
<xsl:value-of select="@select"/>
</xsl:attribute>
<xsl:element name="xsl:element">
<xsl:attribute name="name">
<xsl:value-of select="@with"/>
</xsl:attribute>
<xsl:element name="xsl:apply-templates"/>
</xsl:element>
</xsl:element>
</xsl:template>
Шаблон этот выглядит очень громоздко, потому что мы не могли просто включить в него создаваемое правило: поскольку мы создаем элементы в пространстве имен XSLT, находясь в шаблоне, они воспринимались бы не как генерируемые, а как принадлежащие генерирующему преобразованию. Очевидно, что шаблон вида
<xsl:template match="replace">
<xsl:template match="{@select}">
<xsl:element name="{@with}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:template>
был бы некорректен. По этой причине нам пришлось генерировать все инструкции при помощи xsl:element и xsl:attribute, что сделало шаблон громоздким и малопонятным.
Если внимательно рассмотреть проблему, то окажется, что она состоит в том, что мы хотим в преобразовании использовать элементы одного пространства имен так, как если бы они относились к другому пространству.
К счастью, XSLT предоставляет легкий и удобный способ для решения такого рода задачи: пространству имен можно назначить псевдоним при помощи элемента xsl:namespace-alias.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Элемент <xsl:namespace>: создание объявлений пространств имен
Элемент <xsl:namespace>: создание объявлений пространств имен В XSLT 2.0 включен еще один новый элемент: <xsl:namespace>, позволяющий добавлять в результирующий документ объявления пространств имен. Однако на текущий момент больше об этом элементе ничего не известно, так что я не
5.14 Псевдонимы имен
5.14 Псевдонимы имен Часто по соглашению можно присвоить компьютеру дополнительно к его реальному имени некоторый псевдоним (или краткое имя — nickname). Например, хост nicol.jvnc.net обеспечивает пересылку файлов, службу gopher и службу World Wide Web (WWW). По соглашению, ему дополнительно
Другие классы и функции пространств имен WMI
Другие классы и функции пространств имен WMI WMI является неисчерпаемой темой для обсуждения, так как содержит просто огромное количество классов, не говоря уже о количестве функций, реализованных в этих классах. Для рассмотрения всех функций WMI (не говоря уже об объектах
Панель рабочих пространств
Панель рабочих пространств Панель Workspaces, показанная на рис. 2.8, позволяет задавать параметры рабочих пространств. Рис. 2.8. Панель рабочих пространствРабочие пространства включают только необходимые наборы меню, инструментальные панели и палитры, сгруппированные и
59. Не используйте using для пространств имен в заголовочных файлах или перед директивой #include
59. Не используйте using для пространств имен в заголовочных файлах или перед директивой #include РезюмеДиректива using для пространств имен создана для вашего удобства, а не для головной боли других. Никогда не используйте объявления или директивы using перед директивой #include.Вывод:
2.4. Предотвращение конфликта имен с помощью пространств имен
2.4. Предотвращение конфликта имен с помощью пространств имен ПроблемаВ несвязанных между собой модулях обнаружены конфликтующие имена или требуется заранее избежать возможности таких конфликтов, создав логические группы кода.РешениеДля структурирования кода
Определение пространств имен
Определение пространств имен Итак, вы определили вид своего компоновочного блока (и необходимые внешние ссылки). Теперь можно создать пространство имен .NET (МуNamespace), используя для этого директиву .namespace.// Наш компоновочный блок имеет одно пространство имен. .namespace MyNamespace
Обзор пространств имен GDI+
Обзор пространств имен GDI+ Платформа .NET обеспечивает целый набор пространств имен для поддержки визуализации двумерной графики. В дополнение к основным функциональным возможностям разработчика, которые обычно предлагаются графическими пакетами (цвета, шрифты, перья,
Панель рабочих пространств
Панель рабочих пространств Панель Workspaces, показанная на рис. 2.7, размещается на рабочем столе под стандартной па нелью инструментов и позволяет задавать параметры рабочих пространств. Рис. 2.7. Панель рабочих пространствРабочие пространства включают только необходимые
8.6.1. Псевдонимы пространства имен
8.6.1. Псевдонимы пространства имен Псевдоним пространства имен используется для задания короткого синонима имени пространства. Например, длинное имяnamespace International_Business_Machines{ /* ... */ }может быть ассоциировано с более коротким синонимом:namespace IBM = International_Business_Machines;Объявление
Панель рабочих пространств
Панель рабочих пространств Панель Workspaces, показанная на рис. 2.8, позволяет задавать параметры рабочих пространств. Рис. 2.8. Панель рабочих пространствРабочие пространства включают только необходимые наборы меню, инструментальные панели и палитры, сгруппированные и
Узлы пространств имен
Узлы пространств имен Каждому пространству имен, которое определено для данного элемента, соответствует узел пространства имен, ассоциируемый с узлом этого элемента. Множество узлов пространств имен, которое ассоциируется с данным элементом, включает в себя следующие
1.3.4. Псевдонимы
1.3.4. Псевдонимы Говоря языком пользователя операционной системы Windows, псевдоним — это ярлык, т. е. средство быстрого доступа к файлу, папке, программе. Аналогично ярлыку, псевдонимы по внешнему виду отличаются от источника (оригинала) черной стрелкой, расположенной в