0

我在 SharePoint 中有两个列表、测验和测验问题。测验问题有一个指向测验的查找列,并包括一个用于原始列表的行 ID(测验 ID)的列。我想创建一个带有一些自定义 XSLT 的数据查看器部分,并且即将完成,但无法让最终查询完全正常工作,因此我想获取一个测验 ID 的所有测验问题。

首先,我在 SPD 中创建了一个数据源并包含了两个列表(链接)。然后我在我的页面上插入了一个新的数据视图并包含了数据源。我的领域的层次结构在 SPD 中看起来是正确的:

/dsQueryResponse/QuizQuestions/Rows/Row/@Quiz_x003a_ID

在我的 XSLT 中,我将过滤器写出如下内容:

<xsl:variable name="Rows" select="/dsQueryResponse/QuizQuestions/Rows/Row[@Quiz_x003a_ID=10]"/> 

在这种情况下,10 只是测试数据,我确认它在列表中。但是,当我尝试此查询时,我没有返回任何结果,如下所示:

Count: <xsl:value-of select="count($Rows)"/>

如果我取出过滤器,我会得到列表中的每一行。现在,有两个考虑因素可能相关,也可能不相关:

  1. 在 SPD 中,每当我查看 Current DataSource 层次结构时,它都不会显示此 ID 字段的整数值(即使它在 SP UI 中显示)。相反,它显示为“

  2. 在循环遍历 Rows 值的循环中,我可以获得并显示 @Title 字段的变量,但不能用于 @Quiz_x003a_ID 字段。我收到一个意外错误和相关 ID(这是在 SharePoint Online 2013 中),因此我无法进一步轻松地对其进行故障排除。该字段清楚地显示,我可以从 SPD 的层次结构导航中复制 XPATH。

提前致谢!

4

2 回答 2

0

我相信问题更多在于 SP 中的查找字段并呈现为锚字段而不是整数。有什么设置吗?我看到了一些似乎表明获取 ID 应该有效的示例。但是,一旦我通过 select 语句从以下位置更改:

/Rows/Row[@Quiz_x003a_ID=$currentQuizId]

至:

/Rows/Row[contains(@Quiz_x003a_ID,concat('&amp;ID=',$currentQuizId,'&amp;'))]

它按预期工作。

于 2014-01-03T14:48:37.793 回答
0

试试这个,我假设你的 xml 类似于:

<dsQueryResponse>
 <QuizQuestions>
    <Rows>
        <Row Quiz_x003a_ID="10">1</Row>
        <Row Quiz_x003a_ID="10">11</Row>
        <Row Quiz_x003a_ID="10">12</Row>
        <Row Quiz_x003a_ID="12">13</Row>
        <Row Quiz_x003a_ID="10">14</Row>
        <Row Quiz_x003a_ID="11">15</Row>
    </Rows>
 </QuizQuestions>
</dsQueryResponse>

这是 XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:output method="html"/>

  <xsl:variable name="Rows" select="count(/dsQueryResponse/QuizQuestions/Rows/Row[@Quiz_x003a_ID=10])"/>
   <xsl:template match="/">
   <div>
   Count: <xsl:value-of select="$Rows"/>
   </div>
   </xsl:template>
  </xsl:stylesheet>
于 2014-01-03T02:52:28.007 回答