Xslt 使用XLST将相邻链接转换为列表
我正在寻找有关XSLT转换表单的帮助 我当前正在转换与格式匹配的链接:Xslt 使用XLST将相邻链接转换为列表,xslt,Xslt,我正在寻找有关XSLT转换表单的帮助 我当前正在转换与格式匹配的链接: <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'">
<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>
但现在我希望能够检测到多个类型为“button”的链接按如下方式组合在一起:
<link type="button" url="/page.html" text="Do something" />
<link type="button" url="/page.html" text="Do something else" />
<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>
输出如下:
<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>
有人能帮忙吗
谢谢,
C.逻辑需要进入链接元素父元素的模板中。假设您使用的是XSLT 2.0,它将是这样的:
<link type="button" url="/page.html" text="Do something" />
<link type="button" url="/page.html" text="Do something else" />
<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>
请告诉我们您是使用XSLT 1.0还是XSLT 2.0处理器,就像XSLT 2.0对每个相邻的组所做的应该有所帮助。对不起,我应该在上面声明我使用的是1.0版。对不起,我应该在上面声明我使用的是1.0版,这种方法仍然适用吗?是的,你应该说。XSLT2.0已经推出5年了,现在它正成为标准。XSLT1.0中的分组要复杂得多:如果元素的模板在下一个同级上应用模板,则需要使用同级递归。