创建xml文档:内联与模板语言

时间:2011-05-30 08:28:42

标签: xml perl coding-style

当我创建XML文档时,我使用Perl,但这个问题与语言无关。大多数人似乎使用XML :: Writer或XML :: LibXML等工具完成此任务。它看起来像这样:

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

我有点讨厌这个。感觉就像您作为初学者Web开发人员创建的第一个网页,您将所有HTML,CSS和PHP代码混合在同一个文件中,因为您尚未了解MVC。每个人都认为这很糟糕,我们应该将这一切分开,并尽可能地将语言分开。如果没有别的话,它会提高可读性。

那么为什么将XML放在我们的Perl代码中呢?我的想法是使用Template :: Toolkit,就像我们使用HTML一样。所以它看起来像这样:

 <pants>
     [% type %]
 <pants>

之后,我可以将结果粘贴到XML :: LibXML中并验证字符串。

但我不认为有人这样做。为什么不?我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

我已将Template::Toolkit用于XML。我也使用了更加程序化的XML::Writer风格方法。

如果你有一个固定的XML结构,你只需要填入数据并且你已经有了Template :: Toolkit,那么使用一个TT模板来实现你的XML很有意义;在这种情况下使用模板可能会使正确匹配所需模式变得容易得多。但是,当然,要小心正确地转义和编码XML的所有内容而不是HTML。

如果你以编程方式将任意结构化数据转换为XML,那么XML :: Writer可能是一个更好的选择:如果你没有固定的模式,那么就没有任何模板了。

XML通常用作便携式数据序列化格式。原型示例从一些嵌套的HoHoA数据结构开始,并通过通用序列化接口将其转换为XML。序列化系统只有一个数据结构可供使用,因此模板没有结构。

此外,人们倾向于使用他们学习的第一种技术,即使有更好的方法。我猜大多数人首先会遇到XML用于数据序列化(而不是结构文档存储),因此即使模板方法更清晰,他们也会继续使用序列化技术。

所有这些(甚至是第一段)同样适用于JSON(甚至是HTML)。