我对使用WSDL和XSD进行XML处理存有疑问。
Ex:以下是XSD中提到的字段
<xs:element minOccurs="0" name="VALDATE">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,4}-?/?\d{1,4}-?/?\d{1,4}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
在这里,我所做的是我希望以匹配上述模式的字符串格式读取日期值。
问题是,如果我传递值12-12-1212,它将通过,如果我传递值1212:12:12,那么它也将通过。我的意思是如果XML处理器不匹配模式的字符串,那么它的含义是什么?
另一个例子是:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
现在,在这个领域,如果我给出超过10个字符,那么它也会在不应该的情况下完成。
不应该根据提到的参数抛出任何错误吗?
提前致谢!
//编辑开始
实际情景是:我预计日期将以不同的格式出现。所以,在wsdl文件中,我提到元素作为日期类型没有任何限制。现在,当请求到来时,如果日期是YYYY-MM-DD格式,系统正在接受,否则系统忽略了价值并且进一步发展。我的意思是,当xml到达Java时,日期字段没有Tag。
为此,我将元素数据类型更改为String(如上所述)。现在,系统正在接受所有的值,并且Java中提供了相同的值,并且我正在为该字段进行模式匹配。系统现在工作正常。
但是为什么系统没有执行XSD验证?有旗帜吗?
另外,我使用wsmport实用程序生成了带有wsdl和xsds的Java文件。
//编辑结束
答案 0 :(得分:0)
您问题的关键是:
但是为什么系统没有执行XSD验证?
答案是,因为你还没有问过它。
要了解请求架构验证的适当位置,我们需要更多地了解您的应用程序的设计。