5

我刚刚推出了一个自定义配置部分,为 Intellisense 创建了一个随附的架构文档,并根据Michael Stum对另一个类似问题的回答将其添加到 Web.config 的 Schemas 属性中。

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

我可能只是修改我的 XSD 文件来定义该xmlns元素的属性,但是我想知道这是否只是对更大问题的临时修复。我必须承认我对 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

1 回答 1

5

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

这是必要的,因为 .NET 配置系统从未允许元素位于命名空间中。

于 2010-06-07T00:06:00.590 回答