我有兩個定義不同文檔的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
的ElementA
爲B.xsd
,只是以ElementA
爲根(即ElementB
是某種容器文檔)。
那麼,我怎樣才能允許ElementA
在ElementB
之內,而完全建立在已經存在的XSD之上呢?
謝謝,看起來相當不錯,我會嘗試。有一個問題,'ea:'命名空間前綴來自哪裏?或者是類型定義在'A.xsd'中獲得的'name'? – poke
只需在代碼窗口上滾動到右側 - 它被引用爲xs:schema元素中的最後一個屬性:'xmlns:ea =「http://example.com/namespace/for/ElementA」'。你可以給它任何你想要的前綴,就像你可以爲默認的目標命名空間一樣(儘管每個人都會按照慣例選擇'xs'或'xsd')。 – daveaglick
哦,沒有打擾到滾動那麼遠,錯過了,對不起xD也感謝您的幫助,我會盡快嘗試,併發布我的結果:) – poke