gpt4 book ai didi

xml - 我如何拆分 into multiple parts?

转载 作者:数据小太阳 更新时间:2023-10-29 02:18:21 26 4
gpt4 key购买 nike

我有一个元素列表,我想将其分成 3 个单独的列表。最终结果将是这样的:

<ul>
<li>element</li>
<li>element</li>
</ul>
<ul>
<li>element</li>
<li>element</li>
</ul>
<ul>
<li>element</li>
<li>element</li>
</ul>

我的XSLT是这样的,但是不行,因为我不能插入</ul> , 我不能插入小于号 ( < )。

<ul>
<xsl:for-each select="$myroot/item">
<li></li>

<xsl:if test="position() mod $maxItemsPerColumn = 0">
<!-- I want to close my ul, and start a new one here, but it doesn't work! -->
</xsl:if>
</xsl:for-each>
</ul>

有什么想法吗?提前致谢!

最佳答案

您不需要像递归那样做任何花哨的事情。上帝啊,甚至不要考虑使用 CDATA。

您只需像 XSLT 一样思考并问:“我想将什么输入元素转换为我的输出元素?”

假设每个 ul 应该包含 N 个 item,您想要转换每第 N 个输入 item,从第一个开始,进入 ul:

<xsl:variable name="n" select="number(4)"/>

<xsl:template match="/">
<output>
<xsl:apply-templates select="/root/item[position() mod $n = 1]"/>
</output>
</xsl:template>

这些 item 元素中的每一个都成为一个 ul ,其中包含该项目及其 N-1 个以下 sibling :

<xsl:template match="item">
<ul>
<xsl:for-each select=". | following-sibling::item[position() &lt; $n]">
<li>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</xsl:template>

假设这样的输入文档:

<root>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
</root>

...如果 $n 设置为 4,您将获得此输出:

<output>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<ul>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
<ul>
<li>9</li>
</ul>
</output>

关于xml - 我如何拆分 <xsl :foreach> into multiple parts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com