2010-04-23 6 views
3

다음은 기존 XML 파일입니다. xslt를 사용하여 첫 번째 요소 앞에 요소를 삽입하는 방법은 궁금합니다.사용자 지정 텍스트를 한 번 삽입하는 XSLT

<XmlFile> 
    <!-- insert another <tag> element here --> 
    <tag> 
     <innerTag> 
     </innerTag> 
    </tag> 
    <tag> 
     <innerTag> 
     </innerTag> 
    </tag> 
    <tag> 
     <innerTag> 
     </innerTag> 
    </tag> 
</XmlFile> 

나는를위한 각 루프를 사용하여 생각과 위치 = 0을 테스트하지만, 내용의 요소를 선두시를위한 각각의 이미 너무 늦었다. 이것은 일회성 텍스트이므로 이미 xsl 파일 안에있는 다른 xslt 템플릿과 결합 할 수 없습니다.

감사합니다.

+0

+1 좋은 질문입니다. 매우 간단하고 쉬운 해결책은 내 대답을 참조하십시오. :) –

답변

3

가장 중요한 사항 중 하나 인 신원 규칙을 알고 기억해야합니다. 신원 규칙을 사용하여 오버라이드 (override) : 여기

는 가장 기본적인 XSLT 디자인 패턴을 사용하여 매우 간단하고 컴팩트 한 솔루션이 변환이 제공된 XML 문서에 적용되는

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

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

<xsl:template match="/*/*[1]"> 
    <someNewElement/> 
    <xsl:call-template name="identity"/> 
</xsl:template> 
</xsl:stylesheet> 

을, 원하는 결과는 생산 된 :

<XmlFile> 
    <!-- insert another <tag> element here --> 
    <someNewElement /> 
<tag> 
     <innerTag> 
     </innerTag> 
    </tag> 
    <tag> 
     <innerTag> 
     </innerTag> 
    </tag> 
    <tag> 
     <innerTag> 
     </innerTag> 
    </tag> 
</XmlFile> 
관련 문제