Книга: Технология XSLT
Создание узлов элементов
В четвертой главе мы уже разобрали один из способов создания в выходящем документе узлов элементов, а именно — использование литеральных элементов результата, которые в неизменном виде копируются процессором в выходящее дерево. Этот способ прост, понятен и удобен, однако есть две основные проблемы, которые он не может решить.
? Что, если в выходящем документе требуется создать элемент с заранее неизвестным (например, вычисляемым во время выполнения) именем?
? Как создать элемент, принадлежащий пространству имен, известному обрабатывающему процессору?
Поясним на примерах суть и той и другой проблемы.
Представим себе входящий документ вида
<element name="a">
<element name="b"/>
</element>
который нужно преобразовать во что-нибудь наподобие
<а>
<b/>
</а>
Совершенно очевидно, что литеральными элементами тут не обойдешься — мы не знаем заранее имена элементов выходящего документа, ибо они определяются значениями атрибутов входящего.
Представим теперь, что нам в XSLT-преобразовании необходимо сгенерировать другое XSLT-преобразование. Скажем из элемента вида
<remove element="a"/>
нужно получить шаблон
<xsl:template match="a"/>
Беда в том, что литеральные элементы не могут быть использованы для создания, скажем, элемента xsl:template
по той причине, что любой элемент с локальной частью имени template
, принадлежащий пространству имен XSLT будет рассматриваться процессором, как элемент самого преобразования. Очевидно, что
<xsl:template match="remove">
<xsl:template match="{@element}"/>
</xsl:template>
будет некорректным определением. He поможет и смена префикса, ведь принадлежность пространству имен определяется не им.
Для того чтобы решить эти проблемы (главным образом, первую), XSLT предоставляет возможность создавать узлы элементов при помощи элемента xsl:element
.
- Создание узлов
- Сводная таблица характеристик узлов
- Перечисление узлов
- Создание предикатов
- 15.6. Создание, вставка и удаление узлов
- Создание образцов выбора
- 15.6.3. Удаление и замена узлов
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD