使用 xpath 函数 < 坚固 > 包含 < / 坚固 >, 将会是前进的方向, 但一种办法就是, 使用模板来匹配您想要的大小写。 因此, 您首先寻找任何 < 坚固 > 链接 < / 坚固 > 的元素 。
<xsl:apply-templates select="link"/>
然后您将有一个模板来匹配 < strong> link strong > 元素, 其中 @href 属性包含逗号 。
<xsl:template match="link[contains(@href, , )]">
您还需要一个更通用的模板, 以匹配所有其它 < command> > link weng > 元素。 只有当其他更具体的模板未找到匹配时, 才会匹配此模板 。
<xsl:template match="link">
例如,考虑以下XML
<root>
<doc>
<link href="http://www.example.com" />
</doc>
<doc>
<link href="http://www.example1.com,http://www.example2.com" />
</doc>
</root>
当应用下列 XSLT 时
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="root">
<table>
<tr>
<xsl:apply-templates select="doc"/>
</tr>
</table>
</xsl:template>
<xsl:template match="doc">
<xsl:apply-templates select="link"/>
<xsl:if test="not(link[@href])">
<td>No link</td>
</xsl:if>
</xsl:template>
<xsl:template match="link[contains(@href, , )]">
<td class="link2">
<xsl:call-template name="link">
<xsl:with-param name="href" select="substring-before(@href, , )"/>
</xsl:call-template>
<xsl:call-template name="link">
<xsl:with-param name="href" select="substring-after(@href, , )"/>
</xsl:call-template>
</td>
</xsl:template>
<xsl:template match="link">
<td class="link">
<xsl:call-template name="link"/>
</td>
</xsl:template>
<xsl:template name="link">
<xsl:param name="href" select="@href"/>
<a href="{$href}">
<xsl:copy-of select="$href"/> Link</a>
</xsl:template>
</xsl:stylesheet>
接下来是输出
<table>
<tr>
<td class="link">
<a href="http://www.example.com"> Link</a>
</td>
<td class="link2">
<a href="http://www.example1.com">http://www.example1.com Link</a>
<a href="http://www.example2.com">http://www.example2.com Link</a>
</td>
</tr>
</table>
请注意,本节还使用一个命名模板,以避免代码重复。
EDIT: 如果您有多个元素, 以及有 @href 属性的 < strong > link streng < / weng >, 您可以用多种方法做到这一点 。 如果您有数量有限的名字, 您也可以这样做 。
<xsl:apply-templates select="link|website|localpath" />
然后你可以像这样和他们匹配...
<xsl:template match="link[contains(@href, , )]|website[contains(@href, , )]|localpath[contains(@href, , )]">
<xsl:template match="link|website|website" />
最好看起来像任何元素一样
<xsl:apply-templates select="*" />
然后将任何元素与 href 属性匹配, 以及那些没有
<xsl:template match="doc/*[contains(@href, , )]">
<xsl:template match="doc/*">