Я - Clojure n00b, пытаюсь создать несколько строк XML.
Моя цель - создать что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item name="n0">n0 value</item>
<item name="n1">n1 value</item>
<item name="n2">n2 value</item>
</items>
Я могу использовать функцию элемента библиотеки clojure.data.xml прямо так:
(element :items {}
(element :item {:name "n0"} "n0 value")
(element :item {:name "n1"} "n1 value")
(element :item {:name "n2"} "n2 value"))
, и это отвечает на emit-str, как и ожидалось, и печатает xml, который я ищу.
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть переменное количество предметов для данной коллекции предметов, поэтому я хочу сделать что-то похожее на это:
(def collection-of-items
[(element :item {:name "n0"} "n0 value")
(element :item {:name "n1"} "n1 value")])
(element :items {}
collection-of-items)
Т.е. я создаю коллекцию из нескольких объектов-элементов xml и задаю это в качестве аргумента: content для определения элемента ': items'.
Эти две формы вычисляются правильно, но тогда emit-str завершается ошибкой, когда вызывается в результате вызова элемента.
Итак, мой вопрос: как передать var «collection-items» в функцию element в качестве аргумента, чтобы он отображался как простой список аргументов переменной? Или я полностью скучаю по лодке Clojure?
Спасибо всем!