我正在尝试使用xmlgen库生成一些相对简单的xmd文档;但是,我发现语法难以奏效。
这个简单的例子有效:
people = [("Stefan", "32"), ("Judith", "4")]
genXml''' :: [(String, String)] -> Xml Doc
genXml''' people =
doc defaultDocInfo $
xelem "SERVICES" $ xattr "transaction" "SHARE"
outputXml :: IO ()
outputXml = BSL.putStrLn (xrender $ genXml''' people)
但是当我尝试添加这样的子元素时:
genXml''' :: [(String, String)] -> Xml Doc
genXml''' people =
doc defaultDocInfo $
xelem "SERVICES" $ xattr "transaction" "SHARE" $
xelem "SERVICE"
我收到以下编译错误:
无法匹配类型
Xml' with
( - >)(c0 - > Xml Elem)'
函数xattr' is applied to two arguments, but its type
[Char] - > Text.XML.Generator.MkAttrRes [Char] [Char]'只有一个 在表达式中:xattr“transaction”“SHARE”
在($)', namely
xattr“transaction”“SHARE”的第二个参数中,$ xelem“SERVICE”'
我已尝试将<>
或<#>
放在xelem "SERVICES" $ xattr "transaction" "SHARE" $
行的末尾,但这并不能解决问题。
关于我做错了什么的暗示? 感谢。
答案 0 :(得分:0)
从xmlgen的文档判断,
genXml''' :: [(String, String)] -> Xml Doc
genXml''' people =
doc defaultDocInfo $
xelem "SERVICES" (xattr "transaction" "SHARE" <#> xelemEmpty "SERVICE")
应该工作。
您的代码尝试将“SERVICE”添加到“transaction”属性,这不起作用。