0
我正在將自己投入到XSD中,因爲我試圖描述用於製作RPC的工作中的(自定義)XML協議。XSD繼承,擴展或其他?
一個簡單的請求/響應對看起來像這樣:
<command type="request" lineid="500477">
<request name="ping">
<node id="503456" device="meter"/>
</request>
</command>
<command type="response" lineid="500477">
<response name="ping">
<result>true</result>
</response>
</command>
上面是下調例子,此外,所述請求節點可以包含參數元素的列表並把結果節點可以包含更高級的其他請求類型的數據。
我想用XSD來描述上面,但我似乎無法弄清楚如何描述請求/響應的動態性質。
我試圖擴展,繼承和嵌套xs:complexType,但似乎沒有什麼是「正確的方式」。
我當前的嘗試:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="request">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="command" mixed="true">
<xs:sequence>
<xs:element name="request" type="request"></xs:element>
</xs:sequence>
<xs:attribute name="type" type="commandtype" use="required"/>
<xs:attribute name="lineid" type="xs:string"/>
</xs:complexType>
<xs:simpleType name="commandtype">
<xs:restriction base="xs:string">
<xs:enumeration value="request"/>
<xs:enumeration value="response"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="command" type="command" />
</xs:schema>
即使在這個階段,我不知道如何讓這兩個請求和通用命令節點內響應元素。
我應該如何用XSD描述上述內容?