2009-11-20 5 views
2

Моя потребность: я хочу скопировать все дочерние объекты одного выбранного узла, не копируя его. Пример: отXSLT: глубокая дочерняя копия

<father><son i="1" /><son i="2" /><son i="0"><lastNode /></son></father> 

я хочу, чтобы извлечь

<son i="1" /><son i="2" /><son i="0"><lastNode /></son> 

Я знаю, что я могу сделать это с помощью цикла для-каждого, а затем XSL: копирование из. Мне интересно, есть ли более простое выражение для достижения того же результата. Некоторая идея?

Последующие меры. Мой вопрос пропустил пару пунктов. Я должен был сказать, что все дети означают «все возможные дети», в том числе текстовые; еще одна проверка того, что лучший вопрос уже содержит ответ. Во-вторых, то, что я узнал от вас - сообщество, - это то, что я был достаточно глупым, чтобы попытаться решить XSL, что в фактах было больше проблемой XPATH. Спасибо всем вам за это понимание

Cheers.

+0

Если является элемент документа, эта глубокая копия не будет производить хорошо сформированный XML-документ. – Erlock

ответ

3

Попробуйте выбрать все дети ..

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:copy-of select="father/*"/> 
</xsl:template> 
</xsl:stylesheet> 

Е.Г. Учитывая вход

<father><son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son></father> 

Он выводит

<son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son> 
0

Использование, например. <xsl:copy-of select="father/son"/>

+0

Моя ошибка: мой пример вводил в заблуждение. Ваше решение работает только в том случае, если у детей есть . Если у вас есть это не работает – Daniel

3
<xsl:copy-of select="father/node()" /> 
+1

это будет соответствовать всем узлам, отличным от узла атрибута. – mikesub

+1

Ваш комментарий был полезен. Сначала я упустил из виду разницу между предложенным вами решением и решением, предложенным codemeit; но, по сути, ваше решение является правильным, когда вам нужно копировать текстовые файлы. Пример: если мне нужно преобразовать в html что-то вроде: Bla bla bla Я сказал bla! и т. Д. then делает то, что я на самом деле имел в виду, когда решение oter хранит только Я сказал bla!. Хорошая новость заключается в том, что мы когда-нибудь учились ... – Daniel

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