显示页面url SharePoint xslt
我一直在关注这个链接 我想在我的页面上显示查询字符串值。为此,我看到了一个关于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) 添加了一个参数显示页面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=”
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&somethingElse=xyz'"/>
<xsl:template match="/t">
<xsl:variable name="vQSPart" select=
"concat('&', substring-after($pPageUrl,'?'),'&')"/>
<xsl:value-of select=
"substring-before
(substring-after($vQSPart, '&display='),
'&')
"/>
</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…因此,我想使用,但它不显示任何内容…我正常尝试,但没有得到任何内容…再次,您必须提供与问题相关的尽可能多的信息。到目前为止,你还没有这样做,因此有一个非常小的机会有人与心灵感应能力,甚至试图帮助。感谢迪米特里的回答,但你问了我几个问题,我想我已经尝试回答你的所有问题..我已经提到,我在上面跟随