【问题标题】:How to define a default value for an option element using XSD?如何使用 XSD 为选项元素定义默认值?
【发布时间】:2014-02-13 21:39:29
【问题描述】:

我喜欢做的事:我想在schema中指定一个选项标签,例如:

<xsd:element name="my_element" type="my_type" minOccurs="0" maxOccurs="1"/>

如果该元素根本不出现,则该参数应该有一个默认值。当然,我可以在调用 XML 解析器的代码中定义这个默认值。但我认为指定默认值的正确位置是在 *.xsd 架构文件中(因为默认值是架构定义的接口的一部分)。

不幸的是,这似乎并不容易。 “default”属性有不同的效果:“如果没有出现则不提供;如果出现了且为空,则其值为默认值”(来自http://www.w3.org/TR/xmlschema-0/#ref36)。

我发现的其他讨论此问题的链接:

这个问题有解决办法吗?还是该放弃?

【问题讨论】:

标签: xml xsd


【解决方案1】:

简单的元素可以有一个默认值或一个固定值。

当没有指定其他值时,会自动为元素分配默认值。

在以下示例中,默认值为“red”:

<xs:element name="color" type="xs:string" default="red"/>

一个固定值也被自动分配给元素,你不能指定另一个值。

在以下示例中,固定值为“red”:

<xs:element name="color" type="xs:string" fixed="red"/>

【讨论】:

  • 如果我在 XML 中添加一个没有值的元素,它可以有一个默认值。但我的问题:如果元素在 XML 文件中根本不可用,我需要一个默认值。我在配置文件中使用它来实现向后兼容性。
  • @lumbric:您可以在架构中的元素上使用minOccurs=0 属性,您将获得空值或空值,具体取决于解析器。但要获得default 值,元素必须 出现时没有其他值。对于如此大量使用的语言来说,这是非常愚蠢和痛苦的缺点,但我们都必须处理这个问题。底线:在您的应用程序中处理它。
  • @jtyreman:感谢您提供有关fixeddefault 的额外信息。稀有但在适当的情况下很有用。
猜你喜欢
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
相关资源
最近更新 更多