0

XML で保存された教科書を PHP で HTML に変換するパーサーを作成するプロジェクトに取り組んでいます。これは、オンライン教育サービスで使用するためのものです。私は、PHP での XML パーサーのオプションの調査にかなりの時間を費やしてきました。私が見る限り、最善の選択肢は DOMDocument または XMLReader を使用することです (おそらく SimpleXML と混合することです)。

ブックは、フロント、ユニット、チャプター、およびバックとして個別のファイルに分割されます。これは外部ソースから提供されるため、XML を制御することはできません。そうは言っても、彼らがXML 文書の作成にSyntext Serna Freeを使用していることはわかっています。

したがって、本は 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ドキュメントを解析するために共有できる知識や経験を持っている人はいますか?このスケールのものに対して推奨される戦略は何ですか?

4

1 に答える 1

0

Jani Hartikainen の XSLT の提案を検討したいと思います。XSLT は、任意の XML ドキュメント (扱っている入力など) を HTML ( HTML は非常に一般的であるため、XSLT には HTML 専用の関数がいくつかあります)。PHP には XSLT プロセッサが組み込まれています。

教科書の発行者は、教科書を HTML に変換するための XSLT スタイルシートをすでにいくつか持っている可能性があります。おそらく、特定のニーズに合わせて多少変更する必要がありますが、ゼロから独自のものを作成するよりもはるかに簡単で、エラーが発生しにくくなります。

于 2013-03-19T00:56:19.107 に答える