0

我正在实现一个 XML Schema 模型,但我不知道如何做一个特定的限制......

A 有一个 xml 元素,该元素有时显示为简单元素,有时显示为复杂元素,如下所示:

<A>
   <Element>hello</Element>
</A>

或者

<A>
   <Element name="dsa"/>
</A>

是否可以断言某些元素在 XML Schema 中既可以作为简单元素也可以作为复杂元素出现?

提前谢谢

4

2 回答 2

1

您可以将元素声明为同时具有简单内容(例如字符串)和属性:

<xs:element name="Element">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

但是您不能声明元素必须具有简单内容或复杂内容(属性),但不能同时具有两者 - 例如这是有效的:

<Element name="dsa">Hello</Element>
于 2013-04-29T14:57:21.080 回答
-1

没有像简单元素或复杂元素这样的东西。您上面的元素表示表明,如果您的<Element>标签具有价值,那么它将显示像

<Element>Hello</Element>

如果它确实有任何价值,那么它会显示自关闭标签,如

<Element/>

但我很好奇name="dsa"属性是如何添加到<Element>元素中的。你能提供更清楚的细节吗?如果您使用 PHP 生成 XML 模式,则 saveXML(,LIBXML_NOEMPTYTAG) 中有第二个参数,而 LIBXML_NOEMPTYTAG 表示始终生成完整元素,无论它是否为空

<Element>Hello</Element>或者<Element></Element>

于 2013-04-29T11:33:04.027 回答