2012-03-16 41 views
6

Tôi đang làm việc trên một dịch vụ web SOAP có nhiều vùng nhập bằng cách sử dụng các hạn chế liệt kê.Hạn chế liệt kê WSDL với cặp khóa/giá trị

Các bảng liệt kê này giống như cài đặt lựa chọn/tùy chọn HTML; Tôi mong đợi một giá trị nhất định được trả về nhưng nhãn của giá trị đó phải được hiển thị bằng cách sử dụng WSDL.

Ví dụ: khách hàng muốn thêm chính sách bảo hiểm liên quan đến nhà của họ và do đó cần phải chỉ định loại tòa nhà có liên quan.

<xsd:restriction base="xsd:string"> 
    <xsd:enumeration value="00001" /> 
    <xsd:enumeration value="00002" /> 
    <xsd:enumeration value="00003" /> 
</xsd:restriction> 

Tuy nhiên, khách hàng chưa hiểu giá trị 1, 2 và 3 này là gì. Vì vậy, một cái gì đó như thế này:

<xsd:restriction base="xsd:string"> 
    <xsd:enumeration value="00001" label="Brick and mortar" /> 
    <xsd:enumeration value="00002" label="Straw" /> 
    <xsd:enumeration value="00003" label="Aircastle" /> 
</xsd:restriction> 

sẽ là tuyệt vời cho khách hàng được sử dụng để hiển thị các nhãn này cho người tiêu dùng.

Có chú thích/cú pháp WSDL chuẩn nào cho cấu trúc này không?

Trả lời

6

Có chú thích/cú pháp WSDL chuẩn nào cho cấu trúc này không?

Tôi không sợ. Lược đồ XML enumeration được sử dụng để hạn chế một giá trị nằm trong một tập hợp các giá trị có thể được chỉ định. Khi khách hàng gửi cho bạn yêu cầu, phần tử có loại giới hạn sẽ chỉ được phép có (trong trường hợp của bạn) giá trị 00001, 00002 hoặc 00003 hoặc nó sẽ không hợp lệ.

Hạn chế chỉ chỉ định giá trị, bạn không thể thêm nhãn. Bạn có thể thêm tốt nhất một số <annotation> nhưng đó chỉ là tài liệu. Trong giao diện người dùng của khách hàng, mỗi khách hàng có thể nói rằng 00001 thực sự là "Gạch và vữa" và 00002 là "Rơm", v.v.

Nếu bạn không muốn làm điều đó, và thay vào đó muốn cũng trở về nhãn, sau đó bạn cần một đối tượng hơi phức tạp hơn, có lẽ một cái gì đó như thế này:

<option> 
    <key>00001</key> 
    <label>Brick and mortar</label> 
</option> 

bạn cung cấp một nhãn và bạn hạn chế quan trọng với một sơ đồ như:

<xsd:simpleType name="ValuesType"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:enumeration value="00001" /> 
    <xsd:enumeration value="00002" /> 
    <xsd:enumeration value="00003" /> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:complexType name="OptionType"> 
    <xsd:sequence> 
     <xsd:element name="key" type="ValuesType" /> 
     <xsd:element name="label" type="xsd:string" /> 
    </xsd:sequence> 
</xsd:complexType> 

bạn có thể trở lại một danh sách các tùy chọn cho khách hàng và họ có thể trình bày nó trong giao diện với key làm giá trị và label làm văn bản tùy chọn trong các đầu vào <select>, trong khi theo yêu cầu, bạn sẽ lấy lại giá trị đã chọn (tức là đã chọn key).

+0

tôi đã quản lý để làm cho nó hoạt động bằng cách thêm "tns:" trước "ValuesTypes" như BMaximus

Các vấn đề liên quan