xml - 用于创建 xml 请求的 zipper ?

标签 xml haskell zipper

如何创建符合 XSDXML 请求才能使请求有效?

一种方法是创建整个请求,然后在 XSD 上验证它。 有没有办法在遍历模式时创建请求?

第一个想到的是 Zipper,但我真的不确定它们是否可以用在这里。

也许我不太理解,但如果已经定义了一些结构并且需要在该结构中进行更改,Zipper 似乎很棒。 Zipper 可以用于改变结构吗? (例如,将序列附加到序列数组?)

最佳答案

正如 Tomalak 在 comment 中所说的那样,

That's like trying to create meaningful strings by walking the regex. It doesn't work that way.

zipper 可以帮助您在结构中蜿蜒前行,检查零件并有选择地修改它们;最后,您可以选择“拉上” zipper 以获得原始版本的修改版本。你的想法至少有两个主要问题:

  1. XSD 的结构与其编码的文档结构不同,甚至非常相似。如果您要使用 zipper 修改 XSD 以根据该 XSD 生成有效的 XML,您最终将完全重构它,而类型系统将无法帮助您做到这一点。

  2. zipper 是一种专注于某些数据结构的一部分的方法。在认真考虑 zipper 之前,您应该考虑要解压的数据结构是什么。根据您正在做的事情,您可能会或可能不会发现使用 zipper 有用,但 zipper 及其不变量总是与结构及其不变量相关。

关于xml - 用于创建 xml 请求的 zipper ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21322727/

相关文章:

java - 去除无效 XML 字符的转义序列

php - Laravel错误: Your PHP version is not compiled with zip support

ios - 如何在不耗尽内存的情况下解析巨大的 XML 文件

java - JAXP XSLT document()函数问题

xml - 使用 xml namespace 进行 XSLT 转换 我想我错过了一些东西

haskell - 箭式EDSL,用于编写下层代码

haskell - 在Haskell中选择AST表示形式

haskell - If 语句使用 IO Int haskell

xml - 使用 clojure xml zipper 返回多个值