【问题标题】:Chaining Extensions in XML SchemasXML 模式中的链接扩展
【发布时间】:2014-09-26 23:12:07
【问题描述】:

在 XML 模式中可能有一个扩展“链”吗?也就是说,可以定义一种数据类型 C 扩展 B 扩展 A 吗?我有一个看起来像这样的架构:

   <complexType name="ServiceRequest">
      <sequence>
         <element name="validate" type="boolean" minOccurs="0" default="false" />
      </sequence>
   </complexType>

   <complexType name="DataModificationRequest">
      <complexContent>
         <extension base="efms:ServiceRequest">
            <sequence>
               <element name="user-id" type="efms:UserID" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>

    <complexType name="CreateTrackRequest">
        <complexContent>
            <extension base="efms:DataModificationRequest"> 
                <sequence>
                    <element name="segment-number" type="efms:SegmentNumber" />
                    <element name="segment-subnumber" type="efms:SegmentSubnumber" />
                </sequence>
            </extension>
        </complexContent>
    </complexType>

当我在 Oxygen XML 的设计视图中查看这些项目时,DataModificationRequest 正确地显示了来自 ServiceRequestvalidate 元素。但是 CreateTrackRequest 没有显示我希望它从其父 (DataModificationRequest) 和祖父 (ServiceRequest) 继承的任何元素。

OxygenXML 表示模式验证正确,但孙子没有按照我的预期继承元素。是我做错了什么,还是我不允许有这样的扩展链?

【问题讨论】:

    标签: xml xsd schema


    【解决方案1】:

    我想我解开了这个谜。为了论坛的目的,我简化了我的原始帖子。但实际上,第三种数据类型 (CreateTrackRequest) 位于单独的架构文件中。尽管我们使用的是 Oxygen XML 编辑器 14.0 版,但如果父/祖父位于不同的文件中,Oxygen 显然不够智能,无法在设计视图中显示父/祖父元素。

    我可以通过让 Oxygen 生成一个包含所有可选字段的示例 XML 实例文档来证明这一点。该实例正确地包含了来自父级和祖父级数据类型的元素。

    (握紧拳头溜走……)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2023-03-28
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多