XSD 中的限制不起作用
Restrictions in XSD not working
我对使用 WSDL 和 XSDs 进行 XML 处理有疑问。
例如:下面是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 时,日期字段没有标签。
为此,我将元素数据类型更改为字符串(如上所述)。现在,系统正在接受所有值,并且在 Java 中可用,并且我正在为该字段进行模式匹配。系统现在运行正常。
但是为什么系统不执行 XSD 验证?有旗帜吗?
此外,我使用 JDK 的 wsimport 实用程序生成了带有 wsdl 和 xsds 的 Java 文件。
//编辑结束
你的问题的关键是:
But why system is not performing XSD validations?
答案是,因为你没有要求它。
要了解在何处请求模式验证是合适的,我们需要更多地了解您的应用程序的设计。
我对使用 WSDL 和 XSDs 进行 XML 处理有疑问。
例如:下面是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 时,日期字段没有标签。
为此,我将元素数据类型更改为字符串(如上所述)。现在,系统正在接受所有值,并且在 Java 中可用,并且我正在为该字段进行模式匹配。系统现在运行正常。
但是为什么系统不执行 XSD 验证?有旗帜吗?
此外,我使用 JDK 的 wsimport 实用程序生成了带有 wsdl 和 xsds 的 Java 文件。
//编辑结束
你的问题的关键是:
But why system is not performing XSD validations?
答案是,因为你没有要求它。
要了解在何处请求模式验证是合适的,我们需要更多地了解您的应用程序的设计。