XSD中的限制无效

时间:2015-04-09 07:37:17

标签: xml xsd xml-parsing wsdl

我对使用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文件。

//编辑结束

1 个答案:

答案 0 :(得分:0)

您问题的关键是:

  

但是为什么系统没有执行XSD验证?

答案是,因为你还没有问过它。

要了解请求架构验证的适当位置,我们需要更多地了解您的应用程序的设计。