В xke-проводнике Haskell, как я могу создать узел? - PullRequest
0 голосов
/ 04 сентября 2018

Я новичок в Haskell. Я использую xml -роводник для преобразования некоторых XML в HTML, , как показано в учебном пособии по Yesod . У меня есть некоторые атрибуты и контент, который я хочу превратить в узел, чтобы добавить его в существующий XML. Какой лучший способ создать узел? Я пытался позвонить Node, но он говорит, что это не в рамках. Я могу создать узел, используя NodeContent "content" или NodeElement (Element ... ), но как мне создать узел, предоставляющий и элементы и контент?

(Книга Йесод предлагает использовать Гамлет, но я бы предпочел не привлекать Гамлета, поскольку я уже использую Blaze и не хочу изучать и поддерживать слишком много языков шаблонов.)

1 Ответ

0 голосов
/ 04 сентября 2018

Вот конструкторы и поля для Node ...

data Node
    = NodeElement Element
    | NodeInstruction Instruction
    | NodeContent Text
    | NodeComment Text

... и Element:

data Element = Element
    { elementName       :: Name
    , elementAttributes :: Map.Map Name Text
    , elementNodes      :: [Node]
    }

Обратите внимание, что Element содержит список Node с, и поэтому вы можете сделать так, чтобы он содержал NodeContent:

NodeElement $ Element "b" empty [ NodeContent "Title" ]

(ср. этот пример в связанном учебном пособии.)

...