2012-04-20 3 views
4

기존 노드 값으로 고정 된 텍스트를 추가하지만, 고민 한 다음XSLT 변환은 : 나는 XSLT 변환의 기본 지식을 가지고

내 XML을 포함

<fixednode1>do not transform me</fixednode1> 
<fixednode2>do not transform me also</fixednode2> 
<element1Label>1234</element1Label> 
<element7Label>hello</element7Label> 
<element9Label>bar</element9Label> 

나는 변환 할 바람직하게해야

<fixednode1>do not transform me</fixednode1> 
<fixednode2>do not transform me also</fixednode2> 
<element1Label>element1Label: 1234</element1Label> 
<element7Label>element7Label: hello</element7Label> 
<element9Label>element9Label: bar</element9Label> 

: 떨어진 2 개 개의 고정 노드로부터 각 노드의 값이 있음이 같은 결장 공백, 다음에 그 노드 이름 앞에 붙도록 전체 XML 일반적인 변환 - xml은 때때로 스타일 시트에서 알 수없는 노드 이름을 포함합니다. 2 개의 고정 노드 만 동일하게 유지되지만 변형되지 않아야하며 결과에 유지됩니다.

나는 "선택, 언제, 그렇지 않으면"진술과 씨름했지만 지금은 빠져있다. 도움이나 조언을 주시면 감사하겠습니다.

친절 감사

Scrat

답변

1

이 변환 : f를 적용

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

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

<xsl:template match="*[not(starts-with(name(), 'fixednode'))]/text()"> 
    <xsl:value-of select="concat(name(..), ': ', .)"/> 
</xsl:template> 
</xsl:stylesheet> 

따르게 XML 문서 (최상위 요소로 래핑 제공된 XML 단편은, 잘 형성된 XML 문서가되기 위해)

<t> 
    <fixednode1>do not transform me</fixednode1> 
    <fixednode2>do not transform me also</fixednode2> 
    <element1Label>element1Label: 1234</element1Label> 
    <element7Label>element7Label: hello</element7Label> 
    <element9Label>element9Label: bar</element9Label> 
</t> 
:
<t> 
    <fixednode1>do not transform me</fixednode1> 
    <fixednode2>do not transform me also</fixednode2> 
    <element1Label>1234</element1Label> 
    <element7Label>hello</element7Label> 
    <element9Label>bar</element9Label> 
</t> 

가 원하는 정확한 결과를 생성

3

그냥 일반적인 템플릿과 전문 하나를 가지고 :

<xsl:template match="*"> 
    <!-- prepend code here --> 
</xsl:template> 

<xsl:template match="fixednode1|fixednode2" priority="10"> 
    <xsl:copy-of select="."/> 
</xsl:template>