2

这是一个“最佳设计方法”问题,而不是编码问题。我正在寻找在 XSLT 中过滤数据的最佳方法。我有一个由 XML、XSLT 和 CSS 生成的博客。每篇博文都属于一个类别 - 第 1 周、第 2 周或第 3 周。

在此处输入图像描述

目前,我在旁边显示所有类别。当我单击第 1 周时,我只想显示第 1 周的帖子。在没有每周的 XML 文件的情况下,有没有办法做到这一点?

作为副业......这是 XSLT 可以做什么的演示。像 php 这样的东西会更适合这项工作,但这需要使用 XSLT/HTML/JavaScript/CSS 来完成。

如果问题不清楚,请提出,我会尽力改写。

4

3 回答 3

1

可能有很多方法。

最快的应该是:给每个帖子一个与星期相关的类名(例如post week1post week2等)

当您单击侧面的链接时,还为所有帖子的公共锚点提供一个与单击的周相关的类,例如posts week1

你现在只需要一点 css:

.posts .post{
  display:none;
}
.posts.week1 .post.week1,
.posts.week2 .post.week2,
.posts.week3 .post.week3{
  display:block;
}
于 2012-12-27T08:50:23.213 回答
0

如果您想演示 xslt 可以做什么,也许像//WEEKS[.="WEEK1"]这样的简单 xpath 查询就足够了

于 2012-12-27T09:22:14.667 回答
0

这是 XLink 派上用场的地方,不幸的是浏览器支持仍然很可怜。

我会尝试用 JS 和 XPath 预处理 XML,所以它只包含你想要的那一周。然后只将那个 XML 发送到 中XSLTProcessor(),所以它只会输出那些。不过,您可能必须在 XSL 之外组装整个 HTML 文档 - 不确定。

您还可以将 XML 参数作为参数发送到处理器中,并在您的转换中使用它们。

但最后,如果您只想显示其中的一小部分,那么通过网络发送整个 XML 仍然是低效的。因此,仅生成实际需要的 XML 的服务器端解决方案会更好。

最后但同样重要的是,也许看看Saxon-CE

于 2012-12-27T14:39:23.733 回答