2016-05-09 5 views
0

私の最初のxsd:呼び出し要素

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="my.com/V1.0.xsd" 
    xmlns:abc="my.com/V1.0.xsd" 
    elementFormDefault="qualified"> 

私の新しいXSD:私は私の質問は愚かに聞こえるかもしれないが、それが誰かならば素晴らしいことだので、XSDする新たなんだ

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="my.com/V2.0.xsd" 
      xmlns:abc="my.com/V2.0.xsd" 
      elementFormDefault="qualified"> 
    <xs:import 
namespace="my.com/V1.0.xsd" schemaLocation="V1.0.xsd"/> 

私を助けることができます。

V2.0.xsdでV1.0.xsdのcomplexTypes要素を呼び出すにはどうしたらよいですか?私はすべての要素が今abc名前空間の下に集まっていますが、残念ながら、私は希望通りには機能しませんでした。

ありがとうございます。

答えて

1

v2スキーマのv1要素をインポートするには、v2スキーマのv1要素またはcomplexTypeへの参照を修飾する必要があります。

例:そのようv1のスキーマを考える :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="my.com/V1.0.xsd" 
xmlns:v1="my.com/V1.0.xsd" 
elementFormDefault="qualified"> 
    <xs:complexType name="typeV1"> 
    <xs:sequence> 
     <xs:element name="fromV1"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

v2のスキーマ呼び出しのような複合型:結果のXMLで

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="my.com/V2.0.xsd" 
    xmlns:v2="my.com/V2.0.xsd" 
    xmlns:v1="my.com/V1.0.xsd" 
    elementFormDefault="qualified"> 
    <xs:import namespace="my.com/V1.0.xsd" schemaLocation="v1.xsd"/> 
    <xs:element name="fromV2" type="v1:typeV1"/> 
</xs:schema> 

、両方の名前空間を宣言する必要があり、例えばそのように:あなたが唯一の名前空間を使用する場合は

<?xml version="1.0" encoding="UTF-8"?> 
<v2:fromV2 xmlns:v2='my.com/V2.0.xsd'> 
    <v1:fromV1 xmlns:v1='my.com/V1.0.xsd'/> 
</v2:fromV2> 

は、あなたがのtargetNamespaceとの使用のために両方のスキーマに同じURIを配置する必要がありますインポートするのではなく、含まれています。

関連する問題