坦率地说,我正在搜索一个离线模板引擎,以便使用xpath语法将xml-数据库中的信息应用到特殊的文本文件中。
我不太擅长文字,用一个例子来说明更容易。所以我的db.xml看起来是:
<root>
<what name="pete" />
</root>file.tmpl看起来类似于(组成的语法):
This is a scratch-file.
<!--(for n in '/root/what/@name')-->
whats name is @!n!@
<!--(else)-->
no whats...
<!--(end)-->因此,在调用./tool -x db.xml -t file.tmpl > file之后,file的结果内容应该是:
This is a scratch-file
whats name is pete当然,我希望在xpath返回变量上下文中的非字符串时出现异常,例如,@!!@等等。我正在寻找数据和模型的安全性,而不是性能或方便。
我知道:最后,这看起来很像简化的xslt,包装成一个很好的人类可读的语法;-)
我没有找到一个模板引擎工具来实现这一点。所有我看过的yaml/json作为数据输入,如胡子,django,pyratemp。或者不提供像django-xml这样的良好外部接口。
我可以开始滚动我自己,但这感觉只是没有意义,有这么多的模板引擎已经!是否有任何指针或输入?
发布于 2015-10-16 15:07:42
确实有许多可用的模板语言可以满足您的需要,但是因此,策略不允许询问工具或库。因为它通常会征求意见性的答案。
我知道:最后,这看起来很像简化的xslt,包装成一个很好的人类可读的语法;-)
我个人认为XSLT非常具有人类可读性,因为它使用了XML,而XML本身就是为人类所设计的。但当然,这只是一个意见问题。
尽管如此,我认为在XML语言组(XQuery、XSLT、XProc、XPath等)中,使用现有的工具,您应该能够在不花费太多精力的情况下获得很长的一段路。例如:
xsl:evaluate的示例输入来自动计算模板中的XPath。这样就不需要您的用户理解(一些) XSLT,并且允许您在模板中拥有所有的自由。但是,您应该定义一种清晰的方式将您的XPath从其余部分标记出来(在您的示例中,使用注释是一种可行的方法,因为您可以通过comment()节点简单地对其进行标记)。xsl:initial-template,设计一个入口点变得非常简单,并且可以参数化来自数据库的输入。https://stackoverflow.com/questions/33171703
复制相似问题