私は異なる文書を定義する2つのXSDを持っています。 A.xsd
は、要素としてElementA
をルートとして定義し、いくつかの複雑なルールを定義します。今度はB.xsd
はElementB
という要素を定義しています。その要素の間にはElementA
を使用することになっています。例えば他の名前空間の要素を持つXSD
私はこのようなElementB
一見のためのXMLファイルたい:
<?xml version="1.0" encoding="utf-8"?>
<ElementB xmlns="http://example.com/namespace/for/ElementB">
<foo>Bla</foo>
<bar>Blub</bar>
<ElementA xmlns="http://example.com/namespace/for/ElementA">
<!-- ... -->
</ElementA>
</ElementB>
はその後B.xsd
は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://example.com/namespace/for/ElementB" targetNamespace="http://example.com/namespace/for/ElementB" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ElementB">
<xs:complexType>
<xs:sequence>
<xs:element name="foo" type="xs:string" />
<xs:element name="bar" type="xs:string" />
<!-- And now I want to include ElementA somehow -->
<xs:element name="ElementA" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
事は、私が本当にクローンにしたくないということですElementA
の指定はB.xsd
になります。ドキュメントには、ちょうどElementA
がルートとして存在します(つまり、ElementB
は何らかのコンテナドキュメントです)。
ElementA
をElementB
にするには、すでに存在するXSDの上に完全に構築するにはどうすればよいですか?
ありがとう、それはかなり良いように見える、私はそれを試してみましょう。しかし、1つの質問ですが、 'ea:'名前空間接頭辞はどこから来ますか?あるいは、型定義が 'A.xsd'で得られる' name'ですか? – poke
コードウィンドウの右にスクロールするだけで、xs:schema要素の最後の属性として参照されます: 'xmlns:ea =" http://example.com/namespace/for/ElementA "'。デフォルトのターゲット名前空間の場合と同じように、任意の接頭辞を与えることができます(ただし、誰もが通常は 'xs'または' xsd'を選択します)。 – daveaglick
ああ、それまでスクロールするのは面倒ではなかったし、申し訳ありませんxDもう助けてくれて、できるだけ早くこれを試してみて、私の結果を投稿します:) – poke