用户定义的使用XML / XSL构建的HTML表的过滤

时间:2010-12-21 00:11:43

标签: xml

我是网络开发的新手,并且发现自己陷入了如何让网站访问者过滤和排序由XML / XSL生成的HTML出版物表的方法。由于服务器的限制,我不能使用.php或ASP.NET - 数据必须保持平面文件。

以下是XML文件的基本结构:

<xml>
  <records>
    <record>
       <contributors>
          <author>Author 1</author>
          <author>Author 2</author>
          <author>Author 3</author>
       </contributors>
       <title>Publication Title</title>
       <type>Publication Type</type>
       <keywords>Multiple Keywords</keywords>
       <year>1995</year>
       <abstract>Abstract Text Here</abstract>
   </record>
  </records>
</xml>

而且,我的XSL:

<table id="cvPubs">
  <thead>
      <tr>
        <th>Authors</th>
        <th>Title</th>
        <th>Type of Publication</th>
        <th>keywords</th>
        <th>Year</th>
        <th>Abstract</th>
      </tr>
  </thead> 
  <tbody>
    <xsl:for-each select="descendant::record">
      <tr>
        <td><xsl:value-of select="keywords" /></td> 
        <td><xsl:value-of select="contributors/*[position()]"  /></td>
        <td><xsl:value-of select="titles/title" /></td>
        <td><xsl:value-of select="abstract" /></td> 
        <td><xsl:value-of select="titles/tertiary-title" /></td>
        <td><xsl:value-of select="year" /></td>
      </tr>
    </xsl:for-each>
  </tbody> 
</table>

我想将下拉列表添加到keyword字段,将用户定义的文本字段添加到contributorsabstract字段。

XSL文件完美地输出了表格,我只是不知道构建过滤器和排序功能的最佳方法是什么。我已经尝试了一些用于表格排序/过滤的JavaScript和jQuery脚本,但我无法让它们正常工作。我没有收到任何错误,但我没有获得额外的功能。

非常感谢任何指导。谢谢你的阅读!

1 个答案:

答案 0 :(得分:0)

如果你继续沿着XSLT前进,我认为你会陷入困境。

是的,它作为一个具有相对静态的单个表输出的转换工作正常,但是现在你想要添加所有的铃声和​​口哨,你的XSLT将变得越来越复杂,而不是一个通用的语言因为它仅用于转换。

我建议您,因为您没有服务器端代码,所以您使用本机JavaScript库的全部功能来处理客户端上的排序以及此页面上您将需要的其他功能。

Ext JS浮现在脑海中,但还有其他一些示例,如DojoYUI也可以为您提供服务。

您正在寻找的组件通常称为“网格”。

在Ext JS中,您可以实现GridPanel。或者,如果您的数据中包含的记录超过500条,请使用Buffered GridPanel,这是一种类似的实现,只为正在显示的行呈现DOM。

希望这很有用。