Добавьте заголовок к преобразованию XML в CSV, используя XQuery - PullRequest
0 голосов
/ 28 февраля 2019

Привет. Я пытаюсь преобразовать некоторые xml в csv с помощью xquery и нашел предыдущее сообщение, которое помогло мне добраться до этой точки:

for $b in /root/Result
return 
  concat(escape-html-uri(string-join(($b/HolidayEndDate,
                                      $b/HolidayType,
                                      $b/FirstName,                                                 
                                      $b/AllowanceRemainingDays,
                                      $b/HolidayStartDate,
                                      $b/EmployeeId,
                                      $b/AllowanceDays,
                                      $b/LastName,
                                      $b/HolidayDurationDays
                                      )
                                       /normalize-space(),
                                    ",")
                         ),
         codepoints-to-string(10))

Возвращает все данные по мере необходимости, но без строки заголовка.Есть ли простое дополнение к приведенному выше коду, которое также возвращает строку заголовка?Благодарю.:)

Ответы [ 2 ]

0 голосов
/ 01 марта 2019
concat("HolidayEndDate,HolidayType,FirstName,AllowanceRemainingDays,HolidayStartDate,EmployeeId,AllowanceDays,LastName,HolidayDurationDays
",
    string-join(
        for $b in /root/Result
        return 
          concat(escape-html-uri(string-join(($b/HolidayEndDate,
                                          $b/HolidayType,
                                          $b/FirstName,                                                 
                                          $b/AllowanceRemainingDays,
                                          $b/HolidayStartDate,
                                          $b/EmployeeId,
                                          $b/AllowanceDays,
                                          $b/LastName,
                                          $b/HolidayDurationDays
                                          )
                                           /normalize-space(),
                                        ",")
                             ),
                 codepoints-to-string(10)), "")
)
0 голосов
/ 28 февраля 2019

Поскольку ваш запрос возвращает последовательность строк, вы можете просто добавить еще одну строку перед выражением FLWOR:

"HolidayEndDate,HolidayType,FirstName,AllowanceRemainingDays,HolidayStartDate,EmployeeId,AllowanceDays,LastName,HolidayDurationDays
",

for $b in /root/Result
return 
  concat(escape-html-uri(string-join(($b/HolidayEndDate,
                                      $b/HolidayType,
                                      $b/FirstName,                                                 
                                      $b/AllowanceRemainingDays,
                                      $b/HolidayStartDate,
                                      $b/EmployeeId,
                                      $b/AllowanceDays,
                                      $b/LastName,
                                      $b/HolidayDurationDays
                                      )
                                       /normalize-space(),
                                    ",")
                         ),
         codepoints-to-string(10))

Поскольку вложенные последовательности сглажены (в XQuery, это приводит к одной выходной последовательности, включая заголовок.Обратите внимание также, что я использовал символьную сущность '
' для символа новой строки, которая намного короче codepoints-to-string(10).

...