2011-08-25 6 views
0

xsl 복사 함수는 함수 작업을 적용하기 전에 선택 조건 (조건이 XPath 축인 경우)을 평가하지 않는다는 점에서 copy-of의 기능적 계층 패턴과 다릅니다. xpath 축에 대해 xsl 복사본이 손상 되었습니까?

그래서 xsl:copy select="ancestor::*"

는 적어도 XSLT 1.0, xsl:copy에서 하지이 선택 속성을 가지고 다른

+4

예제를 제공해 주시겠습니까? 힌트 : 나는 xsl : copy가 깨지지 않았 음을 확신한다. – driis

+0

안녕하세요 Driis, 우리는 모든 데이터 xml (3 levels +)을 사용할 수 있습니다. 현재 노드가 leave 노드 중 하나 인 경우 parent :가있는 xsl : copy는 현재 노드를 제공하고 xsl : copy-of select = "parent :: *"는 부모 노드를 제공합니다 (fluff : 물론 자손) – YesLupYesMa

답변

4

xsl:copy-of select="ancestor::*"보다 작동합니다 : 그것은 단지 복사 현재 노드. spec (강조 광산)에서

:

XSL : 복사 요소는 현재 노드을 복사하는 쉬운 방법을 제공합니다. xsl : copy 요소를 인스턴스화하면 현재 노드의 사본이 작성됩니다. 현재 노드의 네임 스페이스 노드도 자동으로 복사되지만 노드의 속성과 하위 노드는 자동으로 복사되지 않습니다. xsl : copy 요소의 내용은 생성 된 노드의 속성과 자식에 대한 템플릿입니다. 콘텐츠는 속성 또는 자식 (즉, 루트 노드 및 요소 노드)을 가질 수있는 유형의 노드에 대해서만 인스턴스화됩니다.

편집 : XSLT2.0 xsl:copy 같은 방법으로

+0

오 촬영, 네 말이 맞아! 고맙습니다. – YesLupYesMa

0

XSLT 3.0의 xsl : copy에 select 속성이 추가되어 컨텍스트 노드가 아닌 노드를 복사 할 수 있습니다 (예 : 함수에서 유용). XSLT 1.0과 2.0에서, 나는 당신이 의미하는 것을 정말로 모른다.

관련 문제