关于 xslt:Sharepoint 2010 xsl @PublishingPageImage 在列表 Web 部件中显示空白文本

Sharepoint 2010 xsl @PublishingPageImage is showing blank text in List Web Part

我正在为网站实施自定义新闻摘录列表视图。它有 4 个字段,

  • 标题
  • 短文
  • 全文网址
  • 图片

目前,我成功地使用列表编辑表单中的 4 个基本文本字段使其看起来正确,但是,Sharepoint 中有一个功能允许用户使用内置浏览器从服务器中选择已发布的图像.该图像随后以 html 格式存储在"PublishingPageImage"字段中。但是,我意识到,由于某种原因,其中包含 html 的任何字段都将返回为空白,并且当我将基本 URL 文本字段切换到已发布图像类型时,这种情况正在发生。此外,链接 html 不再使用 Sharepoint 的超链接字段类型显示。

我已经尝试在网络上使用很多建议的方法,但是,它们都为我在网络部件上抛出了错误。

1
2
3
4
    Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator.


    Correlation ID:ae8f04be-849f-454f-843a-d2f7487b31d8

对我的代码的任何建议将不胜感激,我对 xsl 世界还很陌生。 Sharepoint Designer 似乎显示 xsl 没有问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!--
This section is the set up and can be used at the top of any external XSLT stylesheet file
-->
<xsl:stylesheet
xmlns:x="http://www.w3.org/2001/XMLSchema"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp"
version="1.0"
exclude-result-prefixes="xsl msxsl ddwrt"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:ddwrt2="urn:frontpage:internal">
<xsl:output method="html" indent="no"/>
<!--
End of Set Up
-->
<!--
The initial template which in this case is matching everything with"/"
It then creates a variable called Rows - this is accessed as $Rows
A standard HTML table and header row with the names of our columns is next followed by a loop through each row of the list and calls our second template dvt1-rowview to display the contents
-->
<xsl:template match="/" xmlns:x="http://www.w3.org/2001/XMLSchema">
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row" />
<link rel="stylesheet" type="text/css" href="/Transportation/Styles/styles.css" />
<ul class="section-list">
<xsl:for-each select="$Rows">
<xsl:call-template name="dvt_1.rowview" />
</xsl:for-each>

</ul>

</xsl:template>
<!--
End of first template
-->
<!--
Standard HTML rows and cells contain the contents of our list row
xsl:value-of command is used to display our columns
Columns are accessed as @InternalColumnName
-->
<xsl:template name="dvt_1.rowview">

<li>


<xsl:if test="@PublishingPageImage != ''">
        <xsl:value-of select="@PublishingPageImage" disable-output-escaping="yes"/>
</xsl:if>

<xsl:value-of select="@Title" />
<p><xsl:value-of select="@Short_Content"/></p>


<p><xsl:value-of select="@Link" disable-output-escaping="yes"/></p>

</li>

</xsl:template>
</xsl:stylesheet>

显示图像

在 img src 中获取图像的列值,如下例所示

1
2
3
4
5
<xsl:variable name="url">
     <xsl:value-of select="@PublishingPageImage" disable-output-escaping="yes"/>
  </xsl:variable>
<xsl:variable name="imglink" select="substring-before($url,',')"> </xsl:variable>
<img src="{$imglink}" width="296px;" height="200px;"></img>


事实证明,问题不在于 xslt,而只是共享点的怪癖。如果有人偶然发现同样的问题,我会回答这个问题。

正如我之前提到的,我使用 List Web 部件,而 XSLT 用于 List View 或 XLV。要将图像添加到我想要的列表视图中,首先,我将页面图像(也可以是另一个发布图像字段)添加到列表本身。然后我将它添加到我在网页上显示的列表视图中。然后,在列表的 Web 部件设置中,我不得不再次将 Web 部件指向更新的列表视图。此时,Sharepoint 本身可能会生成自己的 xsl 缓存,这就是为什么我在修改列表视图时必须再次将其指向列表视图的原因。

我发现有助于解决这个问题的一个很好的小片段是:

1
2
3
4
5
<xsl:for-each select="@*">
    <xsl:value-of select="name()"/>
    <xsl:text> = </xsl:text>
    <xsl:value-of select="."/><br/>
</xsl:for-each>

来源:http://benprins.wordpress.com/2012/05/20/show-all-fields-and-values-with-xslt/

当嵌套在行模板中时,它会为您提供每行的每个字段名称和值。如果您想检查并查看您的字段是否显示,或者要查找字段的特定名称,或者