无法使用xmlgen添加子元素

时间:2011-09-21 20:12:48

标签: xml haskell

我正在尝试使用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" $行的末尾,但这并不能解决问题。

关于我做错了什么的暗示? 感谢。

1 个答案:

答案 0 :(得分:0)

从xmlgen的文档判断,

genXml''' :: [(String, String)] -> Xml Doc
genXml''' people = 
    doc defaultDocInfo $
        xelem "SERVICES" (xattr "transaction" "SHARE" <#> xelemEmpty "SERVICE")

应该工作。

您的代码尝试将“SERVICE”添加到“transaction”属性,这不起作用。