假设我有这样的XML:
<foo ...>
<bar a="s1" b="s2" />
<bar a="s3" />
</foo>
我想在XSD中定义属性b
的默认值应该是属性a
的值。这可能吗?
提前致谢!
答案 0 :(得分:3)
简答:不。
根据“XML Schema Part 1:Structures Second Edition”,“3.2.1属性声明模式组件”一节中的答案:“ default 指定该属性无条件地出现在·模式后验证信息集·,当属性实际不存在时使用提供的值“
长而实用的答案:关键是“后架构验证信息集”。那么问问自己,您需要什么样的架构文档?
use="required"
来获取属性b
XmlSerializer
),那么你必须明确地添加一些后处理,以满足这种“后架构 - validation-infoset“term - 您应该检测b
的值是否未设置并自行设置 - 这是您的业务要求 b
视为具有与a
相同的值)添加文档。 XML Schema没有这样的概念。使用外推 - 这与“b
的值将是当前美元/欧元比率”的要求相同“ - 它只是计算值