名称上的XSL部分匹配

时间:2014-11-17 17:09:02

标签: xslt sharepoint-2010

使用单个xsl模板,如何在@Name字段上执行部分匹配?

现在,我正在使用custom Sharepoint fldtypes.xsl file

关于如何匹配多个名称有一个very nice answer here,但我希望匹配名称中包含“phone”的任何字段,例如:

  • 主要电话
  • 辅助电话
  • Alt phone
  • 电话
  • 电话
  • 手机
    (等....)

这是我当前的模板,适用于完全匹配:

<!-- Turn Phone number fields into callto links-->
<xsl:template match="FieldRef[contains('|phone|Phone|', concat('|',@Name,'|') )]" mode="Text_body">
    <xsl:param name="thisNode" select="."/>
    <xsl:variable name="currentValue" select="$thisNode/@*[name()=current()/@Name]" />
    <xsl:choose>
        <xsl:when test="$currentValue=''">
            <span></span>
        </xsl:when>
        <xsl:otherwise>
            <a href="callto:{$currentValue}" class="calltolink" target=""><xsl:value-of select="$currentValue" /></a>
        </xsl:otherwise>            
    </xsl:choose>
</xsl:template> 

1 个答案:

答案 0 :(得分:2)

我只想猜测(因为你不会告诉我们你的输入)你想要匹配:

<xsl:template match="FieldRef[contains(@Name, 'Phone') or contains(@Name, 'phone')]">