【问题标题】:Is using XML and XSLT a good way to make a webpage?使用 XML 和 XSLT 是制作网页的好方法吗?
【发布时间】:2010-08-12 12:04:57
【问题描述】:

我刚刚学习了使用 XML 数据文件和 XSLT 创建网页(从 XML 转换为 HTML 或 XHTML)的方法。但我从未见过有 XML 源代码和 XSLT 文件链接的网页。这不是一个好的解决方案吗?

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    如果您已经拥有 XML 格式的数据(或者很容易将其转换为 XML),那么我会说这是一个很好的解决方案。您可能希望确保您的 Web 服务器配置正确,以确保 XSLT 被缓存在客户端,这样它就不必每次都执行请求。

    如果数据尚未采用 XML 格式,则有更好的模板解决方案(PHP、JSP、ASP 等)更适合您所处的任何环境。

    【讨论】:

      【解决方案2】:

      我认为这对于面向公众的网站来说不是一个好的架构:

      • 虽然大多数浏览器都支持客户端 XSLT,但并非所有浏览器都支持
      • 即使有,也可能存在个别浏览器与 javascript 的兼容性问题
      • 能够“查看源代码”是一个非常有用的调试工具。 XSL 无法做到这一点
      • 据推测,Google 会将标记良好的 HTML 排在 XML 文档之前
      • XSL 是一种可怕的语言
      • 您仍然需要呈现为 XML(除非您的数据是原生 XML),那么为什么不直接呈现为 (X)HTML?

      如果您的数据本身是 XML,那么在服务器端通过 XSL 转换它可能是有意义的(我已经编写了这样做的系统),但这是我在构建 Web 时使用 XSL 的唯一情况和架构地点。

      【讨论】:

      • 所以 XSLT 对于面向公众的网站来说不是一个好的架构,就像 Javascript 不是一样?如果您的数据不是 XML,则浏览器不能使用客户端 XSLT。如果你需要服务器支持,你可以使用任何可用的东西。
      • 我不认为 XSLT 是一种可怕的语言。但除此之外 - 出色的反应! +1
      • 大多数浏览器都支持 XSLT。 Android 直到 2.1 才在它的浏览器中支持它,但是 Opera mini 有它,它内置在 Webkit 中,它是 android 的主要库。所有其他论点都显得微不足道,实际上并不能取代使用 XSLT 的优点。
      • 1) 不再正确,所有主要的都如此。 2) XSLT 是一个完善的标准,它产生的 (X)HTML 不会比你在服务器端可以做的任何事情差。 3) 能够“查看源”以查看原始数据对用户非常有用。开发人员可以很容易地在本地环境中调试 XSL。 4)如果你愿意,你也可以标记XML,这与谷歌的排名算法无关。 5) 这完全是意见,根本不是一个真正有效的论点,6) 因为你将数据与演示文稿分开,这总是一个好主意,除非你的演示文稿当然是你的数据。
      【解决方案3】:

      当然有些页面是使用 XSL+XML 生成的,但我敢打赌,它们中的大多数都是在服务器端解析的,而不是在客户端解析的。然后,如果您打开一个 aspx 或 php 页面,您将无法真正判断它是否是从 XML 和 XSL 文件中解析出来的。

      这也是一个相当不错的模板机制。我们将它用于我们公司的网页,以及电子邮件和其他一些媒体。这就是 XML 在这方面的优势;它不支持媒体,您可以将源 xml 转换为多种格式(其中大部分将基于 xml)。

      【讨论】:

        【解决方案4】:

        您必须在服务器上进行转换,因为并非所有浏览器都支持 XSLT。

        【讨论】:

        • 哦...“大多数浏览器”不会削减它,呵呵...因为如果它是像 Lynx 或移动浏览器这样的简单浏览器,那可能就是原因。公司希望向任何能够处理简单 HTML 的简单浏览器显示内容。
        • 所有主流浏览器都支持 XSLT,包括移动端。与往常一样,问题在于 IE,因为它无法处理 XHTML。
        • IE 在这里不是真正的问题——它的 XSLT 支持,即使在 IE6 中,我也发现它总是可以接受的,或者至少是可行的。 XHTML 不参与其中:XS​​LT (1.0) 本身也不支持 XHTML,因为它早于它。
        【解决方案5】:

        暴雪的world of warcraft 网站和他们的armory 网站是我见过的唯一一个发送xml 并使用客户端xslt 显示它的网站。它似乎工作得很好,而且它们是相当大容量的网站。 (请注意,它查看用户代理并为某些浏览器执行转换服务器端,我知道它为 IE 执行客户端)

        【讨论】:

        • 我希望我可以显示一个链接,指向我正在开发的餐厅电子商务网站,该网站也是如此。当然,除了在 IE 中之外,它在任何地方都可以正常工作。为此,我们必须添加一些 javascript。
        【解决方案6】:

        有一个使用 XML/XSLT 生成 HTML 的示例 PHP 应用程序,在 Tony Marston 的A Sample PHP Application 有服务器和客户端演示,有大量的推理、howtos 等。

        【讨论】:

          【解决方案7】:

          正如这里已经说过的,当您已经拥有 XML 格式的数据或者如果您需要将其作为 XML 发布到其他地方(因此无论如何都需要生成 XML - 这是我们的项目之一)。在这种情况下,将转换转移到客户端是一个不错的选择,可以从您的服务器中分担一些负载。

          有些浏览器在客户端不支持 XSLT,但大多数使用的浏览器(IE、FF、Chrome)都可以正常工作。挑战在于移动设备的浏览器。例如。尚不支持 Android XSLT。我们已经通过在服务器端进行设备检测来处理这个问题(使用 WURLF - 不幸的是它没有支持 XSL 的功能标志,因此我们必须根据设备类型来决定)并仅在服务器端对那些设备进行转换无法在客户端处理它。因此,我们尽可能多地保留客户端的处理,这有助于我们更轻松地扩展而不需要硬件升级(到目前为止:))。

          使用 XML 的另一个优点是您可以导出纯数据,这些数据很容易使用,但有一些其他工具可以进行不同的处理。这几乎就像您正在提供 Web 服务来获取您的数据一样。对于未来不可预见的数据使用非常方便。

          安全性:如果您在客户端使用 XSLT,则需要考虑的一个重要方面是确保您发送给客户端的 XML 数据不是机密/私有的(不包含任何敏感信息您可能不希望某些用户看到)。例如。如果您的 XSLT 只为某些用户显示某些数据,并且如果其他人会看到隐藏的数据将成为安全桥梁,那么您最好在转换服务器端进行。

          希望对你有帮助。

          干杯,史蒂夫。

          【讨论】:

            【解决方案8】:

            如果它符合您的需求,这是一个很好的解决方案。客户端 XSLT 转换是 ...
            ...很好,因为:
            - 您可以在廉价的网络空间上使用模板,而无需任何服务器支持
            - 非常适合繁忙的交通
            - 该网站甚至可以在 CD/DVD/USB-Stick 上离线运行
            - 页眉、页脚、导航等都在 XSLT 脚本中并且只加载一次,对于许多类似页面的速度很有好处。
            ...不好,因为:
            - 一些小众浏览器可能不支持 XSLT
            - 你不会出现在谷歌,XML 文件不适合搜索引擎蜘蛛

            【讨论】:

            • 您能否解释一下“该站点如何在 CD/DVD/USB-Stick 上离线运行”或“您可以在没有任何服务器支持的廉价网络空间上使用模板”,就像非 XSL 站点一样。如果有动态数据,它无论如何都需要生成 XML,如果没有,则平面 HTML 站点将是等效的。那么 XSL 有什么好处呢?
            • @DanSingerman:使用 XSLT,您可以使用动态数据,但它将由浏览器在客户端进行处理。提供程序将 .xml 和 .xsl 作为静态文件提供,与提供静态 html 页面没有区别。一切都与在浏览器中打开 .xml 作为本地文件一样。但是例如10 个静态 html 页面是 10 x 页眉、菜单和页脚。对于客户端 XSLT,10 个页面是 10 个带有特定页面数据的 .xml 文件和 1 个带有页眉、菜单和页脚的 .xsl 文件。要查看此运行情况,请查看 klassikmotorrad.de
            猜你喜欢
            • 2010-10-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-10
            相关资源
            最近更新 更多