如何使用XSD为选项元素定义默认值?
问题描述:
我想做什么:我想在架构中指定的选项标签,例如:如何使用XSD为选项元素定义默认值?
<xsd:element name="my_element" type="my_type" minOccurs="0" maxOccurs="1"/>
如果元素完全不发生,应该有这个参数的默认值。当然,我可以在调用XML解析器的代码中定义这个默认值。但是我认为指定默认值的正确位置应该在* .xsd模式文件中(因为默认值是模式定义的接口的一部分)。
不幸的是,这似乎并不容易。 “default”属性具有不同的效果:“如果它没有出现,则不提供;如果它出现并且是空的,则它的值是默认值”(从http://www.w3.org/TR/xmlschema-0/#ref36开始)。
其他链接我发现在讨论这个问题:
- http://codesynthesis.com/pipermail/xsd-users/2006-February/000209.html
- http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#A
是否有一个解决这个问题?或者我应该放弃?
答
简单元素可能具有默认值或指定的固定值。
当没有指定其他值时,默认值会自动分配给元素。
在以下例子中的默认值是“红”:
<xs:element name="color" type="xs:string" default="red"/>
的固定值也被自动分配给元件,并且不能指定另一值。
在下面的例子中,固定值“红色”:
<xs:element name="color" type="xs:string" fixed="red"/>
+2
如果我在XML中添加一个没有值的元素,它可以有一个默认值。但我的问题:如果元素在XML文件中根本不可用,那么我需要一个默认值。我在配置文件中使用它来向后兼容。 – lumbric
的可能的复制[XSD:一个缺失要素的默认值](https://stackoverflow.com/questions/18694988/xsd-缺省值的缺失元素) – binki