我有一个使用列表作为数据源的SharePoint DVWP。在这个列表中,我有两列-LinkSection和SubSection
在该DVWP中;章节";对该列表中的项目进行分组。到目前为止,每个部分只通过一列进行过滤-请参阅一个部分的示例:
<xsl:template name="dvt_1">
<xsl:variable name="dvt_StyleName">Table</xsl:variable>
<xsl:variable name="Rows1" select="/dsQueryResponse/Rows/Row[contains(@LinkSection,'Training')]"/>
<div class="page_home" style=" height: 120px; overflow: hidden; z-index: 0;border:1px solid #CCCCCC;">
<div class="cat_heading" style="padding: 5px 10px; text-align: left; ">
<h2 style="font-weight:bold">
<a title="Section 1">Section 1</a>
</h2>
</div>
<div class="cat_imglinks" style=" height: 70px; overflow: hidden;">
<div class="cat_img" style="text-align: left; vertical-align: middle;">
<a>
<span style="width: 78%; float: left;">Section 1 Text</span>
</a>
</div>
<div class="panel cat_links">
<ul>
<xsl:for-each select="$Rows1">
<li><a href="{@Link}" title="{@Title}">
<xsl:value-of select="@Title" disable-output-escaping="yes"/></a></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:template>
我现在有一个按两列筛选的请求。我对XSLT没有太多的经验,所以我正在尝试我在论坛上看到的东西,但运气并不好。
因此,我想为两行创建一个AND过滤器——请参阅下面我尝试过的方法之一。我尝试过使用"|"运算符,但这似乎显示了符合$Rows1结果的所有项。
<xsl:template name="dvt_1">
<xsl:variable name="dvt_StyleName">Table</xsl:variable>
<xsl:variable name="Rows1" select="/dsQueryResponse/Rows/Row[contains(@LinkSection,'Training')]"/>
<xsl:variable name="Rows2" select="/dsQueryResponse/Rows/Row[contains(@SubSection,'Education')]"/>
<div class="page_home" style=" height: 120px; overflow: hidden; z-index: 0;border:1px solid #CCCCCC;">
<div class="cat_heading" style="padding: 5px 10px; text-align: left; ">
<h2 style="font-weight:bold">
<a title="Section 1">Section 1</a>
</h2>
</div>
<div class="cat_imglinks" style=" height: 70px; overflow: hidden;">
<div class="cat_img" style="text-align: left; vertical-align: middle;">
<a>
<span style="width: 78%; float: left;">Section 1 Text</span>
</a>
</div>
<div class="panel cat_links">
<ul>
<xsl:for-each select="$Rows1 | $Rows2">
<li><a href="{@Link}" title="{@Title}">
<xsl:value-of select="@Title" disable-output-escaping="yes"/></a></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:template>
如有任何帮助,我们将不胜感激。谢谢
您目前有两个变量:
<xsl:variable name="Rows1" select="/dsQueryResponse/Rows/Row[contains(@LinkSection,'Training')]"/>
<xsl:variable name="Rows2" select="/dsQueryResponse/Rows/Row[contains(@SubSection,'Education')]"/>
不添加"Rows2",只需将"Rows1"更改为:
<xsl:variable name="Rows1" select="/dsQueryResponse/Rows/Row[contains(@LinkSection,'Training')][contains(@SubSection,'Education')]"/>
然后将您的for each改回:
<xsl:for-each select="$Rows1">