在数据访问点上执行的 SQL 的 XML 输出的一致 ID

Consistent Id of XML output of SQL executed on Data Access Point

我 运行 在 Exact Oline 上申请生态税,使用 XML 输出和 XSL 转换生成 HTML 表格。

这样的查询:

select * from me

生成:

<?xml version="1.0" encoding="utf-16"?>
<InvantiveDAPOutput xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <!--ecotaksen.be Invantive Data Access Point (Unofficial)-->
  <!--License 'L740757780' registered to Control INFO B.V..-->
  <ResultSets>
    <ResultSet Id="0">
      <Fields>
        <Field>
          <Id>0</Id>
          <Name>CurrentDivision</Name>
          <DatabaseDataType>int32</DatabaseDataTyp...

然后在我的 XSL 中使用例如:

<xsl:value-of select="//InvantiveDAPOutput/ResultSets/ResultSet[@Id='4']/Rows/Row/entity_name_singular" />

但是当我在过程中的某处插入查询时,Id 全部改变。例如1仍然是1,但是新插入查询后的数字增加了1。

是否有更聪明的方法使 XSL 独立于查询的数量及其顺序?

只需将所需的结果集名称添加到您的查询中作为提示:

select /*+ result_set_name('myname') */ * from me

XML会变成这样:

<ResultSet Id="0" Name="myname">

您可以在 the documentation 中找到执行提示的完整语法。这适用于 Exact Online 以及其他平台,例如 Teamleader 或 salesforce。