我有一个XML (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
发布于 2011-10-09 00:38:32
simpleType的内容只能是限制、列表或联合。因为当您重新定义一个类型时,您必须将其引用为一个基类型,即您要重新定义的类型,因此您将陷入困境;限制是您唯一可以拥有的类型。
为了完整起见,有一种允许开放枚举的技术,它涉及到联合内容的使用,但是,由于您不能接触原始模式,所以在您的情况下,它将无法工作。
还有一个观察:有一个模式和一个枚举,这是一种“无用”;在您的例子中,您唯一可以拥有的值是"foo“。
https://stackoverflow.com/questions/7686046
复制相似问题