这是我在WSDL的schema部分中指定字段必须是比较运算符
的内容 <xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="<|>|<=|>=|="/>
</xsd:restriction>
</xsd:simpleType>
SoapUI抱怨WSDL的这一部分,我试图将值设置为具有非特殊字符的东西,并且WSDL是有效的。所以我试着将整个长字符串替换为 值= “&GT; gt;” 中并且它有效但值=“&lt; lt;”无效,而值=“&gt;”也无效。我的问题是,为什么WSDL验证需要&gt;被双重逃脱?
主要问题是,如何在模式值内提供有效的小于。
答案 0 :(得分: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="<|>|<=|>=|="/>
</restriction>
</simpleType>
</element>
</schema>
示例XML:
<foo xmlns='http://www.foo.com/'>></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="<" />
<enumeration value=">" />
<enumeration value="<=" />
<enumeration value=">=" />
<enumeration value="=" />
</restriction>
</simpleType>
看看SoapUI是否更喜欢这个。希望这有帮助!
答案 1 :(得分:0)
我认为我解决了自己的问题,为什么要在模式中定义允许值之一
<xsd:restriction base="xsd:string">
<xsd:pattern value="=|&gt;|&gt;=|&lt;|&lt;=|&lt;&gt;|[Ii][Nn]|[Nn][Oo][Tt] [Ii][Nn]|[Ll][Ii][Kk][Ee]"/>
</xsd:restriction>