gpt4 book ai didi

xsd - 为什么扩展只能放在 simpleContent 和 complexContent 容器中?

转载 作者:行者123 更新时间:2023-12-04 17:04:15 24 4
gpt4 key购买 nike

我很难理解在 XSD 中定义类型扩展和限制的格式的一些细微差别。根据W3Schools reference :

  • simpleContent将“对纯文本复杂类型或简单类型的扩展或限制定义为内容并且不包含任何元素”
  • complexContent定义“仅包含混合内容或元素的复杂类型的扩展或限制

  • 我不清楚的是为什么 XSD 需要在这些容器之一中包含扩展和限制,此外,为什么 只有扩展和限制需要它。如果所有“内容”都必须在容器中定义,那对我来说更有意义,但事实并非如此 - 对于基本类型,内容( sequence 等)被定义为 complexType容器。

    this example ,对我来说似乎过于冗长:

    <xs:complexType name="fullpersoninfo">
    <xs:complexContent>
    <xs:extension base="personinfo">
    <xs:sequence>
    <xs:element name="address" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>
    <xs:element name="country" type="xs:string"/>
    </xs:sequence>
    </xs:extension>
    </xs:complexContent>
    </xs:complexType>

    为什么不能这样写呢?

    <xs:complexType name="fullpersoninfo">
    <xs:extension base="personinfo">
    <xs:sequence>
    <xs:element name="address" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>
    <xs:element name="country" type="xs:string"/>
    </xs:sequence>
    </xs:extension>
    </xs:complexType>

    或者甚至像这样?

    <xs:complexType name="fullpersoninfo" extends="personinfo">
    <xs:sequence>
    <xs:element name="address" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>
    <xs:element name="country" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>

    我假设一定有某种原因将它定义为它的方式,但我找不到任何关于原因的线索。

    最佳答案

    我认为您不会为复杂类型的 XML 语法找到任何有用的设计原理。可以说,设计 XML 语法的人通过您提到的元素设法解决了一些技术难题,并且没有明显更好的语法在工作组中取得共识。您可能想知道 simpleContent 和 complexContent 解决了哪些技术难题,这是一个合理的问题,但我怀疑有人愿意深入研究 XSD 的设计记录,以便回答它。

    一个简单的观察:扩展和限制的合法子级取决于父级是 simpleContent 还是 complexContent。这是使用 simpleContent 和 complexContent 类型的本地声明完成的,没有它们是不可能的——至少,如果没有对 XML 语法进行非常彻底的重新设计,就不可能。

    关于xsd - 为什么扩展只能放在 simpleContent 和 complexContent 容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16819420/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com