我正在寻找XSLT Tranforms的一些帮助。
我正在转换符合格式的链接:
<link type="button" url="/page.html" text="Do something" />
使用转换:
<xsl:template match="link">
<a target="_blank" href="{@url}" title="{@text}">
<xsl:if test="@type='button'">
<xsl:attribute name="class">btn</xsl:attribute>
</xsl:if>
<xsl:value-of select="@text" />
</a>
</xsl:template>
这给了我输出:
<a class="btn" title="Do Something" href="/page.html" target="_blank">Do Something</a>
但是现在我希望能够检测到具有“按钮”类型的多个链接何时被组合在一起:
<link type="button" url="/page.html" text="Do something" />
<link type="button" url="/page.html" text="Do something else" />
输出如下:
<ul class="btns">
<li><a href="page.html" title="Do something" target="_blank" class="btn testing">Do something</a></li>
<li><a href="page.html" title="Do something else" target="_blank" class="btn testing">Do something else</a></li>
</ul>
有人可以协助吗?
谢谢, 下进行。
答案 0 :(得分:1)
逻辑需要进入链接元素的父模板。假设您正在使用XSLT 2.0,它将是这样的:
<xsl:template match="parent">
<xsl:for-each-group select="*" group-adjacent="node-name()">
<xsl:choose>
<xsl:when test="self::link">
<ul>
<xsl:apply-templates select="current-group()"/>
</ul>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>