XSLT 参数绑定
上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
Microsoft SharePoint Foundation 2010 中的 XSLT 样式表可重用传统意义上在协作应用程序标记语言 (CAML) 视图中使用的现有全局资源字符串,该视图可用于自定义 XSLT。例如,显式声明可在 XSLT 中使用的参数的 main.xsl 文件包括指示当前列表是否为文档库的以下 Boolean 参数:<xsl:param name="IsDocLib"/>。如果将 main.xsl 导入样式表,则可返回此参数的值,方法是将美元符号 ($) 追加到名称前,如下所示:<xsl:if test="$IsDocLib">。
SharePoint Foundation 还使用参数绑定来为 XSLT 转换提供资源。要定义要在 XSLT 中使用的资源,可在 .resx 文件中定义该资源,将该资源绑定到视图(方法是在列表的 Schema.xml 文件的 <ParameterBindings> 部分中声明该资源),然后在自定义 XSLT 中使用该资源。还可以编程方式通过对象模型添加参数绑定。
有关如何使用参数将资源绑定到视图的信息,请参阅 XSLT 参数绑定。
资源位置
可采用以下两种方式之一为 XSLT 转换提供相应资源:
作为通过 Web 部件中的 <ParameterBinding> 标记检索的样式表参数 (<xsl:param>)(参见 ParameterBinding)。
作为在 <xsl:value-of> 标记中使用的 XPath 表达式。
ParameterBinding 元素包括指定资源类型的 Location 属性。此元素的语法与 ASP.NET 资源绑定表达式语法类似:
<ParameterBinding Name="parameterName" Location="Resource(resourceFile,resourceName)" />
Location 值可表示为具有以下参数的函数:
参数 |
值 |
---|---|
resourceFile |
SharePoint Foundation 资源文件的基本名称,不带扩展名。例如:wss 或 core。 |
resourceName |
资源字符串的名称。例如:string1。 |
除了可在 .resx 文件中指定本地化资源外,还可使用 Location 属性来指定下表中列出的上下文的值。
上下文 |
格式 |
---|---|
查询字符串 |
<ParameterBinding Name="SelectedID" Location="QueryString(SelectedID)"/>XSL 中的相应代码:<xsl:param name="SelectedID"/> |
连接/回发 |
<ParameterBinding Name="dvt_firstrow" Location="Postback;Connection"/> |
服务器变量 |
(Location="Form(variableName)") |
Web 部件属性 |
(Location="WPProperty(PropertyValue") |
控件 ID |
(Location="Control(ControlID)") |
可使用服务器对象模型通过以下属性将参数绑定添加到 XsltListViewWebPart 对象的绑定集合:Web 部件的 ParameterBindings 属性,或与该 Web 部件关联的 SPView 对象的 ParameterBindings 属性。但您还可以声明的方式将 <ParameterBinding> 标记添加到列表的 Schema.xml 文件中 View 元素的 <ParameterBindings> 部分,以声明要在 XSLT 中使用的参数绑定。例如,通过以下标记,可在没有项目时,使字符串显示在文档库列表视图中:
<ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noitemsinview_doclibrary)" />
在本示例中,NoAnnouncements 是要在 XSLT 中使用的资源的名称,wss 是包含资源的文件的名称(不带文件扩展名),noitemsinview_doclibrary 是资源文件中表示的资源的名称。
将 <ParameterBinding> 标记添加到 Web 部件上的 <ParameterBindings> 集合中后,它便可用于 XSLT 样式表,方法是定义相同名称的顶级 <xsl:param> 标记:
<xsl:param name="NoAnnouncements"/>
然后您可以通过在该样式表的任意位置使用 XPath 表达式来使用该资源,如下所示:<xsl:value-of select="$NoAnnouncements" />
XPath 资源表达式
为检索资源,SharePoint Foundation 使用由 XPathNavigator 对象解释的特殊 XPath 语法,当转换运行时,该对象由 XsltListViewWebPart 对象使用。指定语法如下所示,其中 resourceFile 参数和 resourceName 参数具有相同的含义(如前所述)。
<xsl:value-of select="@Resources.resfile.resname" />
以下示例检索与上一示例相同的资源:
<xsl:value-of select="@Resources.wss.noitemsinview_doclibrary" />
备注
由于 SharePoint Foundation 内部字段名不能包含点(".")字符,因此资源表达式不会与普通字段引用相混淆。