首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML <xs:redefine>有问题

XML <xs:redefine>有问题
EN

Stack Overflow用户
提问于 2015-04-10 05:56:24
回答 1查看 181关注 0票数 0

我想从现有的架构文件中重新定义一些复杂的类型。当我使用Altova时,XMLSpy报告了一个错误。它显示:

重新定义类型定义'Address‘必须是对其本身的扩展或限制。错误位置: xs:schema / xs:redefine / xs:complexType / xs:complexContent / xs:extension / @base Details src-refine.5:重新定义类型定义'Address‘必须是自身的扩展或限制。

源代码中已经包含了一个<xs:extension>部分。

代码语言:javascript
复制
<xs:redefine schemaLocation="reusable.xsd">
  <xs:complexType name="Address">
    <xs:complexContent>
      <xs:extension  base="Address">
        <xs:sequence>
          <xs:element name="PostCode"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:redefine>

我不知道这是怎么回事。这是我的模式文件的源代码。

Source.xsd

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="we:love:xml:schemas:but:we:hate:namespaces">
  <xs:redefine schemaLocation="reusable.xsd">
    <xs:complexType name="Address">
      <xs:complexContent>
        <xs:extension base="Address">
          <xs:sequence>
            <xs:element name="PostCode" />
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:redefine>
  <xs:element name="resume">
    <xs:annotation>
      <xs:documentation>Comment describing your root element</xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>

提前谢谢。

reusable.xsd

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xf="we:love:xml:schemas:but:we:hate:namespaces" targetNamespace="we:love:xml:schemas:but:we:hate:namespaces" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:complexType name="Address">
        <xs:annotation>
            <xs:documentation>This is a type meant to represent a generic address. It consists of an
                unlimited number of street addresses, a city, state or province, a postal code, and
                country. It is suggested that if need be, on a transform use conditional processing
                based on the Country element to get country specific layouts of the
            addresses.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="StreetAddress" type="xs:string" maxOccurs="unbounded"/>
            <xs:element name="City"/>
            <xs:element name="StateOrProvince" type="xs:string" minOccurs="0"/>
            <xs:element name="PostalCode" type="xs:string"/>
            <xs:element name="Country" type="xf:CountryType"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
EN

回答 1

Stack Overflow用户

发布于 2015-04-10 08:46:35

您对命名空间URI的选择说明了一切。您不想扩展"Address",而是要扩展" wlxsbwhns :Address",其中前缀wlxsbwhns绑定到目标命名空间URI。

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

https://stackoverflow.com/questions/29554336

复制
相关文章

相似问题

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