【问题标题】:Converting large, complex XML documents to HTML using PHP使用 PHP 将大型、复杂的 XML 文档转换为 HTML
【发布时间】:2012-12-03 19:35:58
【问题描述】:

我正在做一个项目来创建一个解析器,该解析器将存储在 XML 中的教科书转换为使用 PHP 的 HTML。这是用于在线教育服务。我花了很多时间研究 PHP 中的 XML 解析器选项。据我所知,我相信我最好的选择是使用 DOMDocument 或 XMLReader(也许将它与 SimpleXML 混合使用)。

这些书籍被分成单独的文件,分别为 Front、Units、Chapter 和 Back。这是从外部源提供的,因此我无法控制 XML。话虽如此,我发现他们正在使用Syntext Serna Free 来构建 XML 文档。

因此书籍以 ISBN# 命名,文件格式为 1234567890_ch01.xml。这是 XML 文档的一个示例。这是高度浓缩的可读性,因为实际文档是每个文档 700-1000 行,每个教科书大约 25 个文档。

<frontmatter id="1234567890_001_000003" page-num="i" filename="1234567890_001_fm01.xml" sourcefilename="prelims.pdf">
    <titleinfo id="1234567890_001_000004" page-num="i">
        <title id="1234567890_001_000005" page-num="i">I'm a Book Title</title>
        <subtitle id="1234567890_001_000006" page-num="i">I'm a subtitle</subtitle>
    </titleinfo>
    <creditinfo id="1234567890_001_000007" page-num="i">
        <author id="1234567890_001_000008" page-num="i">
            <name><emph type="bold">Senior Author</emph>
                <fname><emph type="bold">Bob</emph></fname>
                <lname><emph type="bold">Loblaw</emph></lname>
            </name>
            <organizationname>District School Board</organizationname>
        </author>
        <author id="1234567890_001_000009" page-num="i">
            <name><emph type="bold">Authors</emph>
                <fname><emph type="bold">Spongebob</emph></fname>
                <lname><emph type="bold">Squarepants</emph></lname>
            </name>
            <organizationname>District School Board</organizationname>
        </author>
    </creditinfo>
</frontmatter>

所以这是布局的基本思想。当然,它还有很多内容,但本质上它都是按父标签排序的。我在想我的策略是制作一个父标签列表,使用 SAX 解析器读取这些标签,然后将子标签转换为 SimpleXML 对象以便于使用。本质上保持相同的 XML 结构,但将其包装在 HTML 元素中,并将 XML 元素名称作为类或 id 名称,并将 XML 属性直接转换为 HTML 属性。

呸。好的,所以我的问题是……有没有人可以分享一些知识或经验来解析这种大小/复杂性的 XML 文档,对于这种规模的东西有什么推荐的策略?

【问题讨论】:

  • 您考虑过使用 XSLT 吗?它是一种基于 XML 的语言,用于将 XML 文档转换为其他格式,我认为它可以很好地解决这个问题。
  • @JaniHartikainen 因素之一是它必须是可以使用 CSS 设置样式的 HTML。页面上已经存在 CSS,该 HTML 将成为其中的一部分,以及使用旧 C# 解析器解析的旧书籍,我将用这个 PHP 版本替换。我对 XSLT 不太熟悉,但似乎我最终会编写很多结构代码。

标签: php html xml parsing


【解决方案1】:

我肯定会研究 Jani Hartikainen 对 XSLT 的建议。 XSLT 是一种基于 XML 的语言,用于编写规则(称为“样式表”,但它们不同于 CSS 样式表)将任意 XML 文档(例如您正在处理的输入)转换为其他格式,包括 HTML(转换为HTML 是如此普遍,以至于 XSLT 有一些专用于它的功能)。 PHP 有一个内置的 XSLT 处理器。

可能是教科书出版商已经有一些 XSLT 样式表用于将教科书转换为 HTML;您可能需要根据自己的特定需求对它们进行一些修改,但这比从头开始编写要容易得多,也不容易出错。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2015-10-14
    • 2014-04-22
    • 2011-05-18
    • 1970-01-01
    • 2014-08-07
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多