Не нарушена ли копия xsl относительно осей xpath? - PullRequest
0 голосов
/ 25 августа 2011

Кажется, что функция копирования xsl отличается от функциональной иерархической структуры копирования в том, что она не оценивает условие выбора (если условие является осями XPath) перед применением действия функции.

так что xsl:copy select="ancestor::*" будет вести себя иначе, чем xsl:copy-of select="ancestor::*"

Ответы [ 3 ]

4 голосов
/ 25 августа 2011

По крайней мере, в XSLT 1.0 xsl:copy имеет не атрибут select: он только копирует текущий узел.

Из спецификации (выделено мое):

Элемент xsl: copy обеспечивает простой способ копирования текущего узла . Создание экземпляра элемента xsl: copy создает копию текущего узла. Узлы пространства имен текущего узла также автоматически копируются, но атрибуты и дочерние узлы не копируются автоматически. Содержимое элемента xsl: copy является шаблоном для атрибутов и дочерних элементов созданного узла; содержимое создается только для узлов типов, которые могут иметь атрибуты или дочерние элементы (то есть корневые узлы и узлы элементов).

Редактировать: XSLT2.0 xsl:copy ведет себя так же

2 голосов
/ 25 августа 2011

Ну, copy и copy-of предназначены для совершенно разных вещей.copy всегда работает на текущем узле и не поддерживает атрибут select.См http://zvon.org/xxl/XSLTreference/Output/xslt_copy.html против http://zvon.org/xxl/XSLTreference/Output/xslt_copy-of.html.

0 голосов
/ 26 августа 2011

Атрибут select добавляется в xsl: copy в XSLT 3.0, чтобы разрешить копирование узлов, отличных от узла контекста (полезно, например, в функции). Для XSLT 1.0 и 2.0 я действительно не знаю, что вы имеете в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...