我正面临以下问题或挑战。我的源 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>
这种结构总是产生一个完整的字符串。在调试中,我看到它将其拆分,但将结果连接在一起。我能以某种方式摆脱这个功能吗?
最好的问候德克