<xsl:variable name="string" select="'abcdefghijklmnopqrstuvwxyz'" />
我需要此字符串到一个节点,由5个字符,分组转换明显最后一个基团可以是小于或等于根据输入串5个字符使用XSLT
<node>
<a>abcde</a>
<a>fghij</a>
<a>klmno</a>
<a>pqrst</a>
<a>uvwxy</a>
<a>z</a>
</node>
<xsl:variable name="string" select="'abcdefghijklmnopqrstuvwxyz'" />
我需要此字符串到一个节点,由5个字符,分组转换明显最后一个基团可以是小于或等于根据输入串5个字符使用XSLT
<node>
<a>abcde</a>
<a>fghij</a>
<a>klmno</a>
<a>pqrst</a>
<a>uvwxy</a>
<a>z</a>
</node>
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pStr" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:param name="pChunkSize" select="5"/>
<xsl:template match="/*">
<node>
<xsl:call-template name="split"/>
</node>
</xsl:template>
<xsl:template name="split">
<xsl:param name="pStr" select="$pStr" />
<xsl:param name="pChunkSize" select="$pChunkSize"/>
<xsl:variable name="pRemLength" select="string-length($pStr)"/>
<xsl:if test="$pRemLength">
<a><xsl:value-of select="substring($pStr, 1, $pChunkSize)"/></a>
<xsl:call-template name="split">
<xsl:with-param name="pStr" select="substring($pStr, $pChunkSize+1)"/>
<xsl:with-param name="pChunkSize" select="$pChunkSize"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
当在任何XML文档(未使用)被应用时产生有用的,正确的结果:
<node>
<a>abcde</a>
<a>fghij</a>
<a>klmno</a>
<a>pqrst</a>
<a>uvwxy</a>
<a>z</a>
</node>
说明:原始递归没有字符串长度为停止状态,并每个递归步骤都会产生下一个块并从字符串中切割出来。
这里是一个答案类似的问题,你可以很容易地改变它来掩盖你的问题:http://www.jguru.com/faq/view.jsp?EID=1070072
谢谢Afshin .. – Suresh 2012-01-10 17:25:13
太棒了。感谢您的解释:) – Suresh 2012-01-10 09:30:51
@Maneesh:不客气。 – 2012-01-10 13:40:11