我正在实现一个 XML Schema 模型,但我不知道如何做一个特定的限制......
A 有一个 xml 元素,该元素有时显示为简单元素,有时显示为复杂元素,如下所示:
<A>
<Element>hello</Element>
</A>
或者
<A>
<Element name="dsa"/>
</A>
是否可以断言某些元素在 XML Schema 中既可以作为简单元素也可以作为复杂元素出现?
提前谢谢
您可以将元素声明为同时具有简单内容(例如字符串)和属性:
<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>
没有像简单元素或复杂元素这样的东西。您上面的元素表示表明,如果您的<Element>
标签具有价值,那么它将显示像
<Element>Hello</Element>
如果它确实有任何价值,那么它会显示自关闭标签,如
<Element/>
但我很好奇name="dsa"
属性是如何添加到<Element>
元素中的。你能提供更清楚的细节吗?如果您使用 PHP 生成 XML 模式,则 saveXML(,LIBXML_NOEMPTYTAG) 中有第二个参数,而 LIBXML_NOEMPTYTAG 表示始终生成完整元素,无论它是否为空
<Element>Hello</Element>
或者<Element></Element>