변환 (http://stackoverflow.com/questions/12862902/how-to-do-xslt-muenchian-grouping-with-some-null-attributes/12871809#12871809) 속성 (@group)을 기반으로하는 그룹이고 해당 속성은 null입니다. 처음에는 그냥 문자열을 연결하는 것이었지만 지금은 문자열을 파일 위치로 사용하고 그룹화되어있는 경우 문서를 concaten 처리하도록 확장해야합니다 - 그룹화되지 않은 경우 문자열을 파일로 사용해야하지만 ' 다른 어떤 것에도 참여할 필요가 없습니다. ...그룹화 변환의 XSLT Concat HTML 문서
<root>
<section>
<subsection>
<module>
<comp>111</comp>
</module>
<module group='group01'>
<comp>222</comp>
</module>
<module group='group01'>
<comp>333</comp>
</module>
<module>
<comp>444</comp>
</module>
<module>
<comp>555</comp>
</module>
</subsection>
</section>
<section>
<subsection>
<module group ="group02">
<comp>666</comp>
</module>
<module group ="group02">
<comp>777</comp>
</module>
<module>
<comp>888</comp>
</module>
<module group ="group03">
<comp>999</comp>
</module>
<module group ="group03">
<comp>101010</comp>
</module>
</subsection>
<subsection>
<module group ="group04">
<comp>11111</comp>
</module>
<module group ="group04">
<comp>121212</comp>
</module>
<module group ="group05">
<comp>131313</comp>
</module>
<module group ="group05">
<comp>141414</comp>
</module>
<module group ="group06">
<comp>151515</comp>
</module>
<module group ="group06">
<comp>161616</comp>
</module>
<module>
<comp>171717</comp>
</module>
</subsection>
이 순간에 변화가 같은 그룹의 경우 약하게 문자열을 concats 일 :
그리고 샘플 입력
<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:value-of select="comp"/>
</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:apply-templates select="$modules/comp/text()"/>
</content>
<count>
<xsl:value-of select="count($modules)" />
</count>
</page>
</xsl:template>
<xsl:template match="module"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
을 : 변환 이 그룹화되지 않은 부분에 대한 문자열이 파일 위치로 사용됩니다 :
012 순간
그룹화 된 부분이 출력됩니다
...
<page>
<content>strgin1string2</content>
<count>2</count>
</page>
...
I이 필요합니다
...
<page>
<content>
TEXT FROM FILE CALLED string1
TEXT FROM FILE CALLED string2
</content>
<count>2</count>
</page>
...
감사!
이 파일은 XML 파일입니까? XSLT 1.0을 사용하면'document' 함수로 가져올 수있는 것이 모두 XML 문서입니다. XSLT 2.0 만 비 XML 텍스트 파일을 가져올 수있는'unparsed-text'를 가지고 있습니다. –