情况:我需要构建一个基于 XSD 的 web 服务。
当 XSD 说:
elementFormDefault="qualified" attributeFormDefault="qualified"
或者
elementFormDefault="unqualified" attributeFormDefault="unqualified"
我在 Stackoverflow 或 Google 上找不到任何明确的答案。是其中一种可能还是两者兼而有之?
如果可能,是否可以与 MessageContracts 和 DataContracts 结合使用?
基于Microsoft看起来不可能:
attributeFormDefault 忽略。
elementFormDefault 必须是合格的。所有元素都必须符合 DataContractSerializer 支持的架构。这可以通过将 xs:schema/@elementFormDefault 设置为“qualified”或通过在每个单独的元素声明上将 xs:element/@form 设置为“qualified”来实现。
我还发现这个不喜欢它:
通常,由于单个文档中混合使用全局和本地元素可能会产生潜在的混淆和奇怪的语法,以及默认命名空间可能出现的问题,建议坚持使用 elementFormDefault=”qualified”。它可能更冗长,但哪个命名空间/模式拥有给定元素也更清楚。如果 XML 文档作者想要减少前缀的数量,他们总是可以依赖“默认命名空间”。此外,由于使用默认命名空间时可能发生冲突,attributeFormDefault 应该是不合格的。