这似乎是一件容易做的事情,但事实并非如此。 XML Schema是一种文档验证语言,而不是文档生成语言。它不会告诉你如何创建一个新的文档;它会告诉你所做的文件是否有效。这些不是一回事。
例如,在由一系列可选选项组成的XML模式中创建复杂类型是很简单的。一个foo
元素可以有一个bar
或baz
孩子,然后是一个baz
或bat
孩子,那么foo
,bar
,或bat
孩子。这使得对于能够确定,这两个元素是有效的规则:
<foo>
<baz/>
<baz/>
<bar/>
</foo>
<foo>
<foo>
<bar/>
</foo>
</foo>
与此同时,这一规则给你来决定如何采取数据项的元组,并创建一个foo
几乎为零的帮助元素从它。
通常,当有人问这个问题时,他们正在查看他们正在使用的一个或两个模式,这些模式定义了一个相对简单的文档结构。看起来很直观,应该很容易将这些模式用作映射过程的输入。它可能是。什么是不容易的,甚至可能的是一个映射过程,可以将任何模式作为输入。
我在项目中所做的就是简化问题。我已经构建了使用CSV和XML并支持模式验证的程序,但在这些程序中,模式是输出。我已经定义了一个简单的XML元数据格式,例如:
<item name="foo" type="string" size="10" allowNulls="true" .../>
<item name="bar" type="date" allowNulls="false" .../>
然后我可以使用元数据来控制从CSV输入XML的生产,我可以也用它制作的模式,该XML我的程序生产将符合。如果我更改我的元数据,我的XML和模式会适当地更改。
当然,如果模式真的是您的流程的输入(例如他们是由第三方提供的),这甚至不会帮助您。
你有没有想过使用XKCD? – 2010-10-13 08:50:03
您还应该指定您在使用(v1或v2?)时受限制的XSLT版本 - 它对最佳答案有很大影响。此外,您是否仅限于一个供应商(哪一个?),还是您需要独立于供应商/平台的解决方案? – 2012-02-02 01:42:07