使用SP列表字段的XSLT等式

时间:2012-01-12 20:35:02

标签: sharepoint xpath xslt xslt-1.0

我有一个已转换为XSLT的SP数据视图,因此我可以添加一个显示百分比的标题(完整)。
在我将dvwp转换为xslt之前,我添加了两个计数标题 - 一个在Complete上,另一个在LastName上。他们精彩地工作 - 向我展示记录的数量和在完整字段中具有值的记录数。但是,当我将dv转换为xslt时,我意识到我丢失了标题:(

所以,我正在使用xslt添加它们。目前,我所拥有的等式的XPath代码是<xsl:value-of select="count($Rows) div count($Rows)" /> 如何获取“完整”字段中的“是”值的总数?

UPDATE1:
找到此http://www.endusersharepoint.com/STP/viewtopic.php?f=14&t=534并尝试了它,但是会导致以下错误 - 设置处理器样式表失败:0x80004005:参数1必须返回一个节点集。 - &gt; count(/ dsQueryResponse / Rows / Row ='Y')&lt; -

UPDATE2:
Complete是我的XSLT数据集的字段名称。返回类型为Y或空白。对于笑脸,我尝试了<xsl:value-of select="count(/xpath/to/parent/element[@Complete eq 'Y']) div count($Rows)" />但是我收到了以下错误 - 设置处理器样式表失败:0x80004005:预期令牌']'找到'NAME'.count((/ xpath / to / parent / element [@Complete] - &gt; eq&lt; - 'Y'])div计数($ Rows)我开始认为可能存在问题w /'eq'....引用我的XML运算符......

UPDATE3:

<xsl:value-of select="count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows)" />

好吧它仍然说0,但我认为它没有显示正确答案的原因是b / c它期望显示一个整数,显然从等式返回的值将是小数。 ..一直在摆弄XPath中的等式......这就是我试过的 -

count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows)*100
(count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows))*100
100(count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows))

UPDATE4:
所以我知道我之前认为正确的数字没有显示b / c它是一个浮点数不正确,因为XPath和XSLT 1.0中的所有数字都是浮点数。 Reference

UPDATE5:
经过进一步调查,我发现问题出在我方程的count(/xpath/to/parent/element[@Complete = 'Y'])部分,因为它返回0而不是值。 [我知道我的Complete col中至少有3个'Y'值]

UPDATE6

<records*>
<record*>
  <last_name></last_name>
  <first_name></first_name>
  <mi></mi>
  <office_symbol></office_symbol>
  <geo_location></geo_location>
  <complete></complete>
  <date_complete></date_complete>
  <date_expires></date_expires>
  <email></email>
  <supervisor></supervior>
</record*>
</records*>

*我不知道这些节点被调用了什么因为我的数据来自数据库而不是xml文件,我只是编写了记录/记录

UPDATE7
回到我原来的问题。我仍然试图找出XPath方程来显示父节点的数量(在上面发布的XML中记录),其中完整节点= Y.

UPDATE8
好。所以我使用http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=tryxsl_value-of进行了编辑和测试。使用XSLT计算完成= Y的数量是<xsl:value-of select="count(catalog/cd [complete = 'Y'])" />所以我将W3schools上的功能完全放入我的SP数据视图中,我什么都没得到......只是一个空的空间。为什么代码不能在我的SPDV中运行?

1 个答案:

答案 0 :(得分:0)

如果您的“完整”字段是元素:

 <xsl:value-of select="count(/xpath/to/complete/field/element[string(.) eq 'Yes])"/>

如果您的完整字段是元素的属性:

 <xsl:value-of select="count(/xpath/to/parent/element[@complete eq 'Yes'])"/>

在不知道XML结构的情况下,我无法提供所需的特定XPATH - 谓词“[]”仅选择“是”值