xslt - 如何在 xsl 模板中匹配这个或那个?

标签 xslt

在我的 Sharepoint fldtypes_custom.xsl 文件中,我有这段代码,它运行得很好。但是,我想在三个或四个相似的字段上使用相同的代码。

有没有办法可以在同一模板中匹配名为 status1 OR status2status3 的字段?现在我必须拥有该代码块的三个副本,其中唯一的区别是 fieldref 名称。我想合并代码。

<xsl:template match="FieldRef[@Name='status1']" mode="body">
    <xsl:param name="thisNode" select="."/>
    <xsl:variable name="currentValue" select="$thisNode/@status1" />
    <xsl:variable name="statusRating1">(1)</xsl:variable>
    <xsl:variable name="statusRating2">(2)</xsl:variable>
    <xsl:variable name="statusRating3">(3)</xsl:variable>

    <xsl:choose>
        <xsl:when test="contains($currentValue, $statusRating1)">
            <span class="statusRatingX statusRating1"></span>
        </xsl:when>
        <xsl:when test="contains($currentValue, $statusRating2)">
            <span class="statusRatingX statusRating2"></span>
        </xsl:when> 
        <xsl:when test="contains($currentValue, $statusRating3)">
            <span class="statusRatingX statusRating3"></span>
        </xsl:when> 
        <xsl:otherwise>
            <span class="statusRatingN"></span>
        </xsl:otherwise>                    
    </xsl:choose>
</xsl:template> 

最佳答案

Is there a way I can match fields named status1 OR status2, OR status3 in the same template?

使用:

<xsl:template match="status1 | status2 | status3">
  <!-- Your processing here -->
</xsl:template>

但是,我从提供的代码中看到,字符串 "status1""status2""status3" 不是元素名称 - 它们只是 FieldRef 元素的 Name 属性的可能值。

在这种情况下,您的模板可能是:

<xsl:template match="FieldRef
     [@Name = 'status1' or @Name = 'status2' or @Name = 'status3']">
  <!-- Your processing here -->
</xsl:template>

如果 Name 属性有许多可能的值,可以使用以下缩写:

<xsl:template match="FieldRef
     [contains('|status1|status2|staus3|', concat('|',@Name, '|'))]">
  <!-- Your processing here -->
</xsl:template>

关于xslt - 如何在 xsl 模板中匹配这个或那个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057312/

相关文章:

xslt - XSL 变量转小写

xml - 将子元素转换为父元素的属性

html - 如何将css添加到xsl文件中?

java - xslt 转换不关闭标签

xslt - xsl :function substitute for an xpath 3. 0 内联函数定义的函数可以吗?

java - 使用 xsl java 将 xml 转换为 csv

html - XSL : set image src using attribute 中的引号

xslt 转换分数

java - 按位置删除元素

xml - 使用 XSLT,当子元素包含 nil true 属性时删除父元素