我有一个XML Schema(XSD),我想用它来验证XML数据,但是关于XML数据的一个非常具体的事情是不合规的。我想生成一个备用XSD来用于成功验证XML。更具体地说,我想扩展类型的定义,以允许原始XSD不允许的值。修改原始XSD是不切实际的。
以下是原始XSD的原始定义:
<simpleType name="fooType">
<restriction base="token">
<pattern value="[a-z]+"/>
<enumeration value="foo"/>
</restriction>
</simpleType>
对于使用此类型定义的实体,我也想允许值“123”。所以,我试过这个:
<redefine schemaLocation="original.xsd">
<simpleType name="fooType">
<extension base="orig:fooType">
<enumeration value="123"/>
</extension>
</simpleType>
</redefine>
我承认我只是扯着它,我不知道XSD。但在我阅读标准之前,我想知道这是否可行?我可以找到xsd:redefine的所有(我的意思是所有)示例已经限制可能的值,而不是扩展它们。
如果不使用xsd:redefine,那我该怎么办呢?
修改:相关但无法提供信息:Extending XSD files
答案 0 :(得分:2)
simpleType的内容只能是限制,列表或联合。因为重新定义类型时你必须引用你要重新定义的类型作为基类型,所以你会被卡住;限制是你唯一可以拥有的。
为了完整起见,有一种技术允许使用联合内容进行开放式枚举,但是,由于您无法触及原始模式,因此它不适用于您的情况。
还有一个观察:有一个模式和一个枚举,有点“没用”;在你的情况下,你唯一的价值就是“foo”。