1

これは、フィールドが比較演算子でなければならないことを指定するために、WSDL のスキーマ セクションにあるものです。

                <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:pattern value="&lt;|&gt;|&lt;=|&gt;=|="/>
                        </xsd:restriction>
                </xsd:simpleType>

SoapUI は WSDL のこの部分について不平を言います。特殊文字以外の値に値を設定しようとしましたが、WSDL は有効です。そのため、その長い文字列全体を value=">gt;" に置き換えようとしました それは有効ですが、value="<lt;" value=">" も無効です。私の質問は、なぜ WSDL の検証で > 二重にエスケープする必要があるのですか?

主な問題は、パターン値内で有効な小なり側を提供する方法です。

4

2 に答える 2

0

私は自分の問題を解決したと思います。なぜ、許容値の1つが次のようにスキーマで定義されるのでしょうか。

                        <xsd:restriction base="xsd:string">
                            <xsd:pattern value="=|&amp;gt;|&amp;gt;=|&amp;lt;|&amp;lt;=|&amp;lt;&amp;gt;|[Ii][Nn]|[Nn][Oo][Tt] [Ii][Nn]|[Ll][Ii][Kk][Ee]"/>
                        </xsd:restriction>
于 2010-05-26T15:49:01.000 に答える
0

これは、実際には SoapUI のバグである可能性があります。次のスキーマと XML を Apache Xalan (Java) で使用してみました。

スキーマ:

<schema xmlns="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.foo.com/"
  xmlns:tns="http://www.foo.com/"
  elementFormDefault="qualified">

  <element name="foo">
    <simpleType>
      <restriction base="string">
        <pattern value="&lt;|&gt;|&lt;=|&gt;=|="/>
      </restriction>
    </simpleType>
  </element>

</schema>

サンプル XML:

<foo xmlns='http://www.foo.com/'>&gt;</foo>

そしてそれはうまく検証されます。代わりにこれを試すと:

<foo xmlns='http://www.foo.com/'>abc</foo>

予想どおり、次のエラーが表示されます。 cvc-pattern-valid: Value 'abc' is not facet-valid with respect to pattern '<|>|<=|>=|=' for type '#AnonType_foo'.

代わりに列挙型を使用することをお勧めします。例えば:

<simpleType>
  <restriction base="string">
    <enumeration value="&lt;" />
    <enumeration value="&gt;" />
    <enumeration value="&lt;=" />
    <enumeration value="&gt;=" />
    <enumeration value="=" />
  </restriction>
</simpleType>

そして、SoapUI がこれを気に入るかどうかを確認してください。お役に立てれば!

于 2010-05-25T22:49:12.517 に答える