2016-02-24 125 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

相关问题