2012-03-02 5 views
1

2つの異なる名前空間に属する2つのxsdを持っています。複雑な型を別の名前空間のxsdの要素として参照し、それに子要素を追加することは可能でしょうか?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> 

(私も解決策をチェックしていない、これはアイデアを与えることだけである混合/選択肢の拡張子が勝ったことは極めてありそう。 「トン作業)

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> 

Sをo今できること:

<xs:element name="morebody" type="n:MoreBodyType" /> 
関連する問題