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을이 작업을 수행 할 수 있다는 것을 알고를 추출하고 싶습니다. 동일한 결과를 얻는 간단한 표현이 있는지 궁금합니다. 어떤 생각?

후속 조치. 내 질문에 몇 가지 요점을 놓쳤다. 나는 모든 어린이가 텍스트 노드를 포함하여 "가능한 모든 어린이"를 의미한다고 말했어야했다. 더 나은 질문에 이미 답변이 포함되어 있다는 또 다른 확인. 둘째, 내가 여러분에게 배운 것은 - 지역 사회 - 사실은 XPATH 문제가 무엇인지 XSL로 해결하기에 충분하지 못하다는 것입니다. 이 통찰력에 대해 모두 감사합니다.

건배.

+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! 다음 는 방울이 솔루션을 유지하는 동안 실제로 의미했던 것을 수행합니다. bla!. 좋은 소식은 우리가 배울 무언가를 가지고 있다는 것입니다 ... – Daniel