gpt4 book ai didi

xslt - 用 div 包裹两个值大于 0 的节点

转载 作者:行者123 更新时间:2023-12-03 16:12:34 25 4
gpt4 key购买 nike

我需要用 xslt 转换以下 xml

<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>0</item>
<item>6</item>

进入以下html
<div>
<i>1</i>
<i>2</i>
</div>

<div>
<i>3</i>
<i>6</i>
</div>

换句话说,删除值为 0 的节点并用一个 div 包裹每 2 个节点

最佳答案

我会这样做:

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:param name="value" select="0"/>

<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>

<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates select="item[not(. = $value)][position() mod 2 = 1]" mode="group"/>
</xsl:copy>
</xsl:template>

<xsl:template match="item" mode="group">
<div>
<xsl:apply-templates select=". | following-sibling::item[not(. = $value)][1]"/>
</div>
</xsl:template>

</xsl:stylesheet>

然后输入是
<root>
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>0</item>
<item>6</item>
</root>

你得到结果
<root>
<div>
<item>1</item>
<item>2</item>
</div>
<div>
<item>3</item>
<item>6</item>
</div>
</root>

如果你也想转型 itemi元素只需添加模板
<xsl:template match="item">
<i>
<xsl:apply-templates/>
</i>
</xsl:template>

在样式表中。

关于xslt - 用 div 包裹两个值大于 0 的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022119/

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