【问题标题】:Data Interchange Format with Scripting options带有脚本选项的数据交换格式
【发布时间】:2016-03-28 13:44:27
【问题描述】:

XML、JSON 和 YAML 似乎最适合它们的设计。有没有办法允许编写脚本,或者至少从这些格式中调用函数,返回字符串值并更改数据中元素的值。

长话短说:是否有任何数据交换格式允许通过传递参数来编写脚本或调用函数?

如果没有,那么是否有一种合理/标准的语法可以在这些格式中用于在运行时调用函数?

XML 示例:<Element>$Method("My name is Jeff");<Element>

【问题讨论】:

  • 对我来说似乎是一个奇怪的问题,您可以查看 xsl 转换来转换 xml。您可以在转换中调用一些函数。

标签: format data-interchange


【解决方案1】:

您的第一个问题的答案是否定的。对于第二个“是的,XML 和 YAML 有一种合理的语法”

这些是数据格式,这是它们所指定的,XML 和 YAML 比 JSON 更强大。甚至 JSON 也是与编程语言无关的,除此之外,规范中没有关于定义可评估函数的方法的任何内容。

当然,在 XML 和 YAML 中标记某些内容很容易(每种都以自己特定的方式)。您只需编写一个程序,在解析期间评估标记并创建输出(来自字符串/标量/复杂类型)。 这立即回答了您似乎没有问过自己的问题:“要评估的'字符串'脚本是什么语言?”,答案是:“无论您在程序中使用什么脚本语言来评估标记数据”

从 python YAML 解析器调用 python 解释器进行评估是微不足道的。从已编译的编程语言中,您要么必须调用脚本扩展,要么将评估器构建到您的程序中。您当然也可以通过编译和动态加载来进行评估,但这可能比使用现有的脚本语言更难。

您的示例似乎使用了基于某种模式的值解释(以$ 开头,在字符串中的某处有一个$)。这是错误的做法,因为您必须分析每个字符串并提供一些转义机制来编写实际的$。使用标记/属性来实际告诉解析器需要制造一些特殊的东西要好得多。

【讨论】:

  • 谢谢Anthon,这对我来说已经很清楚了。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2012-07-20
  • 2013-05-05
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多