XSLT首先不是' E'或者' Z'

时间:2017-10-07 13:29:12

标签: xslt xpath sharepoint

我是XSLT的新手。我正在尝试在SharePoint 2010中构建自定义列表视图。

取决于用户希望看到的内容,取决于返回的内容。 如果说他们想看到视图1:它将获得以E开头的所有引用。 如果视图2:所有引用都以Z开头。 如果视图3:所有引用都以其他所有字母开头。

我有以下代码:

    <xsl:variable name="dvt_StyleName">Table</xsl:variable>
    <xsl:variable name="RowLimit" select="30" />
    <xsl:variable name="query_string" select="substring-after($current_url,'sheet=')"/>
    <xsl:variable name="query_sheet" select="substring-before($query_string,'&amp;acYear=')"/>
    <xsl:variable name="query_year" select="substring-after($query_string,'acYear=')"/>
    <!--sheet query assignment-->
    <xsl:variable name="qOptions">
        <xsl:choose>
            <xsl:when test="$query_sheet = '2'">E</xsl:when>
            <xsl:when test="$query_sheet = '3'">Z</xsl:when>
            <xsl:otherwise>A|B|C|D|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y</xsl:otherwise>                              
        </xsl:choose>
    </xsl:variable>
<!--debugging--->
    <xsl:value-of select="$qOptions"/>
<!-- end of debugging--->
    <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[starts-with(@Title, $qOptions)]"/>

oitherwise语句目前不起作用,因为我试图在starts-with语句中获得多个条件。我知道我这样做是非常错误的,所以任何帮助都会非常感激。如果你可以尝试和我一点手握,这将是很好的因为这种语言的语法真的让我感到困惑!

提前致谢

1 个答案:

答案 0 :(得分:0)

当你处理单个字母时,你可以像这样定义你的“其他”......

<xsl:otherwise>ABCDFGHIJKLMNOPQRSTUVWXY</xsl:otherwise>

然后你的Rows变量可以像这样重写

<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[contains($qOptions, substring(@Title, 1, 1))]"/>

$qOptions变量是否包含Title属性的第一个字母

编辑:如果,你想要匹配“其他所有内容”而不是“其他所有字母”,那么请考虑重新编写它,稍微长篇大论....

<xsl:variable name="qOptions">
    <xsl:choose>
        <xsl:when test="$query_sheet = '2'">E</xsl:when>
        <xsl:when test="$query_sheet = '3'">Z</xsl:when>
        <xsl:otherwise>!EZ</xsl:otherwise>                              
    </xsl:choose>
</xsl:variable>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[(not(starts-with($qOptions, '!')) and contains($qOptions, substring(@Title, 1, 1))) or (starts-with($qOptions, '!') and not(contains($qOptions, substring(@Title, 1, 1))))]"/>