次の問題または課題に直面しています。ソース XML に 450 文字の要素があります。xslt を使用して、これを 75 文字のチャンクに変換したいと考えています。
...
<T61>
<parentInfo>SomeInfo</parentInfo>
<T86>
<info>abcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890</info>
</T86>
</T61>
...
生成する出力は次のようになります。
<T31>
<x>abcdefghijklmnopqrstuvwxyz01234567890</x>
</T31>
<T31>
<x>abcdefghijklmnopqrstuvwxyz01234567890</x>
</T31>
私のコードでは、彼の仕事をする T61 のテンプレートを使用しています。T86 用の別のテンプレートを作成し、T61 テンプレート内からこれを呼び出すことを考えましたが、完全な文字列があるため、これは機能しないようです。文字列を 75 の部分に分割できる関数を作成しました。しかし、関数の結果はまだ完全な文字列です。
以前の投稿の関数を使用しました:
<xsl:function name="my:splitItUp" as="xs:string">
<xsl:param name="input" as="xs:string"/>
<xsl:param name="chunk-size" as="xs:integer"/>
<xsl:value-of>
<xsl:for-each-group select="string-to-codepoints($input)" group-by="(position() -1) idiv $chunk-size">
<xsl:sequence select="codepoints-to-string(current-group())"/>
</xsl:for-each-group>
</xsl:value-of>
</xsl:function>
...
<xsl:template match="T86">
<xsl:for-each select="my:splitItUp(info, 75)">
<T31>
<communication>
<xsl:value-of select="." />
</communication>
</T31>
</xsl:for-each>
</xsl:template>
この構造は、常に完全な文字列になります。デバッグでは、分割されていることがわかりますが、結果が連結されています。どういうわけか機能から抜け出すことはできますか?
よろしくダーク