如何仅在xsd simpleType输入到CICS / DFHWS2LS中强制执行数字 - 不使用模式facet元素?

时间:2015-01-23 20:26:18

标签: xml web-services xsd cics

作为Web服务的提供者,我希望对关联的Web请求中的ID字段的值实施限制,使其达到预期的位数,但根据CICS,我认为我是这样做的。 m为此目的无法在xsd / schema中使用模式facet元素。另外,AFAIK长度构面元素并不支持将字符限制为数字。

我已经为我的同事(一位CICS用户)提供了一个WSDL文件和一个用于Web服务的单独但包含的xsd文件,显然CICS Web服务助手中的DFHWS2LS工具无法识别包含在中的模式构面元素xsd文件。

(我知道以下内容 - 我的同事已经单独确认 - 从我的Web服务代码中添加的日志打印出来 - 虽然SOAP请求的全文暂时不可用,因为我关闭了HTTP转储设置在我的tomcat启动脚本中,以避免泛滥日志文件。)

因此,我的同事生成的Web客户端(可能是COBOL - 不确定)向我的Web服务发送一个请求,其ID字段值是一个包含预期位数的255个字符(默认长度)字符串 - 但是其次是填充空白 - 用于ID字段。

这里的示例包括schema / xsd - 例如ID长度为16 ...

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="snip1" xmlns:tns="snip2" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="myUpdateStatus" type="tns:myUpdateStatus"/>

  <xs:element name="myUpdateStatusResponse" type="tns:myUpdateStatusResponse"/>

  <xs:complexType name="myUpdateStatus">
    <xs:sequence>
      <xs:element name="ssn">
        <xs:simpleType>
          <xs:restriction base='xs:string'>
<!--            DFHWS2LS ignores the following pattern facet-->
            <xs:pattern value='[0-9]{16}'/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="updatedStatus">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:length value="1"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="myUpdateStatusResponse">
    <xs:sequence>
      <xs:element name="return" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

仅供参考,我不是CICS用户;因此我没有供应商支持合同。此外,我还没有询问我的同事的供应商支持是否有解决方法。

1 个答案:

答案 0 :(得分:1)

您可以使用固定长度的字符串(minLengthmaxLength具有相同的值)来缩短字符串。在COBOL中,所有字符串都是固定长度的。

您可以使用decimal totalDigits="16"fractionDigits="0"类型来强制执行仅限数字的规则。 COBOL程序需要使用ARITH(EXTEND)进行编译,DFHWS2LS工具需要一个指示WIDE-COMP3=YES的控制卡。

这不能解决问题;它可以缓解它。字段中仍然允许使用字符+-.

COBOL程序将为此字段定义一个指定USAGE COMP-3(压缩十进制)的字段。

在撰写本文时,CICS(5.2)最新版本的发布documentation表示DFHWS2LS不支持模式方面。