【问题标题】:How to set a default value for XML Complex Text-Only Elements如何为 XML 复杂纯文本元素设置默认值
【发布时间】:2016-09-06 18:17:19
【问题描述】:

给定 XML 元素

<shoesize country="france">35</shoesize>

我想为其整数简单内容设置一个默认值。

现在,上面的示例取自 w3schools,它带有以下 XSD:

<xs:element name="shoesize" type="shoetype"/>

<xs:complexType name="shoetype">
  <xs:simpleContent>
    <xs:extension base="xs:integer">
      <xs:attribute name="country" type="xs:string" />
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

尽管我知道默认值“只能在元素的内容是简单类型或纯文本时使用”而 shoesize 是一个 complexType,但我还是很纠结相信我无法为 shoesize 设置这样的默认值或找到实际这样做的方法。

在我的试验中,我在 shoesize xs:element、xs:simpleContent 和 xs:extension; 中设置了一个默认值。没有经过验证。

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    我也不知道有一种方法可以在上面引用的仅使用 XML Schema 的情况之外设置默认值(尽管如此,我很高兴被证明是错误的)。

    基本原理是元素类型由其内容和属性组成。在鞋码示例中,从语义的角度来看,如果文档指定国家但没有大小(例如,默认填充为 41适合美国尺寸)。

    但是,当然可以将文档作为整个 XML 消费链的一部分进行更改,即使用 XQuery 或 XSLT,并以编程方式设置默认值。

    【讨论】:

    • 我很高兴看到你也被证明是错误的,但我明白你在一致性问题上的观点。也许规范的设计者更愿意在这方面保持安全,尽管在特定情况下我认为这不会是一个问题。矛盾的是,属性可以具有默认值,因此解决方案是将整数值移动到属性中,如&lt;shoesize country="france" size=35/&gt;&lt;xs:attribute name="size" type="xs:integer" default="41"/&gt;,但这有点破坏了 XML 的逻辑。以编程方式设置它的好技巧,我可能会这样做。
    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多