微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这个 XSD 限制是什么意思具有限制的派生类型只是基类型的一个属性

如何解决这个 XSD 限制是什么意思具有限制的派生类型只是基类型的一个属性

一个基本类型“Objectnummering-e”和一个派生类型“ObjectNummering-geoBAG”。 “ObjectNummering-geoBAG”的限制提到了基类型的一个属性

我不清楚这是做什么的。对我来说,这两种类型是相同的。但他们是吗?

<complexType name="ObjectNummering-geoBAG">
   <simpleContent>
      <restriction base="BG:ObjectNummering-e">
         <attribute ref="StUF:novalue"/>
       </restriction>
   </simpleContent>
</complexType>


<complexType name="ObjectNummering-e">
   <simpleContent>
      <extension base="BG:ObjectNummering">
         <attributeGroup ref="StUF:element"/>
      </extension>
   </simpleContent>
</complexType>


<simpleType name="ObjectNummering">
    <restriction base="string">
       <length value="16"/>
    </restriction>
</simpleType>

<attributeGroup name="element">
    <attribute ref="StUF:novalue"/>
    <attribute ref="StUF:exact"/>
 </attributeGroup>

解决方法

与往常一样,回答此类问题的唯一可靠方法是查看 W3C 规范。您的复杂类型是“内容简单的复杂类型”,因此相关部分是:

https://www.w3.org/TR/xmlschema-1/#declare-type,小节 Complex Type Definition with simple content Schema Component

3 如果类型定义由基础 [属性] 的实际值 · 解析为复杂类型定义,则该类型定义的{属性使用},除非选择了替代方案,在这种情况下某些可能不包括该类型定义的 {attribute uses} 成员,即其 {attribute declaration} 的 {name} 和 {target namespace} 与以下之一相同的成员: 3.1 上面第 1 条或第 2 条的集合中使用的属性的{属性声明}的{名称}和{目标命名空间}; 3.2 上面第 1 条的集合中使用的属性的{属性声明}的{名称}和{目标命名空间}是什么,但对于 [属性] 中相关的使用 [属性] 的·实际值·儿童] 被禁止。

简单来说,这意味着复杂的类型限制必须重新声明它想要保留的任何属性——它们不会自动继承。所以派生类型“ObjectNummering-geoBAG”只有1个属性,没有2个。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。