2010-06-07 40 views
4

配置部分问题,我刚才已经推出自定义配置部分,创建了一个附带的模式文档智能感知并把它添加到Web.config的架构特性为每Michael Stum's answer另一个类似的问题。智能感知与自定义命名空间

不幸的是,可能是由于我用有限的知识手动创建了XSD,因此Intellisense依赖于指向我的XSD文件的名称空间的xmlns属性出现在自定义配置元素中。但是,在运行该项目时,我得到一个无法识别的属性'xmlns'。请注意,属性名称区分大小写错误。

我可能只是修改我的XSD文件来定义该元素的xmlns属性,但我想知道这是否只是一个更大的问题的bandaid修复。我必须承认,我对XML命名空间没有很好的理解,所以这可能是一个机会,可以让我直接解决一些问题。

这里是我的XSD文件的根xs:schema元素的属性:

<xs:schema id="awesomeConfig" 
      targetNamespace="http://awesome.com/schemas" 
      xmlns="http://awesome.com/schemas" 
      elementFormDefault="qualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    ... 
</xs:schema> 

并创造在Web.config文件中的元素,Visual Studio 2008中自动附加:

<awesomeConfig xmlns="http://awesome.com/schemas"></awesomeConfig> 

所以有我完全误解了xs:schema属性的含义,或者是正确的解决方案,看起来很简单?

回答

4

你的架构将需要省略targetNamespace属性。实际上,这会将架构内容放入默认名称空间。

,由于.NET配置系统绝不允许的元素是在一个命名空间是很必要的。

+0

我是否正确地说这样做的后果是我必须避免命名冲突?如果是这样,我将如何实现添加/删除/清除的标准收集元素? – 2010-06-07 02:44:22

+0

如果使用相同的语法,那些标准元素不是命名冲突。此外,架构将相对于父元素。如果您将模式的根作为您的配置节名称,那么只要您的模式严格等级化,就不会有名称冲突。制作父代的add/remove/clear元素子元素,而不是稍后引用的全局元素。 – 2010-06-07 02:47:15

+0

非常感谢那些信息。 – 2010-06-07 04:45:54

相关问题