我正在开发一个具有常见问题解答功能的 SharePoint 2010 面向 Internet 的网站。
我有一个自定义列表,其中包含 ID、标题(重命名为“问题”)、答案和评级文件。
我想编写一个 XSL 样式表,以便通过以下方式自定义列表视图呈现:
- FAQ 项目应该显示为手风琴,使用 JQuery
- 每个常见问题解答都可以由任何用户评分。
所以,我写了这个 XSL:
<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt js" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:js="urn:custom-javascript" >
<xsl:import href="/_layouts/xsl/main.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<script type="text/javascript" language="javascript" >
$(document).ready(function () {
$('#faqAnswerAccordion').accordion({
autoHeight: false,
collapsible: true
});
});
</script>
<a id="top"></a>
<div id="faqAnswerAccordion">
<xsl:apply-templates select="//Row" mode="Item" />
</div>
</xsl:template>
<xsl:template mode="Item" match="Row[../../@TemplateType='100']">
<xsl:param name="Fields" select="."/>
<xsl:param name="Collapse" select="."/>
<xsl:param name="Position" select="1"/>
<xsl:param name="Last" select="1"/>
<xsl:variable name="thisNode" select="."/>
<h3 id="header_{@ID}">
<a id="{@ID}" href="#" ><xsl:value-of select="@Title" disable-output-escaping="yes"/></a>
</h3>
<div>
<p>
<xsl:value-of select="@Answer" disable-output-escaping="yes"/>
</p>
<p>
Please rate this FAQ:
<xsl:apply-templates select="$Fields[@Name='AverageRating']" mode="PrintField">
<xsl:with-param name="thisNode" select="."/>
<xsl:with-param name="Position" select="$Position"/>
</xsl:apply-templates>
</p>
</div>
</xsl:template>
使用该样式表,不会生成 Jquery Accordion,但会出现评级星。
如果我替换以下模板定义
<xsl:template match="/">
经过
<xsl:template match="View">
因此,Jquery Accordion 工作正常,但评级星却不行。
有任何想法吗 ?
非常感谢。