Согласованный идентификатор вывода XML SQL, выполненного в точке доступа к данным

Я запускаю приложение на 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 независимым от количества запросов и их порядка?

1 ответ

Решение

Просто добавьте желаемое имя набора результатов в свой запрос в качестве подсказки:

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

XML станет таким:

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

Вы можете найти полный синтаксис для подсказок выполнения в документации. Это касается как Exact Online, так и других платформ, таких как Teamleader или salesforce.

Другие вопросы по тегам