XML Schema简单和复杂元素

时间:2013-04-29 11:00:25

标签: xml xsd

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

有一个xml元素有时会显示为一个简单的元素,有时它会显示为一个复杂的元素,如下所示:

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

或者

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

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

提前谢谢

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:-1)

没有像简单元素或复杂元素那样的东西。您的上述元素表示显示,如果您的<Element>标记具有值,则它将显示类似

的值

<Element>Hello</Element>

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

<Element/>

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

<Element>Hello</Element><Element></Element>