首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用xsd:redefine来扩展,而不是限制?

是否可以使用xsd:redefine来扩展,而不是限制?
EN

Stack Overflow用户
提问于 2011-10-07 10:32:13
回答 1查看 548关注 0票数 1

我有一个XML (XSD),我想使用它来验证XML数据,但是关于XML数据的一个非常具体的事情是不兼容的。我想要生成一个替代的XSD来成功地验证XML。更具体地说,我希望扩展类型的定义,以允许原始XSD不允许的值。修改原来的XSD是不实际的。

以下是原始XSD的原始定义:

代码语言:javascript
复制
<simpleType name="fooType">
  <restriction base="token">
    <pattern value="[a-z]+"/>
    <enumeration value="foo"/>
  </restriction>
</simpleType>

对于使用此类型定义的实体,我也希望允许值"123“。所以,我试过这个

代码语言:javascript
复制
<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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-09 00:38:32

simpleType的内容只能是限制、列表或联合。因为当您重新定义一个类型时,您必须将其引用为一个基类型,即您要重新定义的类型,因此您将陷入困境;限制是您唯一可以拥有的类型。

为了完整起见,有一种允许开放枚举的技术,它涉及到联合内容的使用,但是,由于您不能接触原始模式,所以在您的情况下,它将无法工作。

还有一个观察:有一个模式和一个枚举,这是一种“无用”;在您的例子中,您唯一可以拥有的值是"foo“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7686046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档