我正在創建一個項目以創建一個解析器,該解析器以XML中存儲的教科書並將它們轉換爲使用PHP的HTML。這是用於在線教育服務。我花了大量時間研究PHP中XML解析器的選項。從我所看到的我相信我最好的選擇是使用DOMDocument或XMLReader(也許將它與SimpleXML混合使用)。使用PHP將大型複雜XML文檔轉換爲HTML
這些書籍被分成單獨的文件,如Front,Units,Chapters和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屬性。
Phew。好的,所以我的問題是......是否有人有一些知識或經驗可以共享來解析這種大小/複雜性的XML文檔,以及針對這種規模的東西推薦的策略是什麼?
您是否考慮過使用XSLT?它是一種基於XML的語言,用於將XML文檔轉換爲其他格式,我認爲它可以很好地適應這個問題。 –
@JaniHartikainen其中一個因素是它必須是HTML,然後才能用CSS進行樣式化。這些HTML已成爲舊版本的一部分,現在已經有了一些CSS,這些舊版本是用我用這個PHP版本取代的舊版C#解析器解析的。 我對XSLT並不熟悉,但似乎我最終會寫出很多結構代碼。 – gerobk