我正在尝试使用简单的xml
包为自定义XML结构构建XML生成器。这是一个示例XML片段:
<Response>
<Answer>Hello World</Answer>
<Play loop="3">http://example.com/a.mp3</Play>
<SendAnswer dest="someuri">
<Answer>Something</Answer>
<Play>someuri</Play>
</SendAnswer>
</Response>
在这个自定义XML中,有规则指定可以嵌套在每种元素下的元素。是否可以定义GADT来构建基于这些规则限制结构的XML片段?规则只列出允许哪种父子关系(例如,Response不能是任何其他元素的子元素,SendAnswer可以是Response的子元素等)。
这是我走了多远:https://gist.github.com/4104499
执行时,输出:
<Response>
<Speak loop="2">
http://example.com/a.mp3
</Speak>
</Response>
但是,我认为这种方法有许多缺点:
我想知道这个问题是否适合使用GADT的解决方案。如果是的话,怎么设计得更好呢?