2011-05-30 46 views
2

當我創建一個XML文檔時,我使用Perl,但是這個問題與語言無關。大多數人似乎都使用XML :: Writer或XML :: LibXML等工具來完成這項任務。它看起來像這樣:創建xml文檔:內聯vs模板語言

my $writer = XML::Writer->new(); 
my $type = "fancy"; 
$writer->startTag("pants"); 
$writer->characters($type); 
$writer->endTag("pants"); 

我有點討厭這個。感覺就像您創建的第一個網頁,作爲初學者Web開發人員,您將所有HTML,CSS和PHP代碼混合在一起,因爲您還沒有了解MVC。所有人都認爲這很糟糕,我們應該分開這一切,儘量保持語言的分離。如果沒有其他,它會提高可讀性。

那麼,爲什麼它確定把XML在我們的Perl代碼?我的想法就是像使用HTML一樣使用Template :: Toolkit。所以它看起來像這樣:

<pants> 
    [% type %] 
<pants> 

之後,我可以將結果寫入XML :: LibXML並驗證字符串。

但我不認爲有人這樣做。爲什麼不?我錯過了什麼嗎?

+0

請勿將MVC放在底座上。這只是很多方法。分離邏輯和表示只是常識,而不是MVC。留在話題中:有**代碼**的地方。它可以以低成本編寫,然後在需要更改時以低成本進行重寫,而不是在未來開發路徑無法安全預測的環境中進行設計時保持良好。 – vbence 2011-05-30 08:33:02

回答

3

我用Template::Toolkit的XML。我也使用了更多的程序XML::Writer風格的方法。

如果你有,你只需用數據填充在一個固定的XML結構,你有模板::工具包已經四周,然後用你的XML格式的TT模板使得有很大的意義;在這種情況下使用模板可能會使其更容易匹配所需的模式。但是,當然,要小心妥善地轉義和編碼所有的XML而不是HTML。

如果你編程轉換任意結構化數據到XML,然後XML ::作家可能是一個更好的選擇:如果你沒有一個固定的模式,然後沒有什麼模板。

XML通常用作便攜式數據序列化格式。這個典型的例子是從一些嵌套的HoHoA數據結構開始,並通過通用序列化接口將其轉換爲XML。序列化系統只是有一個數據結構,所以沒有結構模板。

此外,人們往往當有更好的方法來使用,他們甚至學會第一屆技術。我猜想大多數人首先遇到了用於數據序列化的XML(而不是結構化文檔存儲),因此即使在模板方法更清晰的情況下,他們也會繼續使用序列化技術。

所有這一切(甚至第一款)適用於JSON(甚至HTML)同樣出色。

+0

因爲我問過這個問題,我看到很多其他人都使用Template Toolkit來做XML。所以我認爲你是對的,它是一個有效的選擇考慮。謝謝! – 2011-05-31 20:55:43