我试图使用Xquery,Xpath或Xproc来评估作为xml标签值插入的等式 - 简单来说就是纯XML。我是初学者,但在我看来应该是可行的。为了更好地展示我想要实现的目标,请参阅此示例:
<inp>
<data>
<a>5</a>
<b>4</b>
</data>
<eq>
a+b
</eq>
</inp>
现在会有一些魔力......结果我想得到类似的东西:
<res>
9
</res>
你能帮助我解决所涉及的魔法吗?至少指向正确的技术 - xquery,xpath或xproc来做到这一点。谢谢。 托多尔
编辑: 为了避免指责我没有做任何研究 - 这是问题的一部分。我试图确定xml系列中使用的最佳技术。这就是为什么我要求解决问题的方向而不是解决方案:)。谢谢。 PS&GT;当然,我很感激解决方案,但我不想用你所需的更多时间。
答案 0 :(得分:1)
如果您可以将语法更改为XPath兼容,那么它是$a+$b
而不是a+b
,那么使用XSLT 3.0&#39;&#39; s xsl:evaluate或各种XSLT 1.0和2.0处理器以特定于处理器的方式提供的eval()扩展。 3.0解决方案看起来像这样:
<xsl:template match="inp"
<xsl:evaluate xpath="eq"
with-params="map:merge(
for $p in data/* return map{node-name($p): data($p)})"/>
</xsl:template>
我想补充一点,我为多年前这样做的客户实施了一个应用程序,而且我已经多次见过类似的事情了。在他们的案例中,他们使用的是包含公式的XML文档,这些公式确定了不同类别资本支出所需的批准水平。