2

XSD for XML-RPCメソッド呼び出しを持っている、または編集する方法を知っている人はいますか?

私はこれを見つけました:MSDNXmlRpcスキーマ

ただし、有効なXML-RPCケースは許可されません。オフに見えるビットは次のとおりです。

<xsd:complexType name="ValueType" mixed="true">
    <xsd:choice>
        <xsd:element name="i4"            type="xsd:int" />
        <xsd:element name="int"           type="xsd:int" />
        <xsd:element name="string"        type="ASCIIString" />
        <xsd:element name="double"        type="xsd:decimal" />
        <xsd:element name="Base64"        type="xsd:base64Binary" />
        <xsd:element name="boolean"       type="NumericBoolean" />
        <xsd:element name="dateTime.iso8601" type="xsd:dateTime" />
        <xsd:element name="array"         type="ArrayType" />
        <xsd:element name="struct"        type="StructType" />
    </xsd:choice>
</xsd:complexType>

XML-RPC仕様によると、以下が有効です。

...
<value>example text</value>
....

type要素が指定されていない場合、要素内のテキスト<value>はデフォルトで文字列になります。ただし、上記のxsdはそれを検証しません。

私はそれを次のように変更してみました:

<xsd:complexType mixed="true" name="ValueType">
    <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:element name="i4"            type="xsd:int" />
        <xsd:element name="int"           type="xsd:int" />
        <xsd:element name="string"        type="ASCIIString" />
        <xsd:element name="double"        type="xsd:decimal" />
        <xsd:element name="Base64"        type="xsd:base64Binary" />
        <xsd:element name="boolean"       type="NumericBoolean" />
        <xsd:element name="dateTime.iso8601" type="xsd:dateTime" />
        <xsd:element name="array"         type="ArrayType" />
        <xsd:element name="struct"        type="StructType" />
    </xsd:choice>
</xsd:complexType>

しかし、それは可能です:<value>testtext<string>with more text</string></value>これは仕様によれば有効ではないはずです。

Value要素にデータまたは要素のいずれかを含めることができるようにするのに問題がありますが、2つの要素の混合はできません。

誰かが上記を修正する方法を知っているか、彼らが提供できる動作するxsdを持っているなら、誰でも本当に感謝するでしょう。

4

1 に答える 1

1

XSD 1.0を使用して、必要なものを説明することはできません。概念的には、必要なのはコンテンツモデルの「結合」です。テキストのみと要素のみです。

Schematronの追加やXSD1.1(サポートが不十分)への移行など、他の手段を採用できる場合は、追加情報で質問を更新してください。

于 2013-03-25T17:13:52.587 に答える