2011-10-07 48 views
1

我有我想要使用验证XML数据的XML架构(XSD),但有关XML数据的一个非常具体的事情不符合。我想生成一个备用XSD来成功验证XML。更具体地讲,我想延长一个类型的定义,允许不是由原始XSD允许的值。修改原始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:重新定义,那么我该怎么办呢?

编辑:相关,但不提供信息:Extending XSD files

回答

2

一个简单类型的内容只能是有限制的,列表或联盟。因为当重新定义一个类型时,你必须引用一个你正在重新定义的类型作为基础类型,然后你就被卡住了;限制是你唯一可以拥有的。

为了完整起见,有一种技术,允许开放的枚举,涉及利用工会的内容,但是,因为你不能碰的原始模式,它不会在你的情况下工作。

还有一个观察:具有图案和枚举,是种“无用”;在你的情况下,你可以拥有的唯一的价值是“富”。

相关问题