我正在构建一个 Sharepoint 搜索结果页面,以查找第三方工具中提出的问题的答案。我有一个到他们的 sql 数据库的 bdc 连接。我只在数据库中爬行一张桌子。我需要使用 muenchian 方法在同一个表中使用多个列将问题和答案结果组合在一起。我无法更改数据库,因此我必须将结果汇总在一起以寻找有意义的东西。此表包含所有问题的条目和给出的答案。我必须将它们联系在一起,以便我们使用搜索作为应用程序来呈现问答
数据概述:核心搜索结果中返回的每条记录都有一个: 标题 - 这是问题或答案 activityid(int) - 条目的唯一 ID activitytypeid(int) - 这些标识是 Q 还是 A / 79或 82 parentid(int) - 此值包含原始问题的活动 ID - 如果记录是原始问题,则此列的值为 0 isanswer(boolean) true 或无(这有点多余,确实与 activitytypeid 相同,但我不确定是否可以使用它来帮助分组)
Review activitype id 是:79 - 提出的问题 - parentid 为 0 或 82 - answer to question - 这将有一个与原始问题的 activityid 匹配的 parent id
我正在尝试将我的搜索结果分组/排序以首先返回问题,但没有取得多大成功。在下面的示例中,它将是 activityid 19142,并且问题的答案在下面缩进,所有分组在一个集合中
在审查我的 hack 或示例方面的任何帮助都会很棒。
我只是想了解 xsl,这是一个很大的学习曲线。我还有很长的路要走,而且肯定已经跳入了这方面的深渊。
我目前得到的结果的原始 xml,没有格式化结果
<All_Results>
<Result>
<id>1</id>
<title>Original Question</title>
<isanswer></isanswer>
<parentid>0</parentid>
<activitytype>79</activitytype>
<activityid>19142</activityid>
</Result>
<Result>
<id>2</id>
<title>Answer to original question</title>
<isanswer>true</isanswer>
<parentid>19142</parentid>
<activitytype>82</activitytype>
<activityid>19146</activityid>
</Result>
<Result>
<id>3</id>
<title>Another Question</title>
<isanswer></isanswer>
<parentid>0</parentid>
<activitytype>79</activitytype>
<activityid>19200</activityid>
<Result>
<Result>
<id>4</id>
<title>Second answer to original question</title>
<isanswer>true</isanswer>
<parentid>19142</parentid>
<activitytype>82</activitytype>
<activityid>19199</activityid>
</Result>
<Result>
<id>5</id>
<title>and another Question</title>
<isanswer></isanswer>
<parentid>0</parentid>
<activitytype>79</activitytype>
<activityid>19254</activityid>
<Result>
<Result>
<id>6</id>
<title>Answer to another question</title>
<isanswer>true</isanswer>
<parentid>19200</parentid>
<activitytype>82</activitytype>
<activityid>19265</activityid>
</Result>
</All_Results>
我正在寻找的输出将所有答案与相应的问题分组在一起,这非常简化,但我认为这也是我想要得到的重点。
<All_Results>
<Result>
<title>Original Question</title>
<title>Answer to original question</title>
<title>Second answer to original question</title>
</Result>
<Result>
<title>Another Question</title>
<title>Answer to another question</title>
</Result>
</All_Results>
我对模板的尝试
<xsl:template match="All_Results">
<xsl:for-each select="Result[count(. | key('QAsked', 'activityid')[1]) > 0]">
<xsl:sort select="questionasked" />
<xsl:value-of select="title" /><br />
<xsl:value-of select="questionasked" /><br />
<xsl:value-of select="activityid" /><br /><br />
<xsl:for-each select="key('QAsked', '82')">
<xsl:sort select="questionasked" />
<xsl:if test="normalize-space(questionasked) = '82'"></xsl:if><br />
<xsl:value-of select="questionasked" /><br />
<xsl:value-of select="originalquestion" /><br />
<xsl:value-of select="likes" /><br /><br />
</xsl:for-each>
</xsl:for-each>
</xsl:template>