我正在实现XML Schema模型,但我不知道如何进行特定的限制......
有一个xml元素有时会显示为一个简单的元素,有时它会显示为一个复杂的元素,如下所示:
<A>
<Element>hello</Element>
</A>
或者
<A>
<Element name="dsa"/>
</A>
是否可以断言某些元素在XML Schema中既可以作为简单元素又可以作为复杂元素出现?
提前谢谢
答案 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>