我是XSLT的新手 我有一个源XSLT,如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child-value>3</child-value>
</root>
我的目标应该有类似下面的内容
<?xml version="1.0" encoding="UTF-8"?>
<pass_details>
<pass id ='p1'>1</pass>
<pass id ='p2'>2</pass>
<pass id ='p3'>3</pass>
</pass_details>
<pass>
代码的数量应该基于child-value
代码的值?
任何人都可以帮助xslt吗?
答案 0 :(得分:4)
如果您仅限于XSLT 1.0,则必须调用递归模板来生成pass
元素:
<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:template match="/root">
<pass_details>
<xsl:call-template name="gen">
<xsl:with-param name="n" select="child-value"/>
</xsl:call-template>
</pass_details>
</xsl:template>
<xsl:template name="gen">
<xsl:param name="n"/>
<xsl:if test="$n > 0">
<xsl:call-template name="gen">
<xsl:with-param name="n" select="$n - 1"/>
</xsl:call-template>
<pass id="p{$n}">
<xsl:value-of select="$n"/>
</pass>
</xsl:if>
</xsl:template>
</xsl:stylesheet>