0

我有一些 MathML,其中包含标识各种函数调用的标签(尽管这种情况可以适用于任何 XML)。

一个样本是:

<math>
  <apply>
    <ci>IIF</ci>
    <apply>
      <eq />
      <apply>
        <ci>DDOutputB60</ci>
        <ci>Index</ci>
      </apply>
      <cn>0</cn>
    </apply>
    <cn>0</cn>
    <apply>
      <ci>DDOutputB60</ci>
      <ci>Index</ci>
    </apply>
  </apply>
</math>

如您所见,此特定示例标识了两个函数调用 - 但两者都针对同一个函数 (DDOutputB60)

我正在尝试编写一些 SQL 来列出 DISTINCT 函数,但需要在 XPath 中执行此操作,而不是在从结果集中选择 DISTINCT 的包装 SELECT 语句中。

(顺便说一句,这样做的原因是这是递归 CTE 的成员 SQL,并且不允许使用 DISTINCT 或 GROUP BY)

我被引导相信以下是有效的 XPath,它将选择不同的值,但在 SQL Server 2008 中不受支持:

COLUMN.nodes('(//ci[not(text() = preceding-sibling::ci/text())])')

任何人都可以建议在 SQL Server 2008 中工作的 XPath 等效项吗?也许 >> 或 << 节点比较运算符可能会有所帮助,但我不是专家。然而。

提前致谢。

@Ravi:所需的输出将是 .nodes(...) sql函数的结果,我假设在这种情况下看起来像:

        <ci>DDOutputB60</ci>

这将是单个节点结果,因为已删除重复项。

4

1 回答 1

0

也许 >> 或 << 节点比较运算符可能会有所帮助,但我不是专家。然而。

是的,这就是你需要的

  • 这是这两个答案中的示例:

不支持“跟随”轴时在 XPath 中获取以下同级

在 SQL Server XPath 中获取后续兄弟

于 2019-04-26T03:07:37.007 回答