Согласованный идентификатор вывода 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.