カウント/増分を含めたいグループ化変換があります。グループ化が割り当てられている場合、変換は値をグループ化します。値は、トランスフォームが一緒に結合するために使用するファイルの場所であるため、コンテンツは 1 つとして出力されます。グループ化が割り当てられていない場合、トランスフォームは値を使用してファイルの内容を取得し、何も追加しません。
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="modules" match="module[@group]" use="concat(generate-id(..), '|', @group)"/>
<xsl:template match="root">
<AllSections>
<xsl:apply-templates />
</AllSections>
</xsl:template>
<!-- NON GROUPED PART -->
<xsl:template match="module[not(@group)]">
<page>
<content>
<xsl:variable name="var">
<xsl:value-of select="comp"/>
</xsl:variable>
<xsl:copy-of select="document(concat('../myfile/', string($var)))"/>
</content>
</page>
</xsl:template>
<!--GROUPED PART -->
<xsl:template match="module[@group][generate-id() = generate-id(key('modules', concat(generate-id(..), '|', @group))[1])]">
<xsl:variable name="modules" select="key('modules', concat(generate-id(..), '|', @group))"/>
<page>
<content>
<xsl:for-each select="$modules/comp">
<xsl:copy-of select="document(concat('../myfile/', .))"/>
</xsl:for-each>
</content>
</page>
</xsl:template>
<xsl:template match="module"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
入力:
<root>
<section>
<subsection>
<module>
<comp>aaa.html</comp>
</module>
<module group='group01'>
<comp>bbb.html</comp>
</module>
<module group='group01'>
<comp>ccc.html</comp>
</module>
<module>
<comp>ddd.html</comp>
</module>
<module>
<comp>eee.html</comp>
</module>
</subsection>
</section>
<section>
<subsection>
<module group ="group02">
<comp>fff.html</comp>
</module>
<module group ="group02">
<comp>ggg.html</comp>
</module>
<module>
<comp>hhh.html</comp>
</module>
<module group ="group03">
<comp>iii.html</comp>
</module>
<module group ="group03">
<comp>jjj.html</comp>
</module>
</subsection>
<subsection>
<module group ="group04">
<comp>kkk.html</comp>
</module>
<module group ="group04">
<comp>lll.html</comp>
</module>
<module group ="group05">
<comp>mmm.html</comp>
</module>
<module group ="group05">
<comp>nnn.html</comp>
</module>
<module group ="group06">
<comp>ooo.html</comp>
</module>
<module group ="group06">
<comp>ppp.html/comp>
</module>
<module>
<comp>qqq.html</comp>
</module>
</subsection>
</section>
</root>
出力サンプル:
<?xml version="1.0" encoding="utf-8"?>
<AllSections>
<section>
<subsection>
<page>
<content>
CONTENT FROM aaa.html
</content>
</page>
<page>
<content>
CONTENT FROM bbb.html
CONTENT FROM ccc.html
</content>
</page>
<page>
<content>
CONTENT FROM ddd.html
</content>
</page>
<page>
<content>
CONTENT FROM eee.html
</content>
</page>
</subsection>
</section>
<section>
<subsection>
<page>
<content>
CONTENT FROM fff.html
CONTENT FROM ggg.html
</content>
</page>
<page>
<content>
CONTENT FROM hhh.html
</content>
</page>
<page>
<content>
CONTENT FROM iii.html
CONTENT FROM jjj.html
</content>
</page>
</subsection>
<subsection>
<page>
<content>
CONTENT FROM kkk.html
CONTENT FROM lll.html
</content>
</page>
<page>
<content>
CONTENT FROM mmm.html
CONTENT FROM nnn.html
</content>
</page>
<page>
<content>
CONTENT FROM ooo.html
CONTENT FROM ppp.html
</content>
</page>
<page>
<content>
CONTENT FROM qqq.html
</content>
</page>
</subsection>
</section>
</AllSections>
私がやろうとしているのは、セクション AND サブセクション AND にインクリメントを割り当てることに関して、合計ページのカウンターを入れることです。以下を参照してください。param を試しましたが、再帰テンプレートが必要ですか? 変換の残りの部分を壊すために sem だけを入れた場合。テンプレートを使用すると、すでに「ループ」が作成されていませんか?
取得しようとしている出力:
<AllSections>
<section>
<subsection>
<page>
<content>
CONTENT FROM aaa.html
</content>
<page_no>1</page_no>
</page>
<page>
<content>
CONTENT FROM bbb.html
CONTENT FROM ccc.html
</content>
<page_no>2</page_no>
</page>
<page>
<content>
CONTENT FROM ddd.html
</content>
<page_no>3</page_no>
</page>
<page>
<content>
CONTENT FROM eee.html
</content>
<page_no>4</page_no>
</page>
<subscection_total_pages>4</subscection_total_pages>
</subsection>
<scection_total_pages>4</scection_total_pages>
</section>
<section>
<subsection>
<page>
<content>
CONTENT FROM fff.html
CONTENT FROM ggg.html
</content>
<page_no>1</page_no>
</page>
<page>
<content>
CONTENT FROM hhh.html
</content>
<page_no>2</page_no>
</page>
<page>
<content>
CONTENT FROM iii.html
CONTENT FROM jjj.html
</content>
<page_no>3</page_no>
</page>
<subscection_total_pages>3</subscection_total_pages>
</subsection>
<subsection>
<page>
<content>
CONTENT FROM kkk.html
CONTENT FROM lll.html
</content>
<page_no>1</page_no>
</page>
<page>
<content>
CONTENT FROM mmm.html
CONTENT FROM nnn.html
</content>
<page_no>2</page_no>
</page>
<page>
<content>
CONTENT FROM ooo.html
CONTENT FROM ppp.html
</content>
<page_no>3</page_no>
</page>
<page>
<content>
CONTENT FROM qqq.html
</content>
<page_no>4</page_no>
</page>
<subscection_total_pages>4</subscection_total_pages>
</subsection>
<scection_total_pages>7</scection_total_pages>
</section>
</AllSections>
ありがとう!