0

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でどのように記述すればよいですか?

4

1 に答える 1