
Chương 3. Web Feature Service (WFS)
44
<simpleType>
<restriction base="string">
<maxLength value="10"/>
</restriction>
</simpleType>
</element>
<element name="City" nillable="true">
<simpleType>
<restriction base="string">
<maxLength value="30"/>
</restriction>
</simpleType>
</element>
<element name="Province" nillable="true">
<simpleType>
<restriction base="string">
<maxLength value="30"/>
</restriction>
</simpleType>
</element>
<element name="PostalCode" nillable="true">
<simpleType>
<restriction base="string">
<maxLength value="15"/>
</restriction>
</simpleType>
</element>
<element name="Country" nillable="true">
<simpleType>
<restriction base="string">
<maxLength value="30"/>
</restriction>

Chương 3. Web Feature Service (WFS)
45
</simpleType>
</element>
</sequence>
</complexType>
</schema>
Chú ý là thuộc tính Address là 1 thuộc tính phức hợp thuộc loại AddressType.
Một Feature person có thể được mô tả như sau:
<?xml version="1.0" ?>
<myns:Person
sin="111222333"
xmlns:myns=http://www.opengis.net/myns
xmlns:gml=http://www.opengis.net/gml
xmlns:xlink=http://www.w3.org/1999/xlink
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://www.opengis.net/myns
erson.xsd">
<myns:LastName>Smith</myns:LastName>
<myns:FirstName>Fred</myns:FirstName>
<myns:Age>35</myns:Age>
<myns:Sex>Male</myns:Sex>
<myns:Spouse sin="444555666" />
<myns:Location>
<gml:Point>
<gml:coordinates>15,15</gml:coordinates>
</gml:Point>
</myns:Location>
<myns:Address>
<myns:StreetName>Main St.</myns:StreetName>
<myns:StreetNumber>5</myns:StreetNumber>
<myns:City>SomeCity</myns:City>

Chương 3. Web Feature Service (WFS)
46
<myns:Province>SomeProvince</myns:Province>
<myns:PostalCode>X1X 1X1</myns:PostalCode>
<myns:Country>Canada</myns:Country>
</myns:Address>
<myns:Phone>416-123-4567</myns:Phone>
<myns:Phone>416-890-1234</myns:Phone>
</myns:Person>
Sử dụng biếu thức XPath thì các thuộc tính của Feature Person có thể được tham
chiếu như dưới đây:
LastName
FirstName
Age
Sex
Source
Location
Address
Address/StreetNumber
Address/StreetName
Address/City
Address/Province
Address/Postal_Code
Address/Country
Phone[1]
Phone[2]
Chú ý là đối với Feature này thì mỗi đường dẫn được bắt đầu bằng thành phần
gốc của thuộc tính của Feature đang được tham chiếu, tương ứng với tên của thuộc
tính. Mỗi thuộc tính được tham chiếu tới bởi loại đường dẫn này có thể được bắt
đầu bởi thành phần gốc của Feature (chính là tên loại Feature). Do đó thuộc tính
LastName có thể được tham chiếu bằng đường dẫn Person/LastName. Thuộc tính
City có thể được tham chiếu tới bởi đường dẫn Person/Address/City.

Chương 3. Web Feature Service (WFS)
47
Thành phần Phone xuất hiện nhiều lần và vị từ [1], [2] được dùng để chỉ cụ thể
thành phần này là thành phần thứ mấy. Vị từ [1] dùng để chỉ lần xuất hiện thứ nhất
của thành phần Phone, vị từ [2] chỉ lần xuất hiện thứ 2 của thành phần Phone.
3.3.6. Thành phần <Native>
Mỗi nhà cung cấp chỉ có được một số khả năng nhất định nào đó.
Thành phần <Native> được dùng để truy xuất đến các khả năng riêng của từng
nhà cung cấp của một Web Feature Service nào đó.
Thành phần <Native> được định nghĩa như sau:
<xsd:element name="Native" type="wfs:NativeType"/>
<xsd:complexType name="NativeType">
<xsd:any />
<xsd:attribute name="vendorId" type="xsd:string"
use="required"/>
<xsd:attribute name="safeToIgnore" type="xsd:boolean"
use="required"/>
</xsd:complexType>
Thành phần này chỉ đơn giản chứa lệnh (command ) hoặc là thao tác (operation)
riêng biệt của nhà cung cấp.
Thuộc tính VendorId được dùng để chỉ nhà cung cấp hiểu lệnh và thao tác được
mô tả trong thành phần <Native>. Thuộc tính này được đưa ra để cho một Web
Feature Service biết là nó có thể xử lí được một lệnh nào đó hay không.
Thuộc tình safeToIgnore chỉ cho Web Feature Service biết là nó nên làm gì nếu
như nó không nhận ra các lệnh hay các thao tác đó. Thuộc tính safeToIgnore có 2
giá trị là True và False, ý nghĩa của chúng như sau:
Nếu safeToIgnore=False thì Web Feature Service không thể bỏ qua thao tác
được yêu cầu, nếu như nó không thể giải quyết được thì coi như thao tác này thất
bại.
Nếu safeToIgnore=True thì Web Feature Service có thể bỏ qua thành phần
<Native> này.

Chương 3. Web Feature Service (WFS)
48
Ví dụ: mô tả cách dùng thành phần <Native> để kích hoạt một chức năng của
một cơ sở dữ liệu quan hệ dựa trên SQL. Thành phần <Native> này chỉ ra rằng đây
là một lệnh Oracle và lệnh này có thể bỏ qua:
<Native vendorId="Oracle" safeToIgnore="True">
ALTER SESSION ENABLE PARALLEL DML
</Native>
3.3.7. Filter
Một Filter định nghĩa một tập hợp Feature sẽ được thao tác. Tập hợp này có thể
bao gồm một hoặc nhiều Feature (có thể đếm được) hoặc một tập hợp các Feature
được định nghĩa bởi các ràng buộc không gian hoặc phi không gian (đây là các ràng
buộc trên các thuộc tính vô hướng hay các thuộc tính địa lý của các loại đối tượng).
Các Filter này được mô tả trong tài liệu OGC Filter Encoding Implementation
Specification.
3.3.8. Thông báo về các biệt lệ (Exception Reporting)
Nếu như Web Feature Service gặp phải lỗi khi xử lí một truy vấn nào đó hoặc là
khi nó không hiểu được một câu truy vấn nào đó, nó có thể phát sinh một tài liệu
XML để chỉ ra lỗi đã xảy ra. Định dạng của loại tài liệu dùng để thông báo lỗi này
được mô tả bởi lược đồ thông báo lỗi (định nghĩa trong phần A.2).
Một thành phần <ServiceExceptionReport> có thể chứa một hoặc nhiều lỗi.
Thuộc tính bắt buộc version được dùng để chỉ phiên bản của lược đồ thông báo lỗi.
Trong phiên bàn WFS này thì giá trị này cố định là 1.2.0.
Các thông báo lỗi cụ thể được chứa trong thành phần <ServiceException>.
Thuộc tính tùy chọn code dùng để chỉ mã lỗi của lỗi phát sinh. Thuộc tính tùy chọn
locator được dùng để chỉ nơi gây ra lỗi trong câu truy vấn. Một số thành phần trong
tài liệu này chứa thuộc tính handle, thuộc tính này liên kết một cái tên gợi nhớ với
mỗi thành phần. Nếu thuộc tính này tồn tại thì giá trị của nó có thể xuất hiện trong
thuộc tính Locator của thành phần <ServiceException> . Nếu như thuộc tính này