2016-02-24 169 views
0

我有一個我無法控制的架構。它看起來像這樣。說它在一個名爲Config.xsd的文件中。我可以擴展名稱空間爲空的xsd元素嗎?

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns="" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      version="1.0"> 
    <xs:element name="config"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="configSettingOne" type="xs:string" minOccurs="1" maxOccurs="1" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

很酷。我想擴展配置元素並在序列中添加更多的部分。我卡住了。我認爲這與名稱空間在這一個上是空白的事實有關,但是我嘗試的每一個變體都有視覺工作室抱怨某事不對。假設這個文件叫做SpecializedConfig.xsd。我可以控制這個文件。

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="SpecializedConfig" 
    xmlns:mstns="http://tempuri.org/SpecializedConfig.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
> 
    <xs:include schemaLocation="./Config.xsd"></xs:include> 
    <xs:element name="extendedTestConfig"> 
    <xs:complexType> 
     <xs:complexContent> 
     <xs:extension base="config"> 
      <xs:sequence> 
      <xs:element name="configSettingTwo" type="xs:string" minOccurs="1" maxOccurs="1" /> 
      </xs:sequence> 
     </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

我是否在這裏有一些根本的誤解?或者可以這樣做/可以這樣做嗎?謝謝!

+0

如果實際上與名稱空間有關,那麼答案將涉及具有elementFormDefault =「qualified」和/或沒有默認名稱空間的新模式,否則將作出明確的「無名稱空間」命名空間。對不起,我今天沒有機會將其作爲實際答案。 – whybird

回答

4

那麼,一開始「配置」和「配置」是不同的名稱。

接下來的問題是,你不擴展元素,你擴展類型。您已將「config」元素設爲匿名類型,並且無法擴展匿名類型,因爲無法引用它。

因此,通過使用一個名爲類型開始:

<xs:element name="config" type="configType"/> 
<xs:complexType name="configType"> 

,然後你可以擴展它:

<xs:element name="extendedTestConfig" type="extendedConfigType"/> 
<xs:complexType name="extendedConfigType"> 
    <xs:extension base="configType"> 

我不認爲這有什麼與命名空間。

+0

啊!大寫字母的好處。我會繼續研究其餘部分 - 如果最終結果需要修改基本類型,那麼我將不得不使用別的東西 - 該類型不在我的控制範圍之內。謝謝! – brendan

+0

Oooooookay所以現在我重新讀了你說的話的開頭,我明白了。可悲的是,「你不能」是我需要的所有答案!呃,好吧。感謝幫助我理解爲什麼! – brendan

相關問題