显示页面url SharePoint xslt

显示页面url SharePoint xslt,xslt,sharepoint-2010,Xslt,Sharepoint 2010,我一直在关注这个链接 我想在我的页面上显示查询字符串值。为此,我看到了一个关于stackoverflow的解决方案,我觉得有点复杂。因此,我的方法是: 1) 获取当前url 2) 在该url上使用substring after获取查询字符串的值 我可以用一些例子来解释这一点 我的页面url是www.stackoverflow.com/questions.aspx?display=18..我想在我的页面上显示18 到目前为止我所做的 1) 我在xslt中添加了名称空间 xmlns:ddwrt=”

我一直在关注这个链接

我想在我的页面上显示查询字符串值。为此,我看到了一个关于stackoverflow的解决方案,我觉得有点复杂。因此,我的方法是:

1) 获取当前url

2) 在该url上使用substring after获取查询字符串的值

我可以用一些例子来解释这一点

我的页面url是www.stackoverflow.com/questions.aspx?display=18..我想在我的页面上显示18

到目前为止我所做的

1) 我在xslt中添加了名称空间 xmlns:ddwrt=”http://schemas.microsoft.com/WebParts/v2/DataView/runtime"

2) 添加了一个参数

3) 在变量中添加此值

4) 现在,当我试图在子字符串中使用它时,它没有显示任何值

5) 我也试过了

但它没有给出任何值

知道我哪里出错了吗

再次感谢Dimitre的回答…但问题仍然是一样的…正如我说的,我不想将url传递到全局参数…我希望它是动态的…来回答您的问题…我不知道它背后的逻辑…我想这是因为我使用了这个名称空间…PageUrl获取当前页面url…但是当我尝试

xsl:select=“$DetailPageLink”/>的副本或

xsl:select=“$DetailPageLink”/>的值或

xsl:select=“substring after($DetailPageLink,“=”)”/>的值

它不显示任何输出…但有趣的是,当我使用

a href=“{$DetailPageLink}”>Jack /a>

这意味着PageUrl正在获取值…否则标签不应该显示任何输出

如果您知道获取当前页面url的任何其他方法,请让我知道

1) 我在xslt中添加了名称空间 xmlns:ddwrt=”http://schemas.microsoft.com/WebParts/v2/DataView/runtime"

这是没有必要的

2) 添加了一个参数

xsl:param name=“PageUrl”/>

3) 在变量中添加此值

4) 现在,当我试图在子字符串之后使用它时,它不是 显示任何值

5) 我也试过了

但它不会给出任何 价值

知道我哪里出错了吗

上述事实清楚地表明,全局参数
$PageUrl
要么未初始化,要么其字符串值为空字符串

解决方案

在启动转换之前,需要使用适当的字符串值设置全局参数
$PageUrl
。您还可以在全局
xsl:param
select
属性中为其指定一个默认值,如果选择了默认值,则证明该参数未初始化并由XSLT转换的发起人传递/

下面是正确的XSLT代码,它使用了默认值
$PageUrl
,或者在启动转换时为此全局参数提供的值:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:param name="pPageUrl" select=
 "'www.stackoverflow.com/questions.aspx?display=18&amp;somethingElse=xyz'"/>

 <xsl:template match="/t">
  <xsl:variable name="vQSPart" select=
  "concat('&amp;', substring-after($pPageUrl,'?'),'&amp;')"/>

  <xsl:value-of select=
    "substring-before
        (substring-after($vQSPart, '&amp;display='),
         '&amp;')
    "/>
 </xsl:template>
</xsl:stylesheet>
当我将转换的全局参数值设置为:
'www.stackoverflow.com/questions.aspx?something=abcd&display=123&somethingElse=xyz'
并再次执行转换时,我再次得到正确的结果:

123

我认为显示查询字符串信息的最简单方法是使用参数绑定:

在参数绑定中添加:

<ParameterBinding Name="subsiteLink" Location="ServerVariable(PATH_INFO)" DefaultValue=""/>

在DataView的XSL样式表中添加:

<xsl:param name="subsiteLink"></xsl:param>
path_info: <xsl:value-of select="$subsiteLink"/><br/>

路径信息:

这是显示数据的简化方式。

这里的问题是参数:

xsl:param name="PageUrl"
在网页上实际上不起作用。即使添加了ParameterBinding行(如上所述)。它似乎在SP Designer中工作,但通过浏览器查看时,PageUrl参数返回空值或空值。用于返回当前页面URL的正确参数是ServerVariable one。因此,像这样设置ParemeterBinding(您需要添加自己的尖括号,因为如果我键入它们,本网站将不喜欢):

PageAddr只是我分配给参数的一个随机名称,它不会与PageUrl混淆。接下来调用样式表中的参数,如下所示:

xsl:param name="PageAddr" /
现在,您可以使用$PageAddr在XSLT代码中的任意位置调用该参数

请注意,此参数在SP Designer中不起作用,但在浏览器中起作用


[有人知道为什么Microsoft认为在SPD中使用一个参数,在浏览器中使用另一个参数是个好主意吗?]

要初始化全局变量“PathUrl”,必须:

1) 将以下行添加到ParameterBindings中

<ParameterBinding Name="PageUrl" Location="ServerVariable(QUERY_STRING)" DefaultValue=""/>
<xsl:param name="PageUrl"></xsl:param>

2) 在ParameterBindings后面的xsl:stylesheet中添加以下行

<ParameterBinding Name="PageUrl" Location="ServerVariable(QUERY_STRING)" DefaultValue=""/>
<xsl:param name="PageUrl"></xsl:param>

3) 现在,您可以使用以下行显示URL参数

<xsl:value-of select="$PageUrl"/>

对于其他服务器变量,您可以访问


问候:)

那么问题是什么?最好提供一个完整(但简短)的示例:源XML文档、转换、控制转换的规则、,想要的和实际结果,以及实际结果有什么问题。如果不清楚,很抱歉。没有xml唯一的东西。例如,如果我的页面url要在我的Web部件上显示1…因此,我想使用,但它不显示任何内容…我正常尝试,但没有得到任何内容…再次,您必须提供与问题相关的尽可能多的信息。到目前为止,你还没有这样做,因此有一个非常小的机会有人与心灵感应能力,甚至试图帮助。感谢迪米特里的回答,但你问了我几个问题,我想我已经尝试回答你的所有问题..我已经提到,我在上面跟随