2012-03-02 104 views
1

我有2個xsd屬於2個不同的命名空間。是否有可能將複雜類型作爲xsd中來自不同namespance的元素引用並將其添加到子元素中?xsd在不同命名空間中複用類型的複用

Global.xsd - 命名 - 命名空間

<xs:complexType name = "body" mixed="true"> 
<xs:sequence> 
    <xs:choice maxOccurs="unbounded" minOccurs="0"> 
     <xs:element name="fontStyle" type="fontStyle"/> 
     <xs:element name="link" type="link"/> 
     <xs:element name="mark" type="mark"/> 
     <xs:element name="orderedList" type="orderedList"/> 
     <xs:element name="table" type="table"/> 
     <xs:element name="toc" type="toc"/> 
     <xs:element name="unorderedList" type="unorderedList"/> 
    </xs:choice> 
</xs:sequence> 
</xs:complexType> 

test.xsd命名空間 - 測試

<xs:element name="body" type="n:body"/> 
  • 有可能是我補充的子元素???

回答

1

當然,爲什麼不呢。喜歡的東西:

<xsd:schema 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="urn:m" 
    xmlns:m="urn:m" 
    xmlns:n="urn:n" 
    elementFormDefault="qualified"> 

    <xsd:import namespace="urn:n" schemaLocation="n.xsd"/> 

    <xsd:element name="body" type="n:body"/> 

    <xsd:element name="extendedBody" type="m:extendedBody"/> 

    <xsd:complexType name="extendedBody"> 
     <xsd:complexContent> 
      <xsd:extension base="n:body"> 
       <xsd:sequence> 
        <xsd:element name="additionalElement" type="xsd:string"/> 
       </xsd:sequence> 
      </xsd:extension> 
     </xsd:complexContent> 
    </xsd:complexType> 
</xsd:schema> 

然而介意,XML將是這樣的:

<m:extendedBody> 
    <n:toc>...</n:toc> 
    <m:additionalElement>...</m:additionalElement> 
</m:extendedBody> 

(我沒有檢查的解決方案,雖然,這只是給一個想法很可能的混合/選擇擴展韓元。 。「T工作)

1

呀,你只需要擴展類型是這樣的:

<xs:complexType name="moreBodyType"> 
    <xs:complexContent> 
     <xs:extension base="n:body"> 
      <xs:sequence> 
       // put extra child elements here 
            <xs:element name="morestuff" /> 
      </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

小號o現在你可以這樣做:

<xs:element name="morebody" type="n:MoreBodyType" /> 
相關問題