Ald*_*oni 5 c# wcf xsd datacontract messagecontract
情况:我需要构建一个基于XSD的Web服务.
当XSD说:时,可以创建一个WCF Web服务:
elementFormDefault="qualified" attributeFormDefault="qualified"
Run Code Online (Sandbox Code Playgroud)
要么
elementFormDefault="unqualified" attributeFormDefault="unqualified"
Run Code Online (Sandbox Code Playgroud)
我在Stackoverflow或Google上找不到任何明确的答案.这些可能之一或两者兼而有之吗?
如果可能,它是否可以与MessageContracts和DataContracts组合?
基于Microsoft它看起来不可能:
attributeFormDefault被忽略.
elementFormDefault必须是合格的.所有元素都必须符合DataContractSerializer支持的模式.这可以通过将xs:schema/@ elementFormDefault设置为"qualified"或通过在每个单独的元素声明上将xs:element/@ form设置为"qualified"来实现.
我也发现这不喜欢它:
通常,由于单个文档中混合使用全局和局部元素可能会产生混淆和奇怪的语法,以及默认命名空间可能出现的问题,因此建议坚持使用elementFormDefault ="qualified".它可能更冗长,但是哪个命名空间/模式拥有给定元素也更清楚.如果XML文档作者想要减少前缀的数量,他们总是可以依赖"默认命名空间".此外,由于使用默认命名空间时可能存在冲突,因此attributeFormDefault应该是不合格的.