XSLT를 사용하여 xml 노드 하위 항목의 정확한 복사본을 만들려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/56837

  •  09-06-2019
  •  | 
  •  

문제

내 문제는 내 XML 문서에 XHTML 조각이 포함되어 있고 이를 XSLT를 통해 전달하는 동안 해당 조각을 맹글링하지 않고 렌더링하고 싶다는 것입니다.

CDATA에서 스니펫을 래핑하려고 시도했지만 직접적으로 에코되는 것이 아니라 < 및 >로 변환되기 때문에 작동하지 않습니다.

이를 수행하는 데 필요한 XSL은 무엇입니까?

도움이 되었습니까?

해결책

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

이를 '정체성 전환'이라고 합니다. XSLT 사양.

다른 팁

나는 그 문제에 직면했고 사본은 확실히 사용하기 가장 쉽습니다.ID는 작동하지만 이는 5줄의 코드이므로 XSLT 문서에 있는 것처럼 정의하는 것이 아니라 이러한 템플릿을 호출해야 합니다(그렇지 않으면 출력에서 ​​예상한 것을 얻지 못할 수도 있습니다).

내 주요 문제는 실제로 태그 자체가 아니라 태그의 내용을 복사하는 것이었습니다.실제로 해결하기는 매우 쉽지만 이를 파악하는 데 약간의 시간이 걸렸습니다. (QtXmlPatterns가 상당히 충돌하기 때문일 수도 있습니다!)

따라서 다음은 여기에 명명된 태그와 모든 하위 항목을 복사합니다.

<xsl:copy-of select="this/tag/here"/>

그러나 대부분의 경우 <here>가 실제로 컨테이너이기 때문에 그렇게 하고 싶지 않습니다. 즉, 출력에 표시되어서는 안 됩니다.이 경우 간단히 다음과 같이 할 수 있습니다.

<xsl:copy-of select="this/tag/here/*"/>

그러면 <here>라는 태그에 있는 모든 하위 항목이 복사됩니다.

xhtml이 YYY 요소에 있다고 가정합니다.

http://www.dpawson.co.uk/xsl/sect2/N1930.html 옵션을 설명합니다

xsl:복사본

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top