2013-03-08 4 views
1

Я абсолютно не знаком с XSLT, и мне нужно использовать его для некоторых преобразований. То, что я хотел бы понять, - это копировать все дочерние элементы определенного элемента в XML-документе.XSLT: Скопируйте все дочерние узлы на основе пространства имен uri

Этот элемент динамический, но я знаю uri его пространства имен. Есть ли способ сопоставления этого элемента на основе uri, который у меня есть, а затем копирование всех его детей?

Благодаря

ответ

1

xsl:copy-of элемента может быть использовано для копирования набора узлов к результирующему дереву.

Например, чтобы скопировать дочерние узлы в foo имен в результате, вы могли бы использовать что-то вроде этого:

<xsl:copy-of xmlns:ns="foo" select="ns:*"/> 

Смотрите также xsl:copy элемент для копирования текущего узла.


Edited добавить: Если вы знаете, пространство имен только во время выполнения, смотрите функцию namespace-uri XPath.

Например, если у вас есть переменная $uri, содержащий URI пространства имен, эквивалент выше будет:

<xsl:copy-of select="*[namespace-uri() = $uri]"/> 
+0

Привет Юкка, спасибо. Как это работает? В моем случае foo будет переменной; так что-то вроде xmlns: ns = $ uri. Возможно, есть более аккуратное решение. – isaiah

+0

@isaiah, есть функция 'namespace-uri()', которая извлекает URI пространства имен узла. Я добавил ответ, чтобы добавить пример. –

+0

Спасибо, это похоже на работу. Мне было интересно, с вашей точки зрения, как я могу узнать xslt? Я вижу, что он достаточно мощный. – isaiah

Смежные вопросы