这似乎很容易做到,但事实并非如此.XML Schema是一种文档验证语言,而不是文档生成语言.它没有告诉你如何制作新文件; 它会告诉您所制作的文件是否有效.远远不是那些不一样的东西.
例如,在XML Schema中创建一个由一系列可选选项组成的复杂类型是微不足道的.一个foo元素可以有一个bar或baz孩子,然后是一个baz或bat孩子,那么foo,bar或bat孩子.这使得规则可以确定这两个元素都是有效的:
<foo>
<baz/>
<baz/>
<bar/>
</foo>
<foo>
<foo>
<bar/>
</foo>
</foo>
Run Code Online (Sandbox Code Playgroud)
同时,该规则在确定如何获取数据项元组并foo从中创建元素方面几乎没有任何帮助.
通常,当有人问这个问题时,他们会查看他们正在使用的一个或两个模式,这些模式定义了一个相对简单的文档结构.看起来很直观,应该很容易将这些模式用作映射过程的输入.它可能是.什么不容易,甚至可能是一个映射过程,可以将任何模式作为输入.
在我的项目中,我所做的是简化问题.我已经构建了使用CSV和XML并支持模式验证的程序,但在这些程序中,模式是输出.我已经定义了一个简单的XML元数据格式,例如:
<item name="foo" type="string" size="10" allowNulls="true" .../>
<item name="bar" type="date" allowNulls="false" .../>
Run Code Online (Sandbox Code Playgroud)
然后我可以使用该元数据来控制CSV输入的XML生成,我也可以使用它来生成我的程序生成的XML将符合的模式.如果我更改元数据,我的XML和架构会相应更改.
当然,如果模式真的是您的过程的输入(例如,它们由第三方提供),这甚至不会开始帮助您.