2011-09-21 49 views
0

我正在尝试使用xmlgen库来生成一些相对简单的xmd文档;但是,我发现语法难以工作。无法使用xmlgen添加子元素

这个简单的例子工程:

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" 

我得到以下编译错误:

Couldn” t匹配类型​​( - >)(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‘服务’”

我试图把<><#>xelem "SERVICES" $ xattr "transaction" "SHARE" $行的末尾,但这并不解决问题。

任何提示我做错了什么? 谢谢。

回答

0

从XMLGEN的文档来看,

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

应该工作。

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

+0

这样做的窍门,谢谢。 – Neil

相关问题