我正在寻找一种用 xsl 包装内容的方法。这是我正在做的一个简化示例。Lot's of content ... 是大量的内容,并且锚标记仅用作示例。它可以是 div 或其他任何东西。
XML:
<root>
<attribution>John Smith</attribution>
<attributionUrl>http://www.johnsmith.com</attributionUrl>
</root>
XSL:我目前是如何做的。这增加了大量的 xsl,我相信有一种方法可以简化。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:if test="attribution != ''">
<xsl:choose>
<xsl:when test="attributionUrl != ''">
<a>
<xsl:attribute name="href"><xsl:value-of select="attributionUrl"/></xsl:attribute>
<span>Thank you, <xsl:value-of select="attribution"/></span>
<div>Lots of content ...</div>
</a>
</xsl:when>
<xsl:otherwise>
<span>Thank you, <xsl:value-of select="attribution"/></span>
<div>Lots of content ...</div>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
XSL:从概念上讲,这就是我想要做的。它不起作用,因为它是无效的 XML,但它确实抓住了这个想法。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:if test="attributionUrl != ''">
<a>
</xsl:if>
<xsl:attribute name="href"><xsl:value-of select="attributionUrl"/></xsl:attribute>
<span>Thank you, <xsl:value-of select="attribution"/></span>
<div>Lots of content ...</div>
<xsl:if test="attributionUrl != ''">
</a>
</xsl:if>
</xsl:template>
编辑:
我试图避免多个版本<div>Lots of content ...</div>