0
XML 파일을 그룹으로 분할해야합니다. 각각을 특정 노드의 주어진 수로 제한.노드 수를 기준으로 XML 파일 분할
샘플 입력 데이터 : I 3의 그룹으로 파일을 분할하기 위해 노력하고 아래의 XSLT를 얻을 수있었습니다
<RESULT>
<ROW>
<DATA>Item1</DATA>
<DATA1>SubItem1</DATA1>
</ROW>
<ROW>
<DATA>Item2</DATA>
<DATA1>SubItem1</DATA1>
</ROW>
<ROW>
<DATA>Item3</DATA>
<DATA1>SubItem3</DATA1>
</ROW>
<ROW>
<DATA>Item4</DATA>
<DATA1>SubItem4</DATA1>
</ROW>
<ROW>
<DATA>Item5</DATA>
<DATA1>SubItem5</DATA1>
</ROW>
<ROW>
<DATA>Item6</DATA>
<DATA1>SubItem6</DATA1>
</ROW>
</RESULT>
때 (: <ROW>Item1</ROW>
예를 들어)에만 ROW 노드에 존재하는 데이터가 .
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:param name="group-size" select="3"/>
<xsl:template match="/RESULT">
<ROOT>
<xsl:if test="count(//ROW) > 0">
<xsl:apply-templates select="ROW"/>
</xsl:if>
</ROOT>
</xsl:template>
<xsl:template match="ROW">
<xsl:if test="position() mod $group-size = 1">
<RESULT>
<xsl:apply-templates select=".|following-sibling::ROW[position() < $group-size]" mode="list"/>
</RESULT>
</xsl:if>
</xsl:template>
<xsl:template match="ROW" mode="list">
<ROW><xsl:value-of select="current()" /></ROW>
</xsl:template>
</xsl:stylesheet>
그러나,이 코드는 추가 데이터 노드를 설명하기 위해 수정하고 여전히 아래의 원하는 결과를 제공하는 세 개의 행의 그룹으로 분리 될 필요가 방법을 모르겠어요. 나는 모든 도움에 크게 감사한다!
그래서 원하는 결과는 다음과 같이한다 : 당신은 <xsl:apply-templates select="ROW[position() mod $group-size = 1]"/>
을 사용할 수 있습니다
<RESULT>
<ROW>
<DATA>Item1</DATA>
<DATA1>SubItem1</DATA1>
</ROW>
<ROW>
<DATA>Item2</DATA>
<DATA1>SubItem1</DATA1>
</ROW>
<ROW>
<DATA>Item3</DATA>
<DATA1>SubItem3</DATA1>
</ROW>
</RESULT>
<RESULT>
<ROW>
<DATA>Item4</DATA>
<DATA1>SubItem4</DATA1>
</ROW>
<ROW>
<DATA>Item5</DATA>
<DATA1>SubItem5</DATA1>
</ROW>
<ROW>
<DATA>Item6</DATA>
<DATA1>SubItem6</DATA1>
</ROW>
</RESULT>
이 내가 그것을가 필요 정확히했다. 감사! – brad999