【发布时间】:2022-06-10 18:03:09
【问题描述】:
基本上我需要一个接一个地重复每个子循环两次。在下面的例子中 'apple' 应该重复两次,然后 'mango' 应该重复两次
XML:
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
<root >
<child id="123">
<fruit>apple</fruit>
<comment>This is 1st line</comment>
</child>
<child id="345">
<fruit>mango</fruit>
<comment>This is 2nd line</comment>
</child>
</root>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsl:output indent="yes" />
<xsl:template match="/">
<xsl:param name="pack" select="2"></xsl:param>
<xsl:for-each select="root/child">
<xsl:for-each select="(//node())[position() <= $pack]">
<xsl:text>
</xsl:text>
<xsl:value-of select="//fruit"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="//comment"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
当前操作:
苹果 这是第一行
苹果 这是第一行
苹果 这是第一行
苹果 这是第一行
预期:
苹果 这是第一行
苹果 这是第一行
芒果 这是第二行
芒果 这是第二行
非常感谢您的帮助!
【问题讨论】:
-
你的逻辑不清楚:
pack参数是否表示child数据重复多少次? -
yes pack参数表示循环重复多少次
-
您是否仅限于 XSLT 1.0?