Как создать допустимую схему в WSDL с ограничением на <| <= |> |> = - PullRequest
1 голос
/ 26 мая 2010

Это то, что у меня есть в моем разделе схемы моего WSDL, чтобы указать поле, которое должно быть оператором сравнения

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

SoapUI жалуется на эту часть WSDL, я пытался установить значение на что-то с не специальными символами, и WSDL действителен. Поэтому я попытался заменить всю эту длинную строку значение = "> GT;" и это действительно, но значение = "" также недопустимо. У меня такой вопрос: почему для проверки WSDL> требуется двойной выход?

Основной вопрос заключается в том, как обеспечить допустимое значение меньше стороны в пределах значения шаблона.

Ответы [ 2 ]

0 голосов
/ 26 мая 2010

Я думаю, что решил свою собственную проблему, почему вы определяете в своей схеме, что одно из допустимых значений

                        <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>
0 голосов
/ 26 мая 2010

Это может быть ошибка в 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'.

Я рекомендую вместо этого использовать enum. Например:

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

И посмотрим, понравится ли это SoapUI лучше. Надеюсь, это поможет!

...