2013-03-07 1 views
-1

XSLT를 처음 사용했습니다. 나는 다음 XML을 가지고 있으며 XSLT를 사용하여 A의 각 요소를 반복하여 값을 얻을 수 있는지 궁금해한다. 또한 각 요소에 대해 위치 모듈 3 = 2 인 경우 해당 요소 값과 다음 요소 값을 가져옵니다. 예를 들어, - 02 mod 3 = 2이기 때문에 값 22와 2.5 등을 얻습니다.XSLT를 사용하는 노드 내에서 다른 이름의 하위 요소를 순환합니다.

도움을 주시면 감사하겠습니다.

감사합니다.

<A> 
<A01>abc</A01> 
<A02>22</A02> 
<A03>2.5</A03> 
<A04>0</A04> 
<A05>2</A05> 
<A06>1.8</A06> 
<A07>2</A07> 
<A08>3</A08> 
<A09>1.9</A09> 
</A> 
<A> 
<A01>abb</A01> 
<A02>22</A02> 
<A03>1.5</A03> 
<A04/> 
</A> 

나는 아래처럼 보이게 결과를 싶습니다 출력에서 ​​

 
abc|22|2.5|0 
abc|2|1.8|2 
abc|3|1.9| 
abb|22|1.5| 
+1

당신이 당신의 출력과 같이 무엇을 원하는가 올바른 결과를 생성? –

+0

결과를 다음과 같이 나타내겠습니다. abc | 22 | 2.5 | 0 abc | 2 | 1.8 | 2 abc | 3 | 19.9 | –

답변

0

을 당신이 그 열 어린이 1 인 행을 생성 할 것 같습니다 설명, N, N + 1, N n 개의 모드 3 = 2

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates select="*/A/*[(position() mod 3) = 2]"/> 
    </xsl:template> 

    <xsl:template match="*"> 
    <xsl:value-of select="concat(../*[1],'|', ., '|', 
     following-sibling::*[1], '|', following-sibling::*[2], 
     '&#10;')"/> 
    </xsl:template> 
</xsl:stylesheet> 

는 (귀하의 예제가 추가 루트 요소에 싸여이 잘 형성 만들기 위해)

다음 XML에 적용하도록 모든 N +2 691,363,210
<root> 
<A> 
<A01>abc</A01> 
<A02>22</A02> 
<A03>2.5</A03> 
<A04>0</A04> 
<A05>2</A05> 
<A06>1.8</A06> 
<A07>2</A07> 
<A08>3</A08> 
<A09>1.9</A09> 
</A> 
<A> 
<A01>abb</A01> 
<A02>22</A02> 
<A03>1.5</A03> 
<A04/> 
</A> 
</root> 

이 스타일은

abc|22|2.5|0 
abc|2|1.8|2 
abc|3|1.9| 
abb|22|1.5| 
+0

감사합니다. 이것은 정확히 내가 뭘 찾고 있어요 :) –

관련 문제