
Chương 3. Web Feature Service (WFS)
62
</xsd:sequence>
<xsd:attribute name="handle" type="xsd:string"
use="optional"/>
<xsd:attribute name="typeName" type="xsd:QName"
use="required"/> </xsd:complexType>
<xsd:element name="Property" type="wfs:PropertyType"/>
<xsd:complexType name="PropertyType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:QName"/>
<xsd:element name="Value"/>
</xsd:sequence>
</xsd:complexType>
3.7.2.2. Mô tả các thuộc tính
Thuộc tính hadle dùng để gán một tên dễ nhớ cho thành phần tương ứng với nó.
Ngoài ra nó còn giúp cho việc báo lỗi đến ứng dụng client được dễ hiểu hơn. Khi lỗi
xảy ra, WFS sẽ dùng thuộc tính handle để định vị lỗi nhằm phát sinh ra biệt lệ một
cách chính xác. Nếu thuộc tính này không được xác định, WFS sẽ cố gắng thông
báo vị trí của biệt lệ tương ứng với lỗi trong request của Transaction dựa trên số
dòng hoặc một cơ chế nào khác.
Giả sử WFS có hỗ trợ operation LockFeature và/hoặc operation
GetFeatureWithLock, thì thuộc tính releaseAction được dùng để điều khiển việc
giải phóng các feature đã khóa khi request của Transaction hoàn thành. Nếu thuộc
tính này có giá trị ALL thì chỉ ra rằng tất cả các khóa của các feature bị khóa với
định danh khóa <LockID> sẽ được giải phóng khi giao tác chấm dứt, bất chấp
trong số các feature đang bị khóa vẫn còn có feature đang được truy cập. Nếu thuộc
tính này có giá trị SOME thì chỉ ra rằng chỉ những khóa của các feature có trong
request của Transaction sẽ được giải phóng, và khi đó, thuộc tính releaseAction
của thành phần <LockFeature> hoặc <GetFeatureWithLock> sẽ được trả về giá
trị “0” sau khi kết thúc giao tác. Giá trị mặc định của releaseAction là ALL.

Chương 3. Web Feature Service (WFS)
63
3.7.2.3. Thành phần <Transaction>
Thành phần <Transaction> có thể không chứa hoặc chứa nhiều các thành phần
<Insert>, <Update>, <Delete>, chúng mô tả các thao tác thêm, cập nhật, xóa các
thể hiện của feature. Một thành phần <Transaction> trống vẫn hợp lệ song sẽ
không có ích.
Thành phần tùy chọn <LockID> chỉ ra rằng giao tác sẽ thực hiện trên các thể
hiện feature đã được khóa nào. Nếu WFS không hỗ trợ khả năng khóa feature thì
thành phần <LockID> sẽ bị bỏ qua. Nếu WFS có hỗ trợ khóa và có một định danh
khóa không hợp lệ thì WFS sẽ gửi ra một biệt lệ và giao tác sẽ chấm dứt.
Thành phần <Native> đã được định nghĩa ở mục “Các thành phần mở rộng”.
3.7.2.4. Thành phần <Insert>
Thành phần <Insert> được dùng để thêm mới các thể hiện của feature. Trong
một operation Transaction có thể có nhiều thành phần <Insert> và với mỗi thành
phần <Insert> có thể được dùng để tạo mới nhiều thể hiện của feature.
Trong response trả về cho giao tác <Insert>, WFS sẽ trả về một danh sách các
định danh feature mới được gán cho các thể hiện của feature được thêm mới. Các
định danh feature được hiển thị theo đúng trình tự được thực hiện trong thành phần
<Insert> của giao tác.
Ví dụ: Giao tác sau sẽ tạo mới hai thể hiện của kiểu feature INWATERA_1M.
<?xml version="1.0"?>
<wfs:Transaction
version="1.0.0"
service="WFS"
xmlns="http://www.someserver.com/myns"
xmlns:gml="http://www.opengis.net/gml"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.someserver.com/myns

Chương 3. Web Feature Service (WFS)
64
http://www.someserver.com/wfs/cwwfs.cgi?
request=describefeaturetype&typename=INWATERA_1M.xsd
http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd">
<wfs:Insert>
<INWATERA_1M>
<WKB_GEOM>
<gml:Polygon gid="1"
srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>-98.54,24.26 ...</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</WKB_GEOM>
<ID>150</ID>
<F_CODE>ABCDE</F_CODE>
<HYC>152</HYC>
<TILE_ID>250</TILE_ID>
<FAC_ID>111</FAC_ID>
</INWATERA_1M>
<INWATERA_1M>
<WKB_GEOM>
<gml:Polygon gid="1"
srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>-99.99,22.22 ...</gml:coordinates>
gml:outerBoundaryIs>
</gml:Polygon>
</WKB_GEOM>
<ID>111</ID>

Chương 3. Web Feature Service (WFS)
65
<F_CODE>FGHIJ</F_CODE>
<HYC>222</HYC>
<TILE_ID>333</TILE_ID>
<FAC_ID>444</FAC_ID>
</INWATERA_1M>
</wfs:Insert>
</wfs:Transaction>
3.7.2.5. Thành phần <Update>
Thành phần <Update> được dùng để cập nhật các thể hiện của feature. Trong
một operation Transaction có thể có nhiều thành phần <Update> và với mỗi thành
phần <Update> có thể được dùng để cập nhật nhiều thể hiện của feature.
Thành phần <Update> chứa một hoặc nhiều thành phần <Property> cho biết
tên và giá trị cập nhật của thuộc tính của kiểu feature được định danh bằng thuộc
tính typeName. Thành phần <Name> trong thành phần <Property> chỉ ra tên
thuộc tính cần cập nhật. Thành phần tùy chọn <Value> chỉ ra giá trị cập nhật cho
thuộc tính đó. Nếu thành phần này không được định nghĩa thì giá trị NULL sẽ được
gán cho thuộc tính này. Nếu thuộc tính này không được phép có giá trị NULL thì
WFS sẽ đưa ra môt biệt lệ.
Phạm vi của thành phần <Update> được ràng buộc bởi thành phần <Filter>. Nó
được dùng để giới hạn phạm vi của giao tác cập nhật.
Ví dụ: Ví dụ sau cho thấy giao tác cập nhật thuộc tính POPULATION của định
danh feature BUILTUPA_1M.1013
<?xml version="1.0" ?>
<wfs:Transaction
version="1.0.0"
service="WFS"
xmlns="http://www.someserver.com/myns"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Chương 3. Web Feature Service (WFS)
66
xsi:schemaLocation="http://www.opengis.net/wfs
../wfs/1.0.0/WFS-transaction.xsd">
<wfs:Update typeName="BUILTUPA_1M">
<wfs:Property>
<wfs:Name>POPULATION</wfs:Name>
<wfs:Value>4070000</wfs:Value>
</wfs:Property>
<ogc:Filter>
<ogc:FeatureId fid="BUILTUPA_1M.10131"/>
</ogc:Filter>
</wfs:Update>
</wfs:Transaction>
Cập nhật thuộc tính POPULATION_TYPE của danh sách các feature sau với
giá trị mới là “CITY”. Các feature cần cập nhật có các định danh feature sau:
BUILTUPA_1M.1013, BUILTUPA_1M.34, BUILTUPA_1M.24256
<?xml version="1.0" ?>
<wfs:Transaction
version="1.0.0"
service="WFS"
xmlns="http://www.someserver.com/myns"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs
../wfs/1.0.0/WFS-transaction.xsd">
<wfs:Update typeName="BUILTUPA_1M">
<wfs:Property>
<wfs:Name>POPULATION_TYPE</wfs:Name>
<wfs:Value>CITY</wfs:Value>
</wfs:Property>
<ogc:Filter>