Phần sau đây sẽ mô tả các phần tử của ngôn ngữ trích chọn dữ liệu, các thuộc tính cũng như giá trị của nó.
Chú ý: Giá trị của các thuộc tính “stack” và “regX”(trong đó X là tên thanh ghi do người dùng định nghĩa có ít nhất một ký tự) sẽ được phân tích thành giá trị trước khi sử dụng. Sau đó giá trị thực sự chủa chúng sẽ được lấy từ bộ nhớ (stack hay register). Trong các trường hợp khác giá trị thực sự được cho trong giá trị của thuộc tính.
2.3.3.1 wrapper
Chức năng: phần tử wrapper là phần tử chứa ( phần tử gốc) cho các luật kịch bản DEL. Khi tạo một tàI liệu ra mới, phần tử map đầu tiên có thuộc tính maptype là “createDocument”.
Chứa: đầu tiên là các phần tử template và map sau đó có thể có một trong các phần tử sau đây: repeat, map, extract, test, set hay runtemplate.
Thuộc tính: không có Cú pháp:
<wrapper> </wrapper>
2.3.3.2 url
Chứa: Không
Thuộc tính: fetch (bắt buộc) cách lấy trang web về, để tăng hiệu năng chúng tôi cung cấp một số cơ chế để khác nhau để thực hiện điều này. timeout: thời gian giới hạn để lấy trang web.
Giá trị của fetch:
- sequence: lấy trang web theo một trong hai cơ chế khác nhau S ? T nếu cớ chế thứ nhất lỗi thì lấy theo cớ chế thứ hai
- execution: lấy trang web theo trong hai cơ chế đồng thời S | T có một cớ chế thành công thì sẽ kết thúc
2.3.3.3 nextpage
Chức năng: Liên kết đến trang web tiếp theo trong quá trình tách dữ liệu. Giá trị của nó là một siêu liên kết. Rất nhiều các web site lưu thông tin trên nhiều trang mà để lấy đầy đủ thông tin đòi hỏi phải duyệt hết các trang.
Chứa : Không
2.3.3.4 template
Chức năng: phần tử template được dùng để như phần tử chứa cỏc dãy cỏc phần tử hay dùng. Phần tử runtemplate sẽ được dùng để gọi nộii dung các phần tử template Chứa: Có thể chứa một trong các phần tử sau đây: repeat, map, extract, test, set hay runtemplate.
Thuộc tính: name(bắt buộc) Cú pháp: <template name="attribute_value"> </template> Ví dụ: <template name="MakeDate"> </template> 2.3.3.5 repeat
Chức năng: phần tử repeat lập lại nội dung của nó, tức là nội dung các phần tử dưới nó.
Chứa: Có thể chứa một trong các phần tử sau đây: repeat, map, extract, test, set hay runtemplate.
Thuộc tính: times(bắt buộc) Thuộc tính times:
. Khi thuộc tính times là “*”, nó lặp lại nội dung của nó cho tới khi một trong các phần tử extract thiết lập trạng tháI “dataStreamError”.
.Khi thuộc tính times là một số (ví dụ “8”), nó lặp lại nội dung của nó đúng số đó lần hay tới khi một trong các phần tử extract thiết lập trạng tháI “dataStreamError”.
Chú ý: trong vòng repeat, khi cố gắng trích dữ liệu nhưng không tìm thấy (biểu thức đang tìm , bộ phân tích DEL sẽ thiết lập trạng tháI “dataStreamError” để dừng vòng lặp. Trong trường hợp trạng tháI “dataStreamError” được thiết lập ngoàI vòng lặp, cả quá trình wrapping dừng lại.
Cú pháp: <repeat times="attribute_value"> </repeat> <repeat times="*"> </repeat> 2.3.3.6 map
Chức năng: phần tử map chèn nội dung vào nút XMl của tàI liệu ra. Nó chuyển cont trỏ trong tàI liệu XML ra để xác định vị trí điểm chèn cho nỳt. Nó cũng lưu phần tử hiện hành.
Chứa: Không có
Thuộc tính: Các thuộc tính và các giá trị có thể:
. maptype(bắt buộc): cho bộ phân tích DEL biết cách và vị trí trong tài liệu XML (xác định bởi thuộc tính nút) để chèn nội dung.
- “createDocument”: Tạo một tài liệu XML mới và xác định phần tử gốc. Phần tử gốc lấy tên từ giá trị của nút (biểu thức XPath). Sau lệnh này, con trỏ chuyển tới phần tử gốc này.
- “createElement”: Tạo phần tử mới trong tàI liệu XML. Phần tử mới là phần tử con cuối cùng trong các phần tử con của phần tử hiện hành. Tên của phần tử là giá trị của thuộc tính. Khi nội dung của truộc tính được xác định, một nút văn bản sẽ được tạo ra bên trong phân tử mới chứa giá trị đã phân tích của nội dung phần tử. Sau lệnh này, con trỏ chuyển tới phần tử mới.
- “createElelmentBefore”: Làm việc như “createElement” nhưng tạo phần tử mới trước phần tử hiện hành trở bởi con trỏ (ở cùng mức)
- “createElelmentAfter”: Làm việc như “createElement” nhưng tạo phần tử mới sau phần tử hiện hành trở bởi con trỏ (ở cùng mức) - “createAttribute”: Tạo một thuộc tính trong tàI liệu XML. Thuộc
tính được tạo cho phần tử mà con trỏ đang chỉ. Nội dung của thuộc tính là giá trị đã phân tích của nội dung thuộc tính. Nừu thuộc tính đã tồn tại thì giá trị cũ của nó sẽ bị ghi đè.
- “createTextNode”: Thêm một nút văn bản vào tại liệu XML. Nút văn bản được thêm vào nút cuối cùng của phần tử trong đó con trỏ đang định vị. Nội dung của nút văn bản là giá trị đã phân tích của nội dung thuộc tính.
- “createCDATA”: Thêm phần CDATA vào tài liệu XML. Phần này được thêm vào phần tử hiện hành. Nội dung của phần CDATA là giá trị đã phân tích của nội dung thuộc tính.
- “createProcessingInstruction”: Thêm chỉ thị xử lý vào tài liệu XML. Phần này được thêm vào trước phần tử hiện hành. Nội dung của chỉ thị xử lý là giá trị đã phân tích của nội dung thuộc tính.
- “moveCursor”: Di chuyển con trỏ tới phần tử đã được tạo trong tài liệu XML. Vị trí của con trỏ được xác định trong thuộc tính nhu một biểu thức XPath. Nếu biểu thức XPath chỉ tới nhiều nỳt thỡ nỳt cuối cùng sẽ được chọn.
- “documentReady”: Cắt dữ liệu nguồn thành các phần để cho phép xử lý hiệu quả hơn. Sinh ra một cây DOM trong bộ nhớ. - “getTemplate”: Nạp một mấu XML kết quả như một khung cho
từng phần tử một hay dùng để ấn định nọi dung của một số nút XML nếu cần thiết.
. node(bắt buộc, sẽ được phân tích): Xác định vị trí con trỏ trong tài liệu XML ra theo biểu thức XPath.
.content(tuỳ chọn, sẽ được phân tích): Đưa ra nội dung của, ví dụ các thuộc tính trong tài liệu XML.
.value(bắt buộc với “getTemplate”): Sinh ra phần tử gốc tài liệu XML. Cú pháp:
<map maptype="attribute_value" node="attribute_value" content="value"/> Ví dụ:
<map maptype="createDocument" node="root"/>
2.3.3.7 extract
Chức năng: phần tử extract lấy dữ liệu từ dữ liệu nguồn.
Chứa: Có thể chứa một trong các phần tử sau đây: repeat, map, extract, test, set hay runtemplate.
Thuộc tính: exptype(bắt buộc), expression(bắt buộc, sẽ được phân tích), save(tuỳ chọn, sẽ được phần tích).
.exptype: cho bộ phân tích DEL biết phần dữ liệu nào sẽ được tách và lưu ở đâu.
.expression xác định exptype. Các giá trị của exptype: - “length”: Tách length ký tự từ đầu.
- “upto”: Tách dữ liệu cho tới khi tới nội dung của thuộc tính expression.
- “over”: Tách phần dữ liệu nguồn chứa trong thuộc tính expression.
- “re_upto”:Tỏch dữ liệu cho tới khi tài liệu nguồn chứa phần khớp với nội dung biểu thức của thuộc tính expression.
- “re_over”: Tách dữ liệu chứa trong dữ liệu nguồn chứa phần khớp với nội dung biểu thức của thuộc tính expression.
- “content”: Tách phần dữ liệu nguồn có chứa biểu thức chính quy đưa ra trong thuộc tính expression. Như “re_over” nhưng dữ liệu tách ra được phải bắt đầu từ vị trí con trỏ hiện tại.
- “mark”(expression): Đánh dấu vị trí XML hiện tại và lưu nó vào thành ghi xác định bởi biểu thức expression.
- “set”(expression): Trả lại điểm lưu trước cho thanh ghi trong biểu thức expression.
Giá trị thuộc tính save: thuộc tính save cho biết nơi dữ liệu tách được lưư trữ. Các giá trị là:
- “stack” : Dữ liệu sẽ được lưu ở đỉnh ngăn xếp. - “regX”: Dữ liệu sẽ được lưu ở thanh ghi X. Cú pháp:
<extract exptype="attribute_value" expression="attribute_value"
save="attribute_value"/> Ví dụ:
<extract exptype="over" expression="<table>"/>
2.3.3.8 test
Chức năng: phần tử test so sanh hai giá trị. Nội dung của phần tử thử sẽ được xử lý khi kết quả thử là đúng.
Chứa: Có thể chứa một trong các phần tử sau đây: repeat, map, extract, test, set hay runtemplate.
Thuộc tính: testtype(bắt buộc), value1(bắt buộc, phân tích), value2(tuỳ chọn, phần tích). thuộc tính testtype xác định kiểu thử. Các giá trị của testtype:
- “equal” : Thử xem thuộc tính value1 có bằng thuộc tính value2. - “unequal”: Thử xem thuộc tính value1 cú khỏc thuộc tính
value2.
- “lesser”: Thử xem thuộc tính value1 có nhỏ hơn thuộc tính value2.
- “greater”: Thử xem thuộc tính value1 có lớn hơn thuộc tính value2.
- “contains”: Thử xem thuộc tính value1 (biểu thức chính quy) xuõt hiện trong thanh ghi hay giá trị xác định bởi thuộc tính value2 hay không.
Chú ý: Nội dung của các thuộc tính value1 và value2 sẽ được phân tích trước khi so sánh.
Cú pháp:
<test testtype="attribute_value" value1="attribute_value"
value2="attribute_value"></test> Ví dụ:
<test testtype="equal" value1="4" value2="reg1">
2.3.3.9 runtemplate
Chức năng: phần tử runtemplate chạy các phần tử từ một template đã định nghĩa trước
Chứa: không phần tử
Thuộc tính: nameref(bắt buộc) thuộc tính nameref :
- thuộc tính nameref chỉ ra template cần chạy Cú pháp:
<runtemplate nameref="attribute_value"/> <runtemplate nameref="MakeDate"/>
2.3.3.10set
Chức năng: phần tử set đưa câu lệnh tới bộ phân tích DEL parser để xử lý dữ liệu Chứa: không phần tử
Thuộc tính:
- parameter(bắt buộc) - value1(bắt buộc) - value2(bắt buộc)
- value3(tuỳ chọn với “append”)
cỏc giát rị của các thuộc tính parameter (value1 và value2):
- “doctype”: Đặt nội dung của thuộc tính value1 bằng biến SYSTEM và nội dung của thuộc tính value2 bằng biến PUBLIC của tài liệu XML sinh ra
- “encoding”: Đặt nội dung của thuộc tính value1 bằng kiểu mó hoỏ của tài liệu XML sinh ra.
- “memory”: Đặt độ dài nội dung của biến value2 bằng bộ nhớ trở tới thuộc tính value1
- “omitXMLDeclaration”: Bỏ qua khai báo XML nếu nội dung của thuộc tính value1 là “true”
- “serializeOutput”: Đưa tất cả cây DOM vào bộ nhớ nếu nội dung của thuộc tính value1 là đúng. Giá trị mặc định là “false”.
- “append”: Gắn xâu và nội dung thanh ghi.
o Nếu chỉ có hai thuộc tính được xác định (value1 và value2): Kết hợp giá trị trong value1 và value2 và lưu kết quả vào thanh ghi xác định bởi value1(vớ dụ “reg1”). o Nếu ba thuộc tính được xác định (value1, value2 và
value3): kết hợp nội dung trong value1 và value2 và lưu kết quả thanh ghi xác định bởi value3(vớ dụ “reg1”). chú ý: Vị trí để lưu kết hợp (“append”) phải là một thanh ghi (ví dụ “regCombo”). Các giá trị khác có thể là thanh ghi hay xâu.
Cú pháp:
<set parameter="attribute_value" value1="attribute_value" value2="attribute_value"/>
Ví dụ:
<set parameter="memory" value1="stack" value2="Testing"/>
Chức năng: Tạo một tập ánh xạ ký tự ở những điểm do bạn định nghĩa với những ký tự khác để thay thế.
Để chạy tập ánh xạ ký tự, cần phải định nghĩa stringconvert Thuộc tính: name
Chứa: values
- search: Chứa xâu để thay thế - replace: Chứa xâu thay thế Cú pháp:
<charsetmap name="value">
<values search="replaceable" replace="replacer"/> </charsetmap>
Ví dụ:
<charsetmap name="MyMap">
<values search="AAABBB" replace="GISSE"/> </charsetmap>
2.3.3.12 stringconvert(register)
Chức năng: Nạp và chạy một tập ánh xạ ký tự định nghĩa bởi charsetmap Thuộc tính:
- use: Xác định tên của tập ánh xạ cần chạy
- overlapping: Xác định xem có chuyển nội dung của tất cả các thanh ghi hay không.
Chứa: register
- thuộc tính nameref: xác định thanh ghi xử lý Cú pháp:
<stringconvert use="mapname" overlapping="true|false"> <register nameref="registername"/>
</stringconvert> Ví dụ:
<stringconvert use="MyMap" overlapping="true"> <register nameref="reg1"/>
<register nameref="reg2"/> </stringconvert>
2.3.3.13 count
Chức năng: Tính toán số học đơn giản Chứa: Không phần tử
Thuộc tính: parameter(bắt buộc), value1(bắt buộc), value2, value3 giá trị thuộc tính parameter:
- “plus”: Tính tổng của hai số (hay nội dung của thanh ghi) trong value1 và value2 và lưu trong thanh ghi xác định bởi value3 - “minus”: Tính H\hiệu của hai số (hay nội dung của thanh ghi)
trong value1 và value2 và lưu trong thanh ghi xác định bởi value3
- “divide”: Chia hai số (hay nội dung của thanh ghi) trong value1 và value2 và lưu trong thanh ghi xác định bởi value3
- “multiple”: Nhân hai số (hay nội dung của thanh ghi) trong value1 và value2 và lưu trong thanh ghi xác định bởi value3 - “decimal”: Xác định số các số thập phân (trong value1) cho các
hàm số học trên. giá trị mặc định là “0”. Cú pháp:
<count parameter="function" value1="number|register" value2="number| register" value3="registername"/>
Ví dụ
<count parameter="minus" value1="23" value2="20" valu3="reg3"/> <count parameter="decimal" value1="1"/>