gpt4 book ai didi

xml - 如何使用 XML Schema 扩展属性?

转载 作者:行者123 更新时间:2023-12-05 00:13:00 25 4
gpt4 key购买 nike

我在 XML 上有:

<Devices>
<Device name="Phone" number="123456789"/>
<Device name="Computer" ip="192.168.0.1"/>
</Devices>

我想为此设置一个架构,其中我有“设备”并且我可以声明一个设备,但是如果设备的名称为“电话”,则必须根据需要声明一个数字,但是如果设备是 name="computer", 那么,只有 'computer' 才需要 ip

有没有办法做到这一点,可能吗?

最佳答案

这就是 XML 模式

<xs:schema elementFormDefault="qualified" version="1.0"
targetNamespace="stackoverflow" xmlns:tns="stackoverflow"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="Devices" type="tns:deviceListType" />

<xs:complexType name="deviceListType">
<xs:sequence>
<xs:element name="Device" type="tns:deviceType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="deviceType">

</xs:complexType>

<xs:complexType name="computerType">
<xs:complexContent>
<xs:extension base="tns:deviceType">
<xs:attribute name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Computer" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ip" />
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="phoneType">
<xs:complexContent>
<xs:extension base="tns:deviceType">
<xs:attribute name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Phone" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="number" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

这将是一个示例 XML 文档

<sf:Devices xmlns:sf="stackoverflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="stackoverflow test.xsd">
<sf:Device xsi:type="sf:computerType" name="Computer" ip="1"/>
<sf:Device xsi:type="sf:phoneType" name="Phone" number="2"/>
</sf:Devices>

如果原始 XSD 样本令人困惑,我们深表歉意。

关于xml - 如何使用 XML Schema 扩展属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458915/

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