在XSLT中,如何在启动函数中给出多个或条件?

时间:2014-01-08 17:00:39

标签: xslt

请建议。

如何在Starts-with Function中放置多个'或'条件。

开始-with.xml

<root>
 <Author><fnm>Kishan</fnm><snm>Thondaman</snm></Author>
 <Author><fnm>Arun</fnm><snm>Mechiri</snm></Author>
 <Author><fnm>Raju</fnm><snm>Bhaskar</snm></Author>
 <Author><fnm>Mahesh</fnm><snm>Kumar</snm></Author>
 <Author><fnm>Deepa</fnm><snm>Pandith</snm></Author>
 <Author><fnm>Divya</fnm><snm>Pandith</snm></Author>
 <Author><fnm>Vinay</fnm><snm>Mechiri</snm></Author>
 <Author><fnm>Dishanth</fnm><snm>Bhaskar</snm></Author>
 <Author><fnm>Gagan</fnm><snm>Thondaman</snm></Author>
</root>

开始-with.xsl

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@* | node()"/>
        </xsl:element>
</xsl:template>

<xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
</xsl:template>

<xsl:template match="Author">
        <xsl:choose>
                <xsl:when test="starts-with(snm, 'Thondaman')">
                        <b><xsl:copy-of select="."/></b>
                </xsl:when>
                <xsl:when test="starts-with(snm, 'Mechiri')">
                        <b><xsl:copy-of select="."/></b>
                </xsl:when>
                <xsl:when test="starts-with(snm, 'Pandith')">
                        <i><xsl:copy-of select="."/></i>
                </xsl:when>
                <xsl:when test="starts-with(snm, 'Bhaskar')">
                        <i><xsl:copy-of select="."/></i>
                </xsl:when>
                <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise>
        </xsl:choose>
</xsl:template>

必需的XSLT标记:一个Starts-with中的两个或更多“OR”条件,而不是单个find。

<xsl:when test="starts-with(snm, '(Thondaman|Mechiri)')">
    <b><xsl:copy-of select="."/></b>
 </xsl:when>

1 个答案:

答案 0 :(得分:1)

自然:

starts-with(snm, 'Mechiri') or starts-with(snm, 'Thondaman')

使用XSLT 2.0,您还可以使用正则表达式(通过fn:matches()),但starts-with()本身仅支持固定字符串。