我是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,'&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语句中获得多个条件。我知道我这样做是非常错误的,所以任何帮助都会非常感激。如果你可以尝试和我一点手握,这将是很好的因为这种语言的语法真的让我感到困惑!
提前致谢
答案 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))))]"/>