0

我正在尝试使用 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> 当然,我会感谢您的解决方案,但我不想占用您不必要的时间。

4

1 回答 1

1

如果您可以将语法更改为与 XPath 兼容,所以它是$a+$b而不是a+b,那么使用 XSLT 3.0 的 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 文档,其中包含确定不同类别资本支出所需的批准级别的公式。

于 2015-04-16T17:40:16.423 回答