【问题标题】:Pagination of text from xml file onto html page将xml文件中的文本分页到html页面
【发布时间】:2010-07-10 21:10:06
【问题描述】:

好的。所以我正在开发一个网站来展示我的小说作品。我将所有文档放入 XML 文件中,使用 PHP 从服务器中提取和解析它们,并将它们显示在页面上。您可以访问页面here for an example.

正如背景图片所暗示的那样,我想做的是把文本分成两列,(第一列的文本溢出到第二列),然后允许对溢出进行分页,以便不需要滚动。换句话说,我希望文本像书一样阅读,并根据 XML 文档的正文长度进行分页。

我希望使用 PHP 或类似的东西在服务器端完成此操作。有没有办法使用 xsl 样式表或服务器端脚本来做到这一点?我四处寻找,似乎找不到任何东西。

感谢任何帮助。

先生。突变体

【问题讨论】:

  • XML 是因为我想使用标准的电子书格式,以便电子书和 rss 阅读器等更容易访问 - 当那个阶段到来的时候。使用 XML,我可以将所有数据与实际网页分开,并从服务器端对其进行操作 - 消除了许多跨浏览器和设备的不兼容性。

标签: php html xml xslt


【解决方案1】:

一般来说,这是一个令人惊讶的难题,如果您尝试在服务器上解决这个问题,您将遇到无穷无尽的麻烦。对 HTML 文本进行分页的问题在于,分页符的位置完全取决于客户端。服务器不知道客户端的屏幕分辨率、字体选择或窗口大小,除了文本本身之外,这些都是问题的因变量。

如果此时没有一些 jQuery 库可以执行,我会感到惊讶,但是大约 7 年前我不得不自己实现它时,这是我采用的方法:

为每一列创建一个div。每一个都包含整个文档文本。使用固定的行高设置divs 的样式。将列 divs 放在文档的 z 顺序底部。现在您可以布置页面的其余部分,在布局中留下已知大小的孔,divs 可以显示通过,并通过操纵每个 div 的垂直位置,您可以控制哪一行首先出现在给定的洞内。

然后你就可以让客户端操作字体大小了,只要你重新计算孔的高度,然后正确地重新定位divs,它就会神奇地工作。

在 HTML5 中可能有更简单的方法;我肯定会调查的。

【讨论】:

  • 感谢您的意见,罗伯特。我已经在 CSS 中完成了大部分格式化 - 所以我有一个确定的文本区域大小(每个页面默认为 400x300,没有填充)和字体大小的百分比。我了解您的建议将如何发挥作用并将试一试 - 但是分页和文本流呢?这似乎是最大的问题。
  • 请记住,我只希望网页上的这种格式 - 可以在个人电脑或笔记本电脑上查看。我将研究其他方法来为屏幕较小的移动设备提取文件。
  • +1:很好地解释了这样做的难度,以及很好的基本解决策略。肯定有一些 jquery 插件支持分页(google for jquery+pagination),但我不确定它们是否完全满足这种需求。
  • 该文本框在 1920x1200 显示器上会非常小。在 ems 中调整大小将使其实际大小成为字体大小的函数,并将其从分辨率依赖性中解放出来。分页和文本流是通过调整包含文本的 div 的绝对位置来管理的 - 向下翻页,向上移动 div。
  • 文本框在所有显示器上的大小相同 - 总共 800x600 像素(使显示器变大并不会使查看区域变小)。我觉得这是一个不错的尺寸,甚至可以在很小的上网本屏幕上完整查看(因为大多数支持 1024x600 - 如果不是更好的话)。尺寸在这里并不是真正的问题。如果有人知道一种服务器端方法来解析可变长度的 XML 字符串并将(缓存的)分页输出到指定的屏幕区域,我只是在徘徊。
猜你喜欢
  • 2011-09-30
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多