使用XSLT 1.0,我需要编写“跟随”SegmentHeader的Count of Txn记录。我可以在每个SegmentHeader下写入的Txn记录数量受到限制。例如 - 如果我总共有5个交易记录,每个段限制为3,则应将它们分成2个SegmentHeaders,包含3个和2个交易记录。
必需输出:
<file>
<SegmentHeader>
<TransactionCount>3</TransactionCount>
</SegmentHeader>
<Txn />
<Txn />
<Txn />
<SegmentHeader>
<TransactionCount>2</TransactionCount>
</SegmentHeader>
<Txn />
<Txn />
</file>
通过使用“position()mod $ recordLimit = 1”我可以根据需要编写SegmentHeaders和Txn记录,但无法找到写入事务计数的方法。
答案 0 :(得分:1)
以下是一个可以适应您情况的简单示例:
<强> XML 强>
<input>
<item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
<item>e</item>
</input>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="group-size" select="3"/>
<xsl:template match="/input">
<output>
<xsl:for-each select="item[position() mod $group-size = 1]">
<xsl:variable name="group" select=". | following-sibling::item[position() < $group-size]"/>
<header>
<item-count>
<xsl:value-of select="count($group)"/>
</item-count>
</header>
<xsl:copy-of select="$group"/>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
<强>结果强>
<?xml version="1.0" encoding="UTF-8"?>
<output>
<header>
<item-count>3</item-count>
</header>
<item>a</item>
<item>b</item>
<item>c</item>
<header>
<item-count>2</item-count>
</header>
<item>d</item>
<item>e</item>
</output>