xmllanguage
DESCRIPTION
Giáo trình XML tiếng việtTRANSCRIPT
11/7/2014
1
07.11.2014 1
Ngôn ngữ XML
Phạm Thị Thu TrangĐại học Hoa Sen
Khoa Khoa Học-Công NghệBộ môn Toán-Tin học
Email: [email protected]
07.11.2014 2
Phần I
Giới thiệu
07.11.2014 3
Nội dung
XML là gì?
Tại sao XML? Vài nét về XML và giá trị tỷ lệ
XML đến từ đâu?
XML ngày hôm nay được dùng ở đâu?
Làm gì với kiểu tư liệu XML?
Hiểu khái niệm và những nét cơ bản của XML
Vận dụng một vài triển vọng trên như thế nào để XML được sử dụng trong thực tế
11/7/2014
2
07.11.2014 4
XML là gì?
eXtensible Makup Language (ngôn ngữ tăng cường)
Là Meta-Markup Language
Không chỉ là một ngôn ngữ tăng cường
07.11.2014 5
Vấn đề dữ liệu
Chủ yếu: “cung cấp“. Trình bày một dữ liệu “ứng dụng“ như thế nào?:
Hiệu suất (tốc độ/thời gian)
Liên tục (tồn tại ngắn/dài)
Có khả năng thay đổi
Bố cục (mã hóa/đồng nhất)
07.11.2014 6
Vấn đề dữ liệu (tt)
Mở ra sự quản lý thông tin
Diễn giải
Trình bày
Tóan tử nối
Khả năng trao đổi
Sự thẩm vấn
11/7/2014
3
07.11.2014 7
Markup Language
Sử dụng dữ liệu tăng cường
Phương pháp luận cho việc mã hóa dữ liệu với thông tin
Ví dụ
Đánh dấu màu vàng lên một chuỗi trong văn bản như một sự nhấn mạnh
07.11.2014 8
Markup Language
Hai khía cạnh quan trọng: Một chuẩn cho “valid-markup“
HTML-tags
Một chuẩn cho “what markup means“ HTML-tags “communicate“ layout và dạng
thông tin
Ngôn ngữ tăng cường đặc trưng định nghĩa một tập hợp của thẻ mà mỗi trong số đó có một vài ý nghĩa kết hợp
07.11.2014 9
Ví dụ việc sử dụng ngôn ngữ tăng cường
Tập tin văn bản
Dữ liệu trên network
Cơ sở dữ liệu
Nội dung multi-media
HTML
11/7/2014
4
07.11.2014 10
HTML
Là ngôn ngữ tăng cường phổ biến
Định nghĩa tập hợp của thẻ
Thiết kế cho sự hiện thị của dữ liệu
Tư liệu HTML được thực thi bởi quá trình ứng dụng HTML (Browser)
07.11.2014 11
Thế mạnh của HTML
Dễ dàng đối với thực thi và tác giả Số lựơng thẻ còn ít
Mối liên hệ đơn giản giữa thẻ ít
Kiểm tra cú pháp chưa phức tạp
Số lựơng kiểu mẫu giới hạn trong khả năng
Sự hiển thị còn nhỏ và đơn giản
Thế mạnh của HTML là sự dể dàng trong việc sử dụng
07.11.2014 12
Điểm yếu của HTML
Tập hợp của thẻ cố định Người sử dụng không mở rộng
Phụ thuộc vào quá trình định nghĩa “tăng cường“
Phụ thuộc vào bên bán Những thẻ độc quyền bên bán
Thực thi không đồng bộ Netscape browser với IE
Ngữ nghĩa tái định nghĩa cho mỗi thẻ
Cấu trúc dữ liệu tái định nghĩa
11/7/2014
5
07.11.2014 13
Điểm yếu của HTML
Không có hợp lệ theo nghi thức
Không có hỗ trợ cho tìm kiếm theo ngữ nghĩa
Dựa trên sự xuất hiện đơn độc không trên nội dung
Kiểu mẫu quá đơn giản Kiểm tra giới hạn
Sẽ không làm được với tư liệu phức hợp
Hỗ trợ nghèo nàn cho việc in và những media khác
07.11.2014 14
HTML không phù hợp cho việc xử lý
Dữ liệu lớn và phức hợp
Dữ liệu mà phải được dùng trong phương cách khác nhau
Dữ liệu với chu kỳ sống dài
Dữ liệu tham gia điều khiển những scripts và Java applet
07.11.2014 15
XML được sinh ra
Mở đầu HTML thì không làm việc phổ biến cho
những trừong hợp chung
Ứng dụng Web sẽ cần một phương thức của dữ liệu mã hóa mà có thể điều khiển quá trình phân chia phức hợp theo mọi cách
Không có XML,HTML sẽ được thay thế bởi những dạng độc quyền và nhị phân nhiều hơn
11/7/2014
6
07.11.2014 16
Mục đích thiết kế XML
XML sẽ phải sử dụng nhiều theo chiều hướng trên Internet
XML sẽ phải hổ trợ nhiều cho những ứng dụng
XML phải tương thích đầy đủ với SGML
Phải thât sự dể dàng để viết những chương trình mà thực thi tư liệu XML
07.11.2014 17
Mục đích thiết kế XML
Số lượng những dạng tùy chọn của XML sẽ được sẽ được giữ ít nhất tuyệt đối, zero là một cách lý tưởng
Tư liệu XML thì nên hợp lý và rỏ ràng dể đọc
Thiết kế XML được chuẩn bị một cách nhanh chóng
07.11.2014 18
Mục đích thiết kế XML
Thiết kế của XML nên nghi thức và xúc tích
Tư liệu nên dễ tạo
Sự ngắn gọn trong XML tăng cường là sự quan trọng nhỏ nhất
11/7/2014
7
07.11.2014 19
Những nét chính của XML
Khả năng mở rộng
Media và sự trình bày độc lập
Sự tách biệt của nội dung từ sự trình bày
Cấu trúc
Hợp lệ
07.11.2014 20
Khả năng mở rộng
Nhiều lãnh vực đặc biệt trong ngôn ngữ tăng cường
Trao đổi dữ liệu trong lĩnh vực công nghệ đặc biệt
Trao đổi dữ liệu qua những lãnh vực khác nhau
Sức khỏe và bảo hiểm
Hóa học và dược
07.11.2014 21
Khả năng mở rộng
XML là ngôn ngữ tăng cường
Định nghĩa ngôn ngữ tăng cường riêng cho lãnh vực vấn đề riêng
Con số chính xác của thẻ có thể được định nghĩa
Cần cho lãnh vực tiêu chuẩn đặc biệt
XSLT
11/7/2014
8
07.11.2014 22
Khả năng mở rộng
Thẻ có thể nhiều hơn dạng sẵn có
Thẻ có thể là bất cứ cái gì Trình bày ngữ nghĩa dữ liệu
Quy tắc thương mại
ebXML
Mối quan hệ dữ liệu
EJB 2.0 Container Managed Persistence
Hình thức
XSL
Bất cứ cái gì chúng ta muốn
07.11.2014 23
Media (trình bày) độc lập
Sự tách biệt rỏ ràng giữa nội dung và trình bày
Nội dung của dữ liệu
Dữ liệu là cái gì
Được trình bày bởi tư liệu XML
Trình bày của dữ liệu
Dữ liệu trong như cái gì
Có thể chỉ ra bởi stylesheet
07.11.2014 24
Media (trình bày) độc lập
Cùng một dữ liệu nhưng có thể trình bày bởi những phương tiện truyền thông khác nhau HTML Browser
Voice device
Cùng dữ liệu nhưng có thể trình bày theo những dạng khác nhau
Cell phone như WML
Destop như HTML
Qua stylesheet
11/7/2014
9
07.11.2014 25
Media (trình bày) độc lập
Stylesheet
Câu lệnh như thế nào để trình bày dữ liệu XML
CSS
Thích ứng cho HTML Browser
XSL
XML cơ bản
Mục đích chung
Làm việc với XSLT
07.11.2014 26
Sự tách biệt của nội dung từ sự trình bày
Tìm kiếm và lấy dữ liệu dể dàng và hiệu quả Những thẻ có khả năng tìm kiếm thông
tin
Nhiều ứng dụng dùng cùng dữ liệu trong những cách khác nhau Dữ liệu nhân công có thể được dùng bởi
Ứng dụng trả lương
Ứng dụng tổ chức
Ứng dụng nhân sự
07.11.2014 27
Sự tách biệt của nội dung từ sự trình bày
Khả năng trao đổi của dữ liệu
Trao đổi dữ liệu trên thời gian và không gian
11/7/2014
10
07.11.2014 28
XSLT
Ví dụ (XMLHTML)XML data
<destination>[email protected]</destination>
XSTL stylesheet
Bắt đầu một dòng mới
Chuyển đổi thẻ XML “destination“ sang thẻ HTML “To:“
Hiển thị: “To:“ in đậm theo sao là một khoảng trắng
Hiển thị địa chỉ email
Kết quả:
07.11.2014 29
Cấu trúc HTML với XML
07.11.2014 30
Cấu trúc
Mối quan hệ:
Employee được tạo bởi Name và EmloyeeID
Name được tạo bởi firstName và lastName
Phân cấp (dạng cây)
Truy cập nhanh hơn
Bố trí lại dể dàng hơn
11/7/2014
11
07.11.2014 31
Cấu trúc
Khả năng xây dựng dữ liệu lớn và phức hợp
Khả năng trao đổi dữ liệu (Portability)của mối quan hê và cấu trúc phân cấp
07.11.2014 32
Hợp lệ (Validation)
Dữ liệu XML bị bắt buộc bởi những quy tắc (hay cú pháp) Dữ liệu Employee phải có Name và EmployeeID Name phải có 2 thành phần firstName và
lastName
<Employee><Name>
<firstName>John</firstName><lastName>Doe</lastName>
</Name><EmployeeID>1234</EmloyeeID>
</Employee>
07.11.2014 33
Lược đồ XML (XML schema)
Định nghĩa cú pháp
Cấu trúc
Ngữ vựng
Tư liệu XML + lược đồ XML làm việc cùng nhau
Tư liệu XML thì phải hợp khuôn dạng (well-formed)
Lược đồ XML thì kiểm tra “sự hợp lệ“ (validity)
11/7/2014
12
07.11.2014 34
Lược đồ XML
DTD (Data Type Definition) là lược đồ hầu hết phổ biến cho bây giờ
DTD là lược đồ còn hạn chế
Không thể định nghĩa “kiểm tra phạm vi“
Những lược đồ XML nổi bật khác
W3C XML schema
Relax
07.11.2014 35
Vài nét pha tạp của XML
Ngữ nghĩa của dữ liệu
Văn bản đơn giản (Plain text)
Thực thi dể dàng
Khả năng sử dụng nội dòng (Inline)
Khả năng liên kết (Linkability)
Nhất quán
07.11.2014 36
Ngữ nghĩa của dữ liệu
Ý nghĩa của dữ liệu
Thẻ XML “gián tiếp“ chỉ ra ý nghĩa của ngữ nghĩa <firstName> thực sự có ý nghĩa là “tên
đầu tiên“?
Khả năng cho sự phân ra Sự cộng tác để đồng ý về ý nghĩa ngữ
nghĩa của thẻ
Cần cho chuyển đổi (XSLT)
11/7/2014
13
07.11.2014 37
Văn bản đơn giản
Có thể sử dụng bất kỳ công cụ ứng dụng nào cho văn bản
Sự dể dàng cho con người dể đọc
Thông tin hình thể
07.11.2014 38
Thực thi dể dàng
Tập hợp quy tắc hợp khuôn dạng
Kiểm tra sự hợp lệ
Sẳn sàng sử dụng công cụ ứng dụng
parsers (hay validators)
transformers
browsers
class generators
IDE
07.11.2014 39
Khả năng dùng nội dòng
Có thể tích hợp dữ liệu từ nhiều nguồn
Có thể được hiển thị hay thực thi như một tư liệu đơn
Lắp ráp mà không dùng mối liên kết
Ví dụ
Một quyển sách được tạo bởi nhiều chương độc lập
Văn bản Copyright giống nhau trong nhiều quyển sách
11/7/2014
14
07.11.2014 40
Khả năng liên kết
Năng lực liên kết tiềm tàng mạnh và linh động hơn HTML
Hai định hướng
Nhiều hướng
W3C XLink và XPointer
07.11.2014 41
Nhất quán
XML là cơ bản Unicode
Cả hai tăng cường và nội dung
Công cụ XML phải được hổ trợ của cả hai mã hóa UTF-8 và UTF-16
Thời kỳ quyết định cho việc chọn world-wide của XML như một sự trình bày dữ liệu phổ biến
07.11.2014 42
Lịch sử của XML
Một nổ lực tiên khởi để phối hợp một dạng thức dữ liệu có thể trao đổi toàn cục với các khả năng lưu trữ thông tin phong phú
SGML
HTML
11/7/2014
15
07.11.2014 43
Lịch sử của XML
SGML Mạnh và mở rộng
Tốt cho dữ liệu danh mục và chỉ số
Quá phức tạp và mắc
HTML Hổ trợ ở phạm vi lớn và đơn giản
Không mở rộng
XML Tương thích đầy đủ với SGML
07.11.2014 44
Phát triển XML
Được bắt đầu vào năm 1996 bởi Joh Bosak of Sun
W3C chấp nhận XML 1.0 năm 1998
Những hoạt động tiêu chuẩn quan hệ của XML đang di chuyển với một tốc độ nhanh Nằm ngang
Thẳng đứng
Thương mại điện tử
07.11.2014 45
XML được dùng ở đâu
Trình bày dữ liệu đơn và phức
Tích hợp những ứng dụng không đồng nhất
Trình bày dữ liệu có khả năng trao đổi
Hiển thị và công bố
Mục đích
Thay đổi dữ liệu
Trình bày business logic
11/7/2014
16
07.11.2014 46
Trình bày dữ liệu
XML mã hóa dữ liệu cho chương trình dể thực thi
Khả năng đọc dể dàng
Khả năng thực thi bỡi máy tính
Mối quan hệ phức có thễ đựơc trình bày
Nhất quán
Nhiều công cụ ứng dụng Editting, Syntax checking
07.11.2014 47
Trình bày dữ liệu
Ví dụ
Configuation files
EJB deployment descriptor
“Làm“ thư mục (Apache ANT project)
07.11.2014 48
Tích hợp những ứng dụng không đồng nhất
Một cách đặc trưng dùng với hệ thống thông điệp
Thông điệp XML là một tài liệu ít nhất cho việc thông tin liên lạc Loosely coupled communication
Khả năng EAI (Enterprise Application Integration) dể dàng Lương, tài chính, sản phẩm
Thương mại điện tử Supplier, distributor, manufacturer, retail
11/7/2014
17
07.11.2014 49
Trình bày dữ liệu có khả năng trao đổi
Không độc quyền Ứng dụng độc lập
Mẫu đối tượng độc lập
Ngôn ngữ độc lập
Plattform độc lập
Communication protocol độc lập
Comunication media độc lập
Dùng cho ý nghĩa của trao đổi thông tin
07.11.2014 50
Trình bày dữ liệu có khả năng trao đổi
Ví dụ
Purcharse order, Invoice
Business transactional semantics
Patient record
Mathematical formular
Musical notation
Manufacturing process
07.11.2014 51
Hiển thị và phổ biến
Dữ liệu chung cho trình bày khác nhau
Sự tách biệt của nội dung từ trình bày
Ví dụ
Thông tin web trình bày kiểu client khác nhau
Thông tin trả lại đến medium khác nhau
11/7/2014
18
07.11.2014 52
Mục đích
Dữ liệu XML có thể chọn là những dạng trữ dữ liệu
Quản lý version tốt hơn
Dể dàng để thực thi
Khả năng hiện hữu của những công cụ ứng dụng đọc để dùng:
Thực thi tường thuật chung
Ngôn ngữ query tiêu chuẩn XML
Ví dụ
Bao gồm dữ liệu XML cơ bản
07.11.2014 53
Thay đổi dữ liệu
Nhiều công cụ ứng dụng hiện hữu cho sự thay đổi dữ liệu XML
Ví dụ
Dữ liệu từ dữ liệu quan hệ chuyển đổi thành XML cho việc thay đổi dể dàng
07.11.2014 54
Trình bày business logic
Thẻ XML có thể là bất cứ cái gì
Nó có thể là business logic hoặc hành động
Cơ bản cho sự di chuyển XML-RPC
Ví dụ
“Withdraw $40 from my saving account“ có thể được trình bày như XML
11/7/2014
19
07.11.2014 55
Những hoạt động phát triển trên XML
Tạo tư liệu trên XML Hầu hết bởi công cụ ứng dụng text-editor
hay WISWIG
Lập trình
Gửi và nhận tư liệu XML Qua những loại chuyển đổi
HTTP, SMTP, FTP,..
Qua những chương trình APIs JMS API, JAXM API
Socket APIs
07.11.2014 56
Những hoạt động phát triển trên XML
Trình phân ngữ (Parsing) tư liệu XML
Chuyển đổi tư liệu XML trong đối tượng lập trình
Thay đổi đối tượng lập trình
Những ứng dụng đặc trưng
Ví dụ
Hiển thị
Trữ chúng trong cơ sở dữ liệu
Tạo một tư liệu XML mới
07.11.2014 57
Những hoạt động phát triển trên XML
Tư liệu XML có thể là
URI
File
URL
InputStream
SAX Input Source
Dom tree
11/7/2014
20
07.11.2014 58
Java™ Technology + XML: Mối quan hệ đặc trưng
Đó là sự thích hợp rất tốt:
Java khả năng trao đổi code
XML khả năng trao đổi thông tin
Công cụ ứng dụng XML và chương trình hầu như được viết bởi ngôn ngữ Java
API hổ trợ cho Java platform tốt hơn bất kỳ ngôn ngữ nào khác
07.11.2014 59
Những hoạt động tiêu chuẩn
Chuẩn cơ bản XML
Qua những tổ chức cơ bản
W3C, OASIS, UN/CEFACT
Lĩnh vực đặc trưng chuẩn cho XML
Qua những lĩnh vực tổ chức chuẩn
Kỹ thuật cơ bản Java API cho XML
Qua JCP (Java Community Process)
Chuẩn thương mại điện tử
07.11.2014 60
Chuẩn XML
XML, DTD
XSL, XSLT, XPATH
DOM, SAX
W3C XML Schema
Namespaces
XLINK, XPOINTER
XHTML
XQL
11/7/2014
21
07.11.2014 61
Lãnh vực đặc trưng chuẩn XML
Chemical – CML
2DGraphics – SVG
Math – MathML
Music – MusicML
Travel – OTA
Nhiều hơn...
http://xml.org/xmlorg_registry/index.shtml
07.11.2014 62
Core Java APIs cho XML
JAXP: Parsing and Transforming
JAXB: High-level XML programming
JAXM: Messagin
JAXR: Registry APIs
JDOM: Java-optimized Parsing
07.11.2014 63
Chuẩn thương mại điện tử
ebXML
UDDI (Universal Description, Discovery and Integration)
SOAP (Simple Open Access Prorocol)
W3C XP (XML Protocol)
WSDL (Web Services Definition Lang)
S2ML (Security Services ML)
XAML (Transaction Authority ML)
11/7/2014
22
07.11.2014 64
Dự đoán tương lai bởi Joh Bosak
XML sẻ là cơ bản cho chuẩn Web tương lai
XML sẻ trở thành dạng chuẩn phổ biến cho sự thay đổi dữ liệu trong môi trường thành phần khác nhau
XML sẽ trở thành cơ bản cho sự phổ biến quốc tế
XML và XSL sẽ thay thế tất cả những dạng thực thi ngữ vựng và dạng phổ biến cho desktop
07.11.2014 65
Phần II
Kỹ Thuật
07.11.2014 66
Nội dung
Tạo tài liệu XML
Kiểm tra tính hợp lệ của XML bằng cách định nghĩa kiểu tư liệu (DTD)
Kiểm tra tính hợp lệ của XML bằng lược đồ XML (XML Schema)
CSS & XML
XSL (XSLT-XPATH)
Xử lý XML bằng bộ phân tích DOM
Xử lý XML bằng SAX
Nối kết XML (XLink-XPointer)
XML và cơ sở dữ liệu
Các công dụng khác của XML
11/7/2014
23
07.11.2014 67
Tạo tài liệu XML (Creating XML Document)
07.11.2014 68
Nội dung
Tài liệu XML được xây dựng như thế nào?
Phần tử (element) là gì và thuộc tính (attribute) là gì?
Phần tử và thuộc tính khi nào thì nên được sử dụng?
Không gian tên của XML (namespace)
07.11.2014 69
Nội dung phần tử
1. Phần tử có thể bao gồm một văn bản đơn giản:
<first>John</first>
Nội dung phần tử được gọi là Parsed
Character Data (PCDATA)
2. Phần tử có thể bao gồm các phần tử khác<name>
<first>John</first>
<last>Doe</last>
</name>
Được miêu tả theo hệ phân cấp
11/7/2014
24
07.11.2014 70
Phần tử (Element)
• <first>là một thẻ
gán đầu </first>là một thẻ
gán cuối <first>John</first>
là một phần tử Văn bản giữa thẻ
gán đầu và thẻ gán cuối của một thành được gọi là nội dung thành phần
07.11.2014 71
Nội dung thành phần
3. Thành phần có thể chứa cả văn bản lẫn các phần tử khác
<section>
Text
<subsection>... </subsection>
Text
</section>
Như vậy ta nói chúng có nội dung hỗn hợp (mixed content)
07.11.2014 72
Nội dung thành phần4. Phần tử rổng:
<name><first>John</first><middle></middle><last>Doe</last>
</name>
Chú ý: Sự khác biệt so với phần tử không tồn tại
Phần tử rổng <tag-name></tag-name> có thể được viết tắt là <tag-name/>
<name><first>John</first><middle/><last>Doe</last>
</name>
11/7/2014
25
07.11.2014 73
PCDATA
Đối với XML có vài ký tự như `<` và `&`không thể gộp trong PCDATA
Có 2 cách mà có thể khắc phục:
Thoát các ký tự
Bao văn bản trong một đoạn CDATA
07.11.2014 74
Thoát các ký tự
Thay ký tự `<` bằng < và ký tự `&` bằng &
< và & được xem là tham chiếu thực thể (entity references)
Các thực thể sau đây được định nghĩa trong XML: & cho `&`
< cho `<`
> cho `>`
&apos cho `‘`
" cho `“`
07.11.2014 75
CDATA
Nếu có khá nhiều ký tự `<` và `&` cần thoát thì sử dụng các đoạn CDATA tốt hơn
Dùng các đoạn CDATA có thể báo cho trình phân ngữ XML không phân ngữ văn bản, nhưng cứ để tất cả đi cho đến khi nó đụng đến cuối đoạn
Mọi thứ bắt đầu sau <! [CDATA[ và kết thúc tại ] ]> đều được bỏ qua bằng trình phân ngữ
<comparison><! [CDATA[6 is < 7 & 7 > 6] ]>
</comparison>
11/7/2014
26
07.11.2014 76
Quy tắc cho các thành phần
Mọi thẻ gán đầu phải có một thẻ gán cuối so khớp
Các thẻ gán không thể phủ chồng
Các tư liệu XML chỉ có thể có một thành phần gốc
Các tên thành phần phải tuân thủ các quy ước đặt tên XML
XML có phân biệt chữ hoa chữ thường
XML sẽ giữ khoảng trắng trong văn bản
07.11.2014 77
Mọi thẻ gán đầu phải có một thẻ gán cuối
Trong XML cần có thẻ gán cuối và phải so khớp chính xác với thẻ gán đầu
Quy tắc này không bắt buộc trong HTML<html><body><P>Here is some text in an HTML paragraph<BR>Here is some more text in the same paragraph<P>Anh here is some text in another HTML
paragraph</p></body></html>
Phần tử P đầu tiên kết thúc ở đâu? Cú pháp rỏ ràng hơn -> Cấu trúc của XML
07.11.2014 78
Các thẻ gán không thể phủ chồng
Trong XML các phần tử không được phủ chồng
Trong HTML các thẻ gán được phép phủ chồng<P>Some
<Strong>formatted
<EM>text
</Strong>, but
</EM>no grammar no good!
</P>
Quy tắc rỏ ràng hơn
11/7/2014
27
07.11.2014 79
Một tư liệu XML chỉ có thể có một thành phần gốc
Một tư liệu XML phải có một và chỉ một thành phần gốc
Phải có thành phần gốc cho dù không có nội dung
Ví dụ, một số thành phần gốc:<name>John</name><name>Jane</name>Phải bổ sung thêm thành phần cấp đỉnh:<names>
<name>John</name><name>Jane</name>
</names>
07.11.2014 80
Các tên thành phần
Các tên có thể bắt đầu bằng các mẫu tự (bao gồm các ký tự phi La tinh) hoặc ký tự `_`, nhưng không có các con số hoặc các ký tự dấu chấm câu khác
Sau ký tự đầu tiên, ta được phép dùng các con số, cũng như các ký tự `-` và ´.´
Các tên không thể chứa các khoảng cách
Các tên không thể chứa ký tự `;`
Các tên không thể bắt đầu bằng các mẫu tự `xml, bằng chữ hoa, chữ thường, hoặc hỗn hợp
Không thể có một dấu cách sau ký tự ´<´ mở, tên của thành phần phải đi ngay sau đó. Tuy nhiên, có thể có dấu cách trước ký tự `>` đóng, nếu muốn
07.11.2014 81
Các tên thành phần
<résumé> hợp lệ
<xml-tag> bắt đầu bẳng `xml`
<123> bắt đầu bằng một con số
<fun=xml> dấu `=` là không hợp lệ
<my tag> chứa một dấu cách
11/7/2014
28
07.11.2014 82
Phân biệt chữ hoa chữ thường
Các thẻ gán trong XML đều phân biệt chữ hoa chữ thường
Sự khác biệt lớn so với HTML, nó không phân biệt chữ hoa chữ thường, ví dụ giữa <P> và <p>
<first> khác với <FIRST>, khác với <First>
07.11.2014 83
Khoảng cách trắng trong PCDATA
Ví dụ:
<P>This is a parapraph. It has a whole bunch of space.</P>
Trong HTML, mọi khoảng cách trắng được xem là vô nghĩa sẽ bị cắt bỏ ra khỏi tư liệu khi nó được xử lý
07.11.2014 84
Khoảng cách trắng trong PCDATA
Trong XML, không có tính năng cắt bỏ khoảng trắng đối với PCDATA
Ví dụ:<paragraph>This is a parapraph. It has a whole
bunch of space.</paragraph>
Chú ý: trong IE 5 và IE 6 khoảng cách trắng sẽ được cắt bỏ hoặc có vẻ như vậy
Nguyên nhân: XML được biến đổi thành HTML để hiển thị
11/7/2014
29
07.11.2014 85
Thuộc tính
Ngoài các thẻ gán và thành phần, các tư liệu XML còn bao gồm các thuộc tính
Các thuộc tính là các cặp tên/giá trị đơn giản kết hợp với một thành phần
Giá trị của thuộc tính phải nằm trong dấu nháy
Một thành phần có thể có nhiều thuộc tính
07.11.2014 86
Thuộc tính
Không thể có nhiều thuộc tính trùng tên trên một thanh phần
07.11.2014 87
Thành phần thay thế thuộc tính
Một thuộc tính có thể được hiển thị như một thành phần con
11/7/2014
30
07.11.2014 88
Thuộc tính thay thế thành phần
Môt thành phần con có thể hiển thị như một thuộc tính
07.11.2014 89
Khai báo XML
Chứa những thông tin cho bộ xử lý, đặc biệt là sử dụng XML-Version và Mã hóa
Phải luôn xuất hiện ở dòng đầu tiên của tư liệu
<?xml version='1.0' encoding='UTF-16' standalone=‘yes‘?>
<name nickname='Shiny John'>
<first>John</first>
<!—John lost his middle name in a free-->
<middle/>
<last>Doe</last>
</name>
07.11.2014 90
Khai báo XML
version(bắt buộc): Sử dụng XML-Version, version hiện tại là `1.0`
standalone(tuỳ chọn): nó phải là yes hoặc no
encoding(tuỳ chọn): Sử dụng mã hoá của tư liệu XML
<?xml version='1.0' encoding='UTF-16' standalone='yes'>
11/7/2014
31
07.11.2014 91
Khai báo XML: Mã hoá
ASCII (American Standard Code for Information Interchange) là lược đồ mã hoá 7 bít và 8 bít.
7-bit-ASCII phủ 128 ký tự với chỉ một phần nhỏ của những ký tự sử dụng trên thế giới
ASCII 8-bit dùng một byte (8 bit) cho mỗi ký tự
Chỉ có thể lưu trữ 256 giá trị khác nhau, do do đó giới hạn ASCII ở mức 256 ký tự.
Tổng hợp: ASCII chỉ có thể điều quản một tập con nhỏ trong số các ngôn ngữ trên thế giới
07.11.2014 92
Khai báo XML: Unicode
Unicode phủ 65356 ký tự cho tất cả những ký tự được sử dụng trên thế giới
Có 2 phương pháp mã hoá ký tự chính cho Unicode: UTF-16 và UTF-8
UTF-8 hay UTF-16 bao hàm đủ các ký tự khả dĩ để chứa tất cả các ký tự trong bất kỳ ngôn ngữ nào của loài ngươì, UTF-8 sử dụng mã hoá thông minh hơn
7-bit ASCII là một phần của UTF-8
Với các văn bản bằng tiếng anh, ở đó hầu hết các ký tự hợp với phương pháp mã hoá ký tự ASCII, UTF-8 có thể cho ra các kích cỡ tập tin nhỏ hơn, nhưng với văn bản trong các ngôn ngữ khác, UTF-16 thường nhỏ hơn
07.11.2014 93
Khai báo XML: Mã hoá
Tất cả các bộ xử lý XML phải dùng Unicode nội bộ
Thuộc tính encoding chỉ định, với trình phân ngữ XML, phương pháp mã hoá ký tự mà văn bản tuân thủ
Nếu không có phương pháp mã hoá nào chỉ định, UTF-16 hoặc UTF-8 được mặc nhận
Nếu không có phương pháp mã hoá nào được chỉ định, và tư liệu không thuộc UTF-8 hoặc UTF-16, điều đó sẽ dẫn đến một lỗi
11/7/2014
32
07.11.2014 94
Không gian tên
(Namespace)
07.11.2014 95
Nội dung
Cần cho không gian tên
Cú pháp không gian tên
Không gian tên mặc định
Bộ xử lý (Parser) và không gian tên
07.11.2014 96
Cần cho không gian tên
Một tư liệu XML có thể dùng nhiều ngữ vựng XML
Ví dụ: XHTML có thể chứa cả hai phần tử SGV và
MathML
XSL stylesheet có thể chứa cả hai phần tử XSLT và kết quả cây
Như thế nào để tránh sự va chạm tên?
Cả hai SVG và MathML “set“ phần tử
11/7/2014
33
07.11.2014 97
Cần cho không gian tên
07.11.2014 98
Tiếp tục
07.11.2014 99
Cần cho không gian tên
Thay đổi tên phần tử (để tránh sự va chạm) không là một sự tùy chọn quy ước
Một vài sự va chạm không thể tránh được: Nếu cả hai ngữ vựng tiêu chuẩn
SVG “set“ với MathML “set“
Một nhóm tên sẽ hữu dụng trong bất kỳ trường hợp nào Bộ máy xử lý XSLT cần biết loại nào là lệnh XSLT
và loại nào là phần tử kết quả cây
11/7/2014
34
07.11.2014 100
Ví dụ không gian tên
07.11.2014 101
Cú pháp không gian tên
Hai phần:
Mô tả không gian tên
Thành phần và Thuộc tính
07.11.2014 102
Mô tả không gian tên
Một prefix được liên kết với một URI
Sự liên kết này đựơc định nghĩa như một thuộc tính trong một thành phần
xmlns:prefix
xmlns là một từ khóa không gian tên. Prefix là người dùng định nghĩa
<classes xmlns:XMLclass=“http://www.brandeis.edu/rseg-0151-g“>
<XMLclass:syllabus>
...
<XMLclass:syllabus>
</classes>
11/7/2014
35
07.11.2014 103
Mô tả không gian tên
Có thể mô tả trong thành phần gốc hoặc trong thành phần phân cấp thấp hơn
Cùng prefix có thể được tái định nghĩa trong cùng một tư liệu
Mô tả scope của không gian tên thì nằm trong thành phần nơi nó được định nghĩa
07.11.2014 104
Thành phần và thuộc tính với prefix không gian tên
Ví dụ
XMLclass:syllabus
svg:set
mathml:set
prefix:local part prefix đồng nhất không gian tên một thành phần
và thuộc tính phụ thuộc
local part đồng nhất một phần thành phần hay thuộc tính trong không gian tên
Tên hạn định
07.11.2014 105
Thành phần và thuộc tính với prefix không gian tên
Prefix
Có thể được hình thành từ bất kỳ ký tự quy tắc tên của XML ngoại trừ “:“
“xml“ (trong bất kỳ trường hợp kết hợp nào) được dự phòng
Local part
Không thể chứa “:“
11/7/2014
36
07.11.2014 106
Không gian URI
URI không thể là prefix “/“, “%“, và “~“ không hợp quy tắc trong
tên phần tử
URI có thể được chuân hóa trong khi prefix chỉ là quy ước
URI chỉ là đồng nhất URI không phải là dạng “http“
URI không phải được giải quyết
Nó thì như “một giá trị hằng“
07.11.2014 107
Không gian tên mặc định
Biểu thị với xmlns thuộc tính với không prefix
Chỉ cung cấp đến thành phần unprefix và những thành phần con cháu của nó
Chỉ cung cấp đến những thành phần không thuộc tính
07.11.2014 108
Không gian tên mặc định
11/7/2014
37
07.11.2014 109
Bộ xử lý và không gian tên
Không gian tên là sự suy nghĩ sau của XML 1.0
Tình trạng tương thích đã qua SAX 1.0 và bộ xử lý DOM bậc 1 (1.0)
không nhận biết được không gian tên
Chúng nó vẫn đọc không gian tên-khả năng tư liệu XML
Bây giờ SAX 2.0 và bộ xử lý DOM bậc 2 nhận biết được không gian tên
07.11.2014 110
XML hợp lệ cơ bản (Document Type Definitions-DTD)
07.11.2014 111
Nội dung
Tại sao lại cần các DTD, và các lợi ích khi dùng chúng
Cách viết DTD đơn giản
Cách dùng các DTD
11/7/2014
38
07.11.2014 112
XML và DTDs
DTD (Document Type Definition) miêu tả cấu trúc của một hay nhiều tư liệu XML. Đặc biệt, một DTD miêu tả:
Thành phần (elements)
Thuộc tính (Attributes), và
Thực thể (Entities)
Tư liệu XML tề chỉnh (well-formed) là tư liệu thỏa một số quy tắc ngữ pháp nhất định được nêu khái quát trong định chuẩn XML 1.0
Tư liệu XML hợp lệ là các tư liệu tề chỉnh cũng tuân thủ các quy tắc cú pháp, cấu trúc và các quy tắc khác như định nghĩa trong một DTD
07.11.2014 113
Tại sao lại cần các DTD? Mọi thay đổi đối với cấu trúc dữ liệu XML phải được thực
hiện trong ba nơi: định chuẩn, các ứng dụng nhận và gửi. Đây có thể là cách tiếp cận hiệu quả, năng suất cao, để điều quản dữ liệu XML trong một số tình huống hạn chế
Tuy nhiên, trong các trường hợp ở đó dữ liệu XML được chia sẻ rộng rãi hơn việc duy trì các chức năng này trong mỗi và mọi ứng dụng đã trở thành cơn ác mộng bùng nổ
Việc tách biệt phần mô tả dữ liệu XML với các ứng dụng riêng lẻ cho phép tất cả các ứng dụng hợp tác chia sẻ một phần mô tả dữ liệu đơn lẻ, có tên là từ vựng XML
Một nhóm tư liệu XML chia sẻ một từ vựng XML chung được gọi là một kiểu tư liệu[document type], và mỗi tư liệu riêng lẻ tuân thủ một kiễu tư liệu được gọi là một minh dụ tư liệu[document instance]
07.11.2014 114
Trình phân ngữ (Parsers)
Trình phân ngữ XML (XML parser) là bộ xử lý XML để bảo đảm một tư liệu XML tề chỉnh: Một bộ xử lý phổ biến hiện tại là DOM
(Document Object Model) và SAX (Simple API for XML)
Một trình phân ngữ phê chuẩn (validating parser) là bộ xử lý XML. Tiến trình phê chuẩn này được hoàn thành bằng cách so sánh nội dung của tư liệu XML với một tập mẫu kết hợp dưới dạng một DTD Hầu hết các browser không dùng các validating
parser
11/7/2014
39
07.11.2014 115
Một ví dụ về XML<novel>
<foreword><paragraph>This is the great American novel.</paragraph>
</foreword><chapter number="1">
<paragraph>It was a dark and stormy night.</paragraph><paragraph>Suddenly, a shot rang out!</paragraph>
</chapter></novel>
Một tư liệu XML chứa (và DTD miêu tả): Thành phần, là novel và paragraph, bao gôm thẻ và nội dung Thuộc tính, chính là number = `1`, bao gồm tên và giá trị Thực thể (không sử dụng trong ví dụ này)
07.11.2014 116
Một ví dụ của DTD
<!DOCTYPE novel [<!ELEMENT novel (foreword, chapter+)><!ELEMENT foreword (paragraph+)><!ELEMENT chapter (paragraph+)><!ELEMENT paragraph (#PCDATA)><!ATTRIBUTE chapter number CDATA #REQUIRED>
]>
Một novel bao gồm một foreword và một hay nhiều chapter, trong đó
Một foreword bao gồm một hay nhiều paragraph Một chapter bap gồm một hay nhiều paragraph Một paragraph bao gồm parsed character data (văn
bản không thể chứa bất kỳ một thành phần nào) Mỗi chapter phải có một thuộc tính number
07.11.2014 117
Các khai báo kiểu thành phần (Element)
Hậu tố (Suffixes):
? tuỳ chọn foreword?
+ Một hoặc nhiều chapter+
* zero hoặc nhiều appendix*
Toán tử (Separators):
, tuần tự foreword?, chapter+
| chọn section|chapter
Nhóm (Grouping)( ) grouping (section|chapter)+
11/7/2014
40
07.11.2014 118
Phạm trù EMPTY
Cú pháp: <!ELEMENT name category>
Tham số name là tên kiểu thành phần đang được mô tả
Tham số category mô tả loại nội dung có thể xuất hiện bên trong các thành phần của tên đã cho. Nó có thể rỗng (EMPTY):
Trong DTD: <!ELEMENT br EMPTY>
Trong XML: <br></br> hoặc <br />
Trong XML, thành phần rỗng có thể không có nội dung ở giữa thẻ đầu và thẻ cuối
Một thành phần rỗng có thể có thuộc tính
07.11.2014 119
Phạm trù ANY
Cú pháp: <!ELEMENT name category>
Tham số category có thể là ANY: Điều này có thể bao gồm dữ liệu ký tự, các thành phần
khác, các chú giải, các PI, các thành phần CDATA
Phải sử dụng thật dè sẻn loại thành phần này, bởi sẽ làm mất hầu như toàn bộ tính năng kiểm tra tính hợp lệ.
Tham số category có thể là (#PCDATA): Trong DTD: <!ELEMENT paragraph (#PCDATA)>
Trong XML: <paragraph>A shot rang out!</paragraph>
Phải có dấu ngoặc đơn
Các thành phần trong phạm trù nội dung PCDATA chỉ cho phép dữ liệu ký tự
07.11.2014 120
Thành phần với thành phần con
Tham số category có thể miêu tả một hay nhiều con:
<!ELEMENT novel (foreword, chapter+)>
Phải có dấu ngoặc đơn, thậm chí nó chỉ có một con
Khoảng trắng không tồn tại sau khi mở ngoặc
Dấu phẩy (,) giữa các thành phần nghĩa là các thành phần con phải xuất hiện theo thứ tự đã chỉ định
`|` sổ dọc nghĩa là chỉ một trong số thành phần con được phép
Tất cả thành phần con phải tự định nghĩa
Thành phần con có thể có thành phần con (phân cấp)
Dấu ngoặc đơn có thể được dùng để nhóm:
<!ELEMENT novel (foreword, (chapter+|section+))>
11/7/2014
41
07.11.2014 121
Thành phần với nội dung hỗn hợp(mixed content)
#PCDATA miêu tả thành phần với chỉ dữ liệu ký tự (character data)
#PCDATA có thể được dùng trong trong một nhóm `hay`: <!ELEMENT note (#PCDATA|message)*>
Đây được gọi là nội dung hỗn hợp
Những quy tắc bắt buộc:
#PCDATA là mục đầu tiên
Toán tử phải là sổ dọc `|`
Nhóm phải được đánh dấu (zero hay nhiều)
07.11.2014 122
Tên và không gian tên
Tất cả các tên của thành phần, thuộc tính và thực thể, trong cả hai DTD và XML, theo những quy tắc sau: Tên phải bắt đầu bắng 1 chử cái hay dấu gạch dưới
(_) Tên chỉ có thể chứa những chữ cái, các con số, dấu
chấm, dấu gạch ngang(-), dấu gạch dưới và dấu hai chấm(và, đối với ngôn ngữ nước ngoài, kết hợp với những ký tự và sự mở rộng)
DTD không liên quan đến không gian tên. Dấu hai chấm trong DTD chỉ là một phần của tên 2 ví dụ khác nhau nhưng đều hợp lệ:
<!ELEMENT chapter (paragraph+)> <!ELEMENT myBook:chapter (myBook:paragraph+)>
Tránh sử dụng dấu hai chấm trong tên, trừ trường hợp muốn hiển thị không gian tên
07.11.2014 123
Một ví dụ DTD mở rộng
<!DOCTYPE novel [<!ELEMENT novel
(foreword, chapter+, biography?, criticalEssay*)>
<!ELEMENT foreword (paragraph+)><!ELEMENT chapter (section+|paragraph+)><!ELEMENT section (paragraph+)><!ELEMENT biography(paragraph+)><!ELEMENT criticalEssay (section+)><!ELEMENT paragraph (#PCDATA)>
]>
11/7/2014
42
07.11.2014 124
Thuộc tính và thực thể(Attributes and entities)
Ngoài thành phần, DTD còn mô tả thêm thuộc tính và thực thể
Các thuộc tính thành phần được mô tả bằng khai báo danh sách thuộc tính: Trong XML: <dog name="Spot" age="3"></dog>
Trong DTD: <!ATTLIST dogname CDATA #REQUIREDage CDATA #IMPLIED >
Một thực thể miêu tả văn bản để thay thế:
Trong XML: ©right;
Trong DTD: <!ENTITY copyright "Copyright Dr. Dave">
07.11.2014 125
Thuộc tính
Khai báo thuộc tính như sau:
<!ATTLIST element-namename type requirementname type requirement>
Trong đó, tham số name-type-requirement
Tham số element-name là tên kiểu thành phần kết hợp
Tham số name là tên thuộc tính riêng lẻ
Mỗi thành phần có type, như CDATA (character data)
Mỗi thành phần được yêu cầu, tuỳ chọn hay cố định
Trong XML, thuộc tính có thể xảy ra trong bất kỳ câu lệnh
07.11.2014 126
Kiểu thuộc tính quan trọng
Có 10 kiểu thuộc tính
Những thuộc tính quan trọng:
CDATA Dữ liệu ký tự
(man|woman|child) Giá trị là một trong một loạt
ID Giá trị là dấu định danh duy nhất
Điều này là một chuỗi văn bản tuân thủ tất cả các quy tắc đặt tên XML
NMTOKEN Một thẻ bài tên Một chuỗi văn bản tuân thủ các quy tắc đặt tên XML
Ngoại trừ ký tự đầu tiên của tên có thể là một ký tự tên hợp lệ bất kỳ
11/7/2014
43
07.11.2014 127
Kiểu thuộc tính ít quan trọng hơn
IDREF Một tham chiếu đến thành phần có một thuộc tính ID có cùng giá trị như của IDREF
IDREFS Một danh sách IDREFs được định biên bởi khoảng cách trắng
NMTOKENS Một danh sách NMTOCKENs được định biên bởi khoảng trắng
ENTITY Tên của một thực thể định nghĩa sẵn ENTITIES Một danh sách các tên ENTITY được
định biên bởi khoảng cách trắng NOTATION Giá trị thuộc tính phải là một kiểu ký
hiệu
07.11.2014 128
Yêu cầu (Requirements)
Gọi lại thuộc tính dạng<!ATTLIST element-name name type requirement>
Requirement:
Default value: Ví dụ: <!ATTLIST degree CDATA "PhD">
#REQUIRED Thuộc tính phải có mặt
#IMPLIED Thuộc tính tuỳ chọn
FIXED “value“ Thuộc tính phải có gán giá trị
Đặc biệt trong XML, cùng giá trị phải được sử dụng
07.11.2014 129
Thực thể (Entities)
Có 5 thực thể tiền định nghĩa: <, >, &, ", và '
Thực thể được định nghĩa trong DTD:<!ENTITY copyright "Copyright Dr. Dave">
Ví dụ sử dụng trong XML:This document is ©right; 2002.
Thực thể không nên mâu thuẫn với tham chiếu ký tự là giá trị số giữa & và #
Ví dụ: &233#; hay &xE9#; để chỉ ký tự é
11/7/2014
44
07.11.2014 130
Một ví dụ khác:XML
<?xml version="1.0"?><!DOCTYPE myXmlDoc SYSTEM
"http://www.mysite.com/mydoc.dtd"><weatherReport>
<date>05/29/2002</date><location>
<city>Philadelphia</city>, <state>PA</state><country>USA</country></location>
<temperature-range><high scale="F">84</high><low scale="F">51</low>
</temperature-range></weatherReport>
07.11.2014 131
Một ví dụ cho DTD
<!ELEMENT weatherReport (date, location,temperature-range)>
<!ELEMENT date (#PCDATA)><!ELEMENT location (city, state, country)><!ELEMENT city (#PCDATA)><!ELEMENT state (#PCDATA)><!ELEMENT country (#PCDATA)><!ELEMENT temperature-range
((low, high)|(high, low))><!ELEMENT low (#PCDATA)><!ELEMENT high (#PCDATA)><!ATTLIST low scale (C|F) #REQUIRED> <!ATTLIST high scale (C|F) #REQUIRED>
07.11.2014 132
Kết hợp DTD với một tư liệu XML(Inline DTDs)
Nếu một DTD kết hợp với một tư liệu XML, nó có thể được đặt trực tiếp trong tư liệu:
<?xml version="1.0"><!DOCTYPE myRootElement [
<!-- DTD content goes here -->]><myRootElement>
<!-- XML content goes here --></myRootElement>
Mỗi tư liệu XML có thể kết hợp với một và chỉ một DTD.
11/7/2014
45
07.11.2014 133
DTD bên ngoài (extenal DTDs)
DTD bên ngoài được mô tả với lệnh SYSTEM hoặc PUBLIC:
<!DOCTYPE myRootElement SYSTEM"http://www.mysite.com/mydoc.dtd">
Tên xuất hiện sau DOCTYPE phải trùng với tên thành phần gốc của tư liệu XML
Dùng SYSTEM cho DTD bên ngoài để tự định nghĩa, và dùng PUBLIC cho DTD công cộng
DTD bên ngoài chỉ có thể tham chiếu đến URL Tập tin thường dùng tên đuôi tập tin .dtd cho DTD bên
ngoài DTD bên ngoài luôn thích hợp dùng hơn trong inline
DTDs, từ đây chúng có thể được dùng nhiều hơn một tư liệu
07.11.2014 134
Các giới hạn của DTD
Vài giới hạn của DTD bao gồm:
Các DTD không thể mở rộng
Mỗi tư liệu chỉ có thể kết hợp với một DTD
Các DTD không làm việc với các không gian tên XML
Định kiểu dữ liệu rất yếu
Các phần mô tả nội dung hạn chế
Không có sự thừa kế đối tượng kiểu OO
Một tư liệu có thể chạy đè/bỏ qua một DTD bên ngoài dùng tập con nội bộ
Cú pháp phi XML
Không hổ trợ DOM
Tương đối ít công cụ cũ, đắt tiền hơn
07.11.2014 135
Tính hợp lệ
Opera 5 và Internet Explorer 5 có thể kiểm tra tính hợp lệ XML đối với một DTD nội bộ
IE cung cấp thông tin lỗi tốt hơn
Opera chỉ bỏ qua DTD bên ngoài
IE sẽ quan sát DTD bên ngoài để báo lỗi
jEdit với XML plugin sẽ kiểm tra việc cấu trúc tề chỉnh và (nếu là DTD inline) sẽ kiểm tra tính hợp lệ của XML mổi lần được trữ http://www.jedit.org/
11/7/2014
46
07.11.2014 136
XML hợp lệ: các giản đồ (XML Schema)
07.11.2014 137
Nội dung
Mở đầu Kiểu đơn giản Kiểu phức Thành phần với thuộc tính Những sự kiện Kiểu liệt kê (List type) Kiểu hợp nhất (Union type) Explicit với implicit Nội dung thành phần Chú giải (annotation) Lựa chọn và nhóm (Choices và group)
07.11.2014 138
Mở đầu
Cung cấp ngôn ngữ lược đồ mạnh và linh động hơn DTD
Hiển thị cú pháp tư liệu XML trong ngôn ngữ XML
Mọi công cụ XML có thể được hiển thị và điều tác
Hổ trợ kiểu dữ liệu phi văn bản
Quan trọng cho B2B và thương mại điện tử
Xử lý những cú pháp phức tạp
11/7/2014
47
07.11.2014 139
Hợp lệ so với lược đồ hợp lệ
Giản đồ XML (XML schema) không ở trong phần của XML 1.0
Tư liệu XML được hợp lệ với DTD hợp lệ
Tư liệu XML xác nhận là một XML schema thì là một lược đồ hợp lệ (schema-valid)
Tư liệu XML xác nhận là một phần của XML schema thì được gọi là “instance document“ của schema
07.11.2014 140
Những kiểu dữ liệu trong XML Schema
Kiểu dữ liệu là kiểu nội dung mà thành phần chứa
XSD cung cấp một bảng liệt kê của những kiểu dữ liệu được định nghĩa trước
07.11.2014 141
Định nghĩa với khai báo (Definition vs. Declarations)
11/7/2014
48
07.11.2014 142
Định nghĩa và khai báo
Định nghĩa:
Tạo một kiểu mới (new type) cho cả hai kiểu dữ liệu đơn và phức
Khai báo:
Cho phép thành phần và thuộc tính với những kiểu và tên (cho cả hai kiểu đơn và phức) xuất hiện trong document instance
07.11.2014 143
Ví dụ
07.11.2014 144
Kiểu dữ liệu trong lược đồ:
Kiểu đơn giản và Kiểu phức hợp (Schema Data Types:
Simple Types & Complex Types)
11/7/2014
49
07.11.2014 145
Kiểu dữ liệu trong lược đồ (Schema Data Type)
Kiểu đơn (Simple type):
Không có thành phần con (sub-element)
Không có “thành phần“ thành phần con
Không có “thuộc tính“ thành phần con
Kiểu được định nghĩa trước hoặc mở rộng từ kiểu được định nghĩa trước
Kiểu phức (Complex type)
Có “thành phần“ thành phần con hoặc “thuộc tính“ thành phần con
07.11.2014 146
Kiểu đơn
(Simple Types)
07.11.2014 147
Kiểu đơn định nghĩa trước (Predefined Simple Types)
String, CDATA, token, byte, unsignedByte, binary, integer, positiveInteger, negativeInteger, nonNegativeInteger, nonPositiveInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, boolean, time, timeInstant, timePeriod, timeDuration, date, month, year, century, recurringDay, recurringDate, recurringDuration, Name, Qname, NCName, uriReference, language, ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS
11/7/2014
50
07.11.2014 148
Ví dụ của Predefined Simple Types
07.11.2014 149
Kiểu đơn thừa kế (Derived Simple Type)
Mở rộng từ kiểu đơn hiện có (predefined hay derived )
Đặc trưng một kiểu đơn hiện có hạn chế: Phạm vi hợp lệ của giá trị cho kiểu mới là việc
chọn của một trong những kiểu đã hiện có
Kiểu hiện có được gọi là kiểu cơ sở
Dùng thành phần hạn chế thông qua giới hạn kiểu (facets) để giới hạn phạm vi của giá trị
Facets là những nguyên tắc của sự hạn chế
07.11.2014 150
Ví dụ của kiểu đơn thừa kế 1 (phạm vi số)
<xsd:simpleType name=“myInteger“><xsd:restriction base=“xsd:integer“>
<xsd:minInclusive value=“10000“>
<xsd:maxInclusive value=“99999“>
</xsd:restriction>
</xsd:simpleType>
Định nghĩa kiểu myInteger mà phạm vi giá trị của nó từ 10000 đến 99999
minInclusive và maxInclusive là facets mà có thể được sử dụng trong kiểu integer
11/7/2014
51
07.11.2014 151
Ví dụ của kiểu đơn thừa kế 2 (Regular expression)
<xsd:simpleType name=“SKU“><xsd:restriction base=“xsd:string“>
<xsd:pattern value=“\d{3}-[A-Z]{2}“/>
</xsd:restriction>
</xsd:simpleType>
Định nghĩa kiểu mới là SKU
pattern là facet mà được sử dụng trong string Regular expression
Ba số, tiếp theo là dấu gạch ngang, tiếp theo là hai chữ cái trong upper-case ASCII
07.11.2014 152
Ví dụ của kiểu đơn thừa kế 3 (Enumeration)
<xsd:simpleType name=“USState“>
<xsd:restriction base=“xsd:string“>
<xsd:enumeration value=“AK“>
<xsd:enumeration value=“AL“>
<xsd:enumeration value=“AR“>
<!–- and so on ..-->
</xsd:restriction>
</xsd:simpleType>
enumeration facet giới hạn kiểu đơn để đặt một giá trị riêng biệt, rỏ ràng
07.11.2014 153
Kiểu phức
(Complex Types)
11/7/2014
52
07.11.2014 154
Kiểu phức (Complex Type)
Định nghĩa dùng thành phần “complexType“
Bao gồm một cách đặc trưng:
Khai báo thành phần (elementdeclarations)
Con trỏ quy chiếu (element references)
Khai báo thuộc tính (attributedeclarations)
07.11.2014 155
Ví dụ 1 về complexType
07.11.2014 156
Ví dụ 1 về complexType
Định nghĩa kiểu USAddress
Nó bao gồm 5 khai báo thành phần (element declarations) và một khai báo thuộc tính (attribute declaration)
Định nghĩa USAddress chỉ bao gồm những khai báo liên quan đến những kiểu đơn: string, decimal, và NMTOKEN
11/7/2014
53
07.11.2014 157
Ví dụ 2 về complexType
07.11.2014 158
Ví dụ 2 về complexType
Định nghĩa kiểu PurschaOrder
Bao gồm khai báo thành phần quy chiếu kiểu phức (element declarations referencing complex types) như USAddress, Items
Bao gồm khai báo thành phần quy chiếu kiểu đơn định nghĩa trước (element declarations referencing “pre-defined“ simple types): date
07.11.2014 159
Thành phần với thuộc tính
(Element vs. Attribute)
11/7/2014
54
07.11.2014 160
Thành phần với thuộc tính
Khai báo thành phần có thể quy chiếu cho cả hai kiểu phức lẫn kiểu đơn
Tất cả khai báo thuộc tính chỉ có thể quy chiếu cho kiểu đơn:
Bởi vì chúng nó không thể chứa những thành phần con khác
07.11.2014 161
Thuộc tính ref (ref Attribute)
Để sử dụng thành phần hay thuộc tính hiện có tương đối hơn sử dụng thành phần hay thuộc tính khai báo mới
Thành phần hiện có phải là global element -một thành phần mà được khai báo dưới thành phần gốc (root element)
07.11.2014 162
Ví dụ về ref
11/7/2014
55
07.11.2014 163
Những sự kiện
(Occurrences)
07.11.2014 164
Những sự kiện của thành phần
minOccurs
maxOccurs
fixed=“Hannah“
Nếu thành phần xuất hiện (tuỳ chọn), giá trị phải là “Hannah“, mặt khác giá trị được đặt là “Hannah“ bởi bộ xử lý (parser)
default=“Hannah“
Nếu thành phần xuất hiện (tuỳ chọn), giá trị được đặt là cái gì , mặt khác giá trị được đặt là “Hannah“ bởi bộ xử lý (parser)
07.11.2014 165
Ví dụ
11/7/2014
56
07.11.2014 166
Những sự kiện của thuộc tính
Thuộc tính có thể xảy ra một hay không bao gìơ xảy ra
Thuộc tính “use“
required
optional
fixed
default
Thuộc tính “value“
07.11.2014 167
Ví dụ
07.11.2014 168
Ví dụ
<xsd:complexType name=“USAddress“><xsd:requence base=“xsd:string“>
<xsd:element name=“name“ type=“xsd:string“><xsd:element name=“street“ type=“xsd:string“ >...
</xsd:requence><xsd:attribute name=“xsd:country“ type=“xsd:NMTOKEN“ used=“fixed“ value=“US“/>
</xsd:complexType> Sự xuất hiện của thuộc tính country là tuỳ chọn Giá trị của nó phải là US nếu nó xuất hiện Nếu nó không xuất hiện, bộ xử lý sẽ tạo một thuộc
tính country với giá trị US
11/7/2014
57
07.11.2014 169
Thuộc tính
Enumeration
Thành phần simpleType với thuộc tính cơ bản
Thuộc tính cơ bản đặt ra kiểu dữ liệu
07.11.2014 170
Một ví dụ hoàn chỉnh
07.11.2014 171
Ví dụ
11/7/2014
58
07.11.2014 172
Một ví dụ hoàn chỉnh(trang đầu tiên)
07.11.2014 173
Tiếp tục
07.11.2014 174
Kiểu danh sách
(List Type)ôi
11/7/2014
59
07.11.2014 175
Kiểu danh sách (List Type)
Tạo thành những chuỗi kiểu dữ liệu đơn nguyên tử (atomic simple type)
3 kiểu xây dựng danh sách: NMTOKENS, IDREFS, ENTITIES
Sử dụng kiểu danh sách định nghĩa: Mở rộng từ kiểu nguyên tử
facets length, minLength, maxLength,
enumeration
07.11.2014 176
Ví dụ kiểu danh sách
Lược đồ (schema)<xsd:simpleType name=“listOfMyIntType“>
<xsd:list itemType=“myInteger“/>
</xsd:simpleType>
Instance document<listOfMyIntType>20003 15037 95977
95945</listOfMyIntType>
07.11.2014 177
Kiểu danh sách với Facet<xsd:simpleType name=“USStateList“>
<xsd:list itemType=“USState“/></xsd:simpleType>
<xsd:simpleType name=“SIXUSStates“><xsd:restriction base=“USStateList“>
<xsd:length value=“6“/></xsd:restriction>
</xsd:simpleType> Định nghĩa một danh sách chính xác 6 tiêủ bang ở Mỹ
(SixUSStates), đầu tiên định nghĩa một kiểu danh sách mới được gọi là USStateList từ USState và sau đó mở rộng SixUSStates bởi USStateList hạn chế chỉ có 6 phần tử
<sixStates>PA CA NY LA AK</sixStates>
11/7/2014
60
07.11.2014 178
Kiểu hợp nhất
(Union Type)ôi
07.11.2014 179
Kiểu hợp nhất (Union Type)
Cho phép giá trị phần tử hay một thuộc tính để là một hay nhiều instance của một kiểu được vẽ từ sự hợp nhất của nhiều nguyên tử và những kiểu danh sách
facets: pattern và enumeration
07.11.2014 180
Kiểu hợp nhất cho Zipcodes
11/7/2014
61
07.11.2014 181
Explicit Type với Implicit
07.11.2014 182
Explicit Type với Implicit Explicit Type
Là một kiểu dữ liệu mà tên (name) được gán cho kiểu dữ liệu
Thành phần dùng kiểu dữ liệu được định nghĩa chung trong một phần khác nhau của thư mục
Hướng đối tượng trong cùng explicit type được dùng như kiểu dữ liệu cho những thành phần khác nhau
Implicit Type (kiểu không tên)
Dùng khi kiểu dữ liệu không được cần bởi nhiều thành phần
07.11.2014 183
Ví dụ của Explicit Type
11/7/2014
62
07.11.2014 184
Ví dụ của Implicit Type
07.11.2014 185
Nội dung thành phần
(Element Content)
07.11.2014 186
Nội dung thành phần
Nội dung của một thành phần có cấu trúc như thế nào
Có 3 phương pháp khác nhau:
Kiểu phức từ kiểu đơn
Nội dung hỗn hợp
Thành phần hỗn hợp với văn bản
Nội dung rỗng
11/7/2014
63
07.11.2014 187
Kiểu phức từ kiểu đơn
<xsd:element name=“internationalPrice“>
<xsd:complexType><xsd:simpleContent>
<xsd:extension base=“xsd:decimal“>
<xsd:attribute name=“currency“ type=“xsd:string“/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
simpleContent chi ra rằng mẫu nội dung của kiểu dữ liệu mới chỉ bao gồm văn bản và không có khai báo thành phần (element declaration)
07.11.2014 188
Nôi dung hỗn hợp
Thành phần con hỗn hợp với văn bản
<letterbody>
<salutation>Dear Mr<name>Robert Smith</name></satulation>Your order of<quantity>1</quantity><productName>Baby monitor</productName>shipped from our warehouse<shipDate>1999-05-21</shipDate>...
</letterbody>
07.11.2014 189
Nội dung hỗn hợp
11/7/2014
64
07.11.2014 190
Nội dung rỗng
Định nghĩa một kiểu dữ liệu mà nó không khai báo bất kỳ thành phần nào trong nội dung của nó
Mâũ nội dung của kiểu dữ liệu rỗng
07.11.2014 191
Nội dung rỗng 1
07.11.2014 192
Nội dung rỗng 2
complexContent
Để hạn chế hay mở rộng mẫu nội dung của kiểu phức
<xsd:restriction base=“xsd:anyType“>
11/7/2014
65
07.11.2014 193
Nội dung rổng 3
<xsd:element name=“internationalPrice“>
<xsd:complexType><xsd:simpleContent>
<xsd:extension base=“xsd:decimal“>
<xsd:attribute name=“currency“ type=“xsd:string“/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Một kiểu phức định nghĩa không có complexContentđược định nghĩa như ký hiệu đặc biệt cho nội dung phức mà hạn chế anyType
07.11.2014 194
anyType
07.11.2014 195
anyType
Kiểu dữ liệu cơ sở mà từ đó tất cả kiểu đơn và phức được mở rộng
Không ép buộc nội dung trong bất kỳ hướng nào
Kiêủ mặc định khi không kiểu được cho phép <xsd:element name=“anything“
type=“xsd:anyType“> giống như
<xsd:element name=“anything“/>
Dùng nhiều kiểu dữ liệu ép buộc hơn bất cứ khi nào có thể
11/7/2014
66
07.11.2014 196
Chú giải
(Annotation)
07.11.2014 197
Chú giải (Annotation)
Xuất hiện tại phần đầu của hầu hết các cấu trúc của lượt đồ
Có thể có 2 thành phần con Documentation
appInf
Documentation
Cho việc đọc tài liệu dể dàng
appInf
Đối với công cụ ứng dụng, stylesheets và những ứng dụng (application) khác
07.11.2014 198
Ví dụ
11/7/2014
67
07.11.2014 199
Lựa chọn và nhóm
(Choices & Group)
07.11.2014 200
Lựa chọn và Nhóm
Lựa chọn (choice):
Chỉ một con của nó xuất hiện trong một instance
Nhóm (group):
Nhóm các nhóm của thành phần
Sự bắt buộc xa hơn
sequence
Tất cả (all)
Xuất hiện zero hoặc một
Trong bất kỳ câu lệnh
07.11.2014 201
Choice và Sequence Group
11/7/2014
68
07.11.2014 202
Ví dụ cho all
07.11.2014 203
Thuộc tính nhóm (attribute group)
Định nghĩa thuộc tính nhóm dùng thành phần attributeGroup
Quy chiếu trong nhiều định nghĩa và khai báo
Phát triển khả năng dễ đọc và sự duy trì
Chúng nó phải xuất hiện tại phần cuối của định nghĩa kiểu dữ liệu phức hợp
07.11.2014 204
Ví dụ của attributeGroup
11/7/2014
69
07.11.2014 205
CSS
07.11.2014 206
Nội dung
CSS với XML-FO
Lịch sử CSS
Cú pháp CSS
07.11.2014 207
XML và sự trình bày
Tài liệu XML chỉ bao gồm nội dung
Nội dung cần được định dạng cho sự trình bày
Hai lựa chọn cho sự trình bày
CSS (Cascading Stylesheets)
XSL-FO (XSL Formatting Object)
11/7/2014
70
07.11.2014 208
CSS
Không cú pháp XML
Mô tả sự xuất hiện của một phần thành phần trong tư liệu
Không truyền tải
Dữ liệu trong tài liệu được trình bày nhiều hay ít hơn như nó xuất hiện trong tài liệu XML
CSS không thay đổi sự đánh dấu của tài liệu XML
07.11.2014 209
XSL-FO
Cú pháp XML
Miêu tả layout of text trên trang giấy
Có những thành phần cho trang, bố cục của văn bản và hình ảnh,...
Taì liệu XML được truyền tải vào trong XSL-FO mà được trả lại bởi ứng dụng hiển thị
07.11.2014 210
Ba cấp của CSS
CSS1 W3C recommendation năm 1996
Chỉ cho HTML
Được đánh giá chưa hoàn chỉnh
Việc thực thi browser chưa nhất quán
CSS2 Recommendation tại lúc này
Tài liệu XML và HTML
CSS3 (tương lai)
11/7/2014
71
07.11.2014 211
Cú pháp CSS
Không cú pháp XML nhưng không quá khó
Danh sách những phần tử với dạng thông tin
Cho những phần tử có nhận thức về không gian tên, tên hoàn toàn bổ nghĩa được sử dụng
07.11.2014 212
Ví dụ về tài liệu XML
07.11.2014 213
Ví dụ về tài liệu XML (tt)
11/7/2014
72
07.11.2014 214
Ví dụ về CSS Stylesheet
07.11.2014 215
Quy tắc style
Mỗi tên quy tắc đến thành phần hay đặt thành phần được theo dạng tính chất đính kèm bởi {}
Mỗi dạng tính chất có tên và giá trị
Trường hợp không có ý
Không phải tất cả những phần tử có quy tắc style
Những phần tử con thừa hưởng những quy tắc style của cha
Giá trị mặc định vừa phải được cung cấp
07.11.2014 216
Stylesheet và tài liệu XML
CSS Stylesheet được tham dự đầu tiên cho việc sử dụng trong web-pages
Web-browser tìm kiếm cấu trúc thực thi xml-stylesheet trong tài liệu XML
<?xml-stylesheet type=“text/css“ href=“recipe.css“?>
6 pseudo attributes:
type, href, charset, title, media, alternate
11/7/2014
73
07.11.2014 217
Pseudo Attributes
Type: Stylesheet`s MIME media type
text/css cho CSS
text/xml (not text/xsl) cho XSL
href: URL tương đối và tuyệt đối của stylesheet
charset: Tên của đặc tính đặt trong stylesheet được viết
title: tên của stylesheet
07.11.2014 218
Pseudo Attributes
media: Media type được nhằm vào bởi stylesheet
screen, tty, projection, handheld, print, brailled, aural, all
alternate: nói rằng stylesheet lần lượt hay đầu tiên
07.11.2014 219
Selectors
Chỉ ra nhưng thế nào để lựa chọn phần tử cho kiểu dạng
Hầu hết các tên phần tử và danh sách của phần tử
CSS cung cấp những lựa chọn căn bản khác
Không mạnh như Xpath
11/7/2014
74
07.11.2014 220
Chọn lựa phần tử
07.11.2014 221
Lựa chọn thuộc tính
Những dấu ngoặc vuông cho phép chọn những phần tử với một phần của thuộc tính hay giá trị thuộc tính
step[tùy chọn]{display:none}-dấu tất cả phần tử bậc thang mà có thuộc tính tự chọn
*[optional]{display:none}
step[optional=“yes“]{display:none}
07.11.2014 222
Display Property
11/7/2014
75
07.11.2014 223
Font Property
07.11.2014 224
Text Property
07.11.2014 225
Color Property
11/7/2014
76
07.11.2014 226
XSLT
07.11.2014 227
Nội dung
Khái niệm: XSL, XSLT, XSL-FO
Tại sao truyền tải
Mô hình điều hành của XSLT
XSLT Stylesheet Language
template
value-of
apply-templates
for-each
if
when, choose, otherwise
sort
filtering
07.11.2014 228
Thuật ngữ
11/7/2014
77
07.11.2014 229
XSL
eXtensible Stytesheet Language
Một ngôn ngữ cho stylesheet diễn đạt
Làm thành 2 phần
XSL Transformation(XSLT)
XSL Formatting Object (XSL-FO)
07.11.2014 230
Truyền tải
Truyền tải tài liệu XML vào trong
Một tài liệu XML khác
XHTML
WML
Tài liệu HTML
Văn bản
XSLT
Kiểu mẫu W3C cho sự truyền tải XML
07.11.2014 231
Tại sao lại truyền tải?
11/7/2014
78
07.11.2014 232
Hai điểm hiển thị của XML
Trình bày theo hướng phổ biến (POP) Hữu dụng cho Browsers và Editors
Thường dùng cho dữ liệu mà sẽ được dùng bởi con người
Thông điệp hướng theo Middleware (MOM) Hữu ích cho sự thay đổi dữ liệu từ máy
này đến máy khác
Sự đàm thoại từ Business này đến Business khác là một ví dụ hay nhất
07.11.2014 233
Sự quan trọng của sự truyền tải
XSLT thì hữu ích nhiều đến:
Thông tin truyền tải vào trong dạng tầm nhìn trong Browser (POP)
Dữ liệu Business truyền tải giữa những mô hình nội dung (MOM)
07.11.2014 234
XSL trong POP
Tài liệu XML tách biệt nội dung từ sự trình bày
Sự truyền tải có thể được tạo mẫu (hoàn lại, hiển thị) những tài liệu XML
Một kỹ thuật mẫu chung hiển thị XML trong dạng HTML
11/7/2014
79
07.11.2014 235
XSLT trong POP
07.11.2014 236
XSLT trong MOM
Sự quan trọng cho eCommerce, B2B/EDI và sự thực thi nội dung động
Mô hình nội dung khác nhau
Mối quan hệ cấu trúc khác nhau
Những ngữ vựng khác nhau
07.11.2014 237
XSLT trong MOM
11/7/2014
80
07.11.2014 238
XSLT-Truyền tải dữ liệu
07.11.2014 239
Mô hình điều hành XSLT
07.11.2014 240
Mô hình điều hành XSLT
11/7/2014
81
07.11.2014 241
XSLT Processor
Một phần của software Đọc một XSLT stylesheet và nhập liệu tài
liệu XML
Chuyển đổi tài liệu nhập vào trong tài liệu xuất
Qua cấu trúc cơ sở stylesheet được đưa
Thỉnh thoảng gọi stylesheet processor
07.11.2014 242
Ví dụ của XSLT processor
Xây dựng trong browser
IE 5.5 (không phù hợp với mẫu XSLT)
Xây dựng trong web hay application server
Apache Cocoon
Đứng một mình
Michael Kay ‘s SAXON
Apache.org‘s Xalan
07.11.2014 243
XSL Stylesheet
Tài liệu XML đích thức
Đặc trưng của thành phần gốc:
stylesheet hay biến đổi
Cả hai được định nghĩa trong mẫu không gian tên XSLT
http://www.w3c.org/XSL/Transform
xsl như tiền tố thông lệ
XSLT processtor nên phải hiểu cả hai
11/7/2014
82
07.11.2014 244
Ví dụ XSLT 0
07.11.2014 245
Ví dụ tài liệu XML
07.11.2014 246
Tối thiểu nhưng XSLT stylesheet đầy đủ
11/7/2014
83
07.11.2014 247
Kết quả sự thực thi của XSLT
07.11.2014 248
Giải thích kết quả
Đưa stylesheet rỗng vào bất kỳ tư liệu XML nào:
Những thành phần được đặt ngang liên tiếp
Nội dung của mỗi thành phần được đặt trong xuất
Thuộc tính không được đặt ngang
Xử lý mặc định
Không có bất kỳ template đặc biệt nào XSLT processor quay lại xử lý mặc định
Cần cho những template
07.11.2014 249
Cấu trúc cơ sở xml-stylesheet
11/7/2014
84
07.11.2014 250
Cấu trúc cơ sở thực thi xml-stylesheet
Bao gồm như phần của tài liệu XML
Báo cho XML-aware browser nơi tìm thấy stylesheet kết hợp
<?xml version=“1.0“>
<?xml-stylesheet
type=“text/xml“
href=http://www.oreilly.com/styles/people.xsl?>
<people>
......
07.11.2014 251
Template
07.11.2014 252
Templates
Theo dỏi việc xuất được tạo từ việc nhập
xsl:template dạng thành phần
Thuộc tính match bao gồm một Xpath expression
Xpath expression đồng nhất input node set mà nó so khớp
Đối với mỗi node trong input node set, nội dung template (những thứ giữa thẻ xsl:template) được minh dụ hóa và được nhập vào cây xuất
11/7/2014
85
07.11.2014 253
Ví dụ XSLT 1
07.11.2014 254
XSLT stylesheet 1 rất đơn giản
<?xml version=“1.0“>
<xsl:stylesheet version=“1.0“
xmlns:xsl=http://www.w3c.org/1999/XSL/Transform>
<xsl:template match=“people“>
</xsl:template>
</xsl-stylesheet>
Dạng đơn giản nhất của mẫu XPath là tên của một thành phần đơn
07.11.2014 255
Ví dụ tài liệu XML
11/7/2014
86
07.11.2014 256
Kết quả
07.11.2014 257
Giải thích kết quả
Chỉ có một node trong kết quả node set – chỉ có một thành phần <people>
Đối với node, nó sẽ thay thế nội dung template, chính là “null“
07.11.2014 258
Ví dụ XSLT 2
11/7/2014
87
07.11.2014 259
Ví dụ stylesheet 2 rất đơn giản
07.11.2014 260
Kết quả
07.11.2014 261
Ví dụ XSLT 3
11/7/2014
88
07.11.2014 262
Ví dụ stylesheet 3 rất đơn giản
<?xml version=“1.0“>
<xsl:stylesheet version=“1.0“
xmlns:xsl=http://www.w3c.org/1999/XSL/Transform>
<xsl:template match=“person“>
A Person
</xsl:template>
</xsl-stylesheet>
Literal data character – văn bản copy từ stylesheet vào trong tư liệu xuất
07.11.2014 263
Ví dụ tài liệu XML
07.11.2014 264
Kết quả
<?xml version=“1.0“ encoding=“utf-8“?>
A Person
A Person
Khoảng trắng ngoài thành phần của <person> bảo quản
Thành phần person được thay thế bởi những nội dung của template
11/7/2014
89
07.11.2014 265
Ví dụ XSLT 4
07.11.2014 266
Ví dụ stylesheet 4 rất đơn giản
<?xml version=“1.0“>
<xsl:stylesheet version=“1.0“
xmlns:xsl=http://www.w3c.org/1999/XSL/Transform>
<xsl:template match=“person“>
A Person
</xsl:template>
</xsl-stylesheet>
Cùng stylesheet với ví dụ 3 nhưng khác tư liệu nhập XML
07.11.2014 267
Ví dụ tư liệu XML mới
11/7/2014
90
07.11.2014 268
Kết quả
07.11.2014 269
Ví dụ XSLT 5
07.11.2014 270
Ví dụ stylesheet 4 rất đơn giản
<?xml version=“1.0“>
<xsl:stylesheet version=“1.0“
xmlns:xsl=http://www.w3c.org/1999/XSL/Transform>
<xsl:template match=“person“>
<p>A Person</p>
</xsl:template>
</xsl-stylesheet>
Literal data character – thành phần copy từ stylesheet đến trong tư liệu xuất
11/7/2014
91
07.11.2014 271
Kết quả
<?xml version=“1.0“ encoding=“utf-8“?>
<p>A Person</p>
<p>A Person</p>
Nội dung Template chứa những thẻ và character data
07.11.2014 272
xsl-valueof
07.11.2014 273
Thành phần xsl:value-of
Giải nén string value của một thành phần hay một thuộc tính và viết nó đến chổ xuất
Nội dung văn bản của những thành phần sau tất cả những thẻ được chuyển đi và thực thể tham chiếu được giải quyết
Thuộc tính select chứa trong Xpath expression đồng nhất một thành phần hay một thuộc tính Nếu nó có thể là một node set, trong trường hợp
này, string value của nút đầu tiên sẽ được lấy
11/7/2014
92
07.11.2014 274
Ví dụ XSLT 6
07.11.2014 275
Ví dụ Stylesheet
Giải nén tên của tất cả mọi người
<?xml version=“1.0“><xsl:stylesheet version=“1.0“xmlns:xsl=http://www.w3c.org/1999/XSL/Transform>
<xsl:template match=“person“><p>
<xsl:value-of select=“name“/></p>
</xsl:template>
</xsl-stylesheet>
07.11.2014 276
Tài liệu XML
11/7/2014
93
07.11.2014 277
Kết quả
07.11.2014 278
xsl:apply-templates
07.11.2014 279
xsl:apply-templates
XSLT processor đọc (đi ngang) tài liệu XML nhập liên tục từ đầu tới cuối
Templates được kích hoạt theo quy định chúng so khớp với những thành phần bắt gặp
Template cho cha sẽ được kích hoạt trước con
11/7/2014
94
07.11.2014 280
xsl:apply-templates
Quy ước đi ngang có thể được thay đổi bởi apply-templates Nó có thể chỉ ra thành phần hay những
thành phần nên được thực thi kế tiếp
Nó có thể chỉ ra một thành phần hay nhiều thành phần nên được thực thi trong phần giữa của thành phần khác trong quá trình thực thi
Nó có thể tránh một phần những thành phần từ quá trình đang thực thi
07.11.2014 281
xsl:apply-templates
xsl:apply-templates được dùng trong một tập mẫu để gọi những tập mẫu khác
Thuộc tính select chứa Xpath expression được dùng làm mắt ngữ cảnh mà sau đó các tập mẫu khác sẽ được kiểm tra dựa trên nó apply-templates không có thuộc tính
select thì mắt ngữ cảnh hiện hành sẽ được dùng
07.11.2014 282
Ví dụ XSLT 7
11/7/2014
95
07.11.2014 283
Ví dụ xsl:apply-template
Xuất một tài liệu theo như yêu cầu sau: Last name sau đó đến First name
Chỉ name không profession không hobby
<?xml version=“1.0“ encoding=“utf-8“>
Turing
Alan
Feyman
Richard
07.11.2014 284
Ví dụ xsl:apply-template
07.11.2014 285
Ví dụ tài liệu XML
11/7/2014
96
07.11.2014 286
Kết quả
07.11.2014 287
Giải thích
Hai thành phần <name> trong node set
Những nội dung <xsl:value-of> của hai thành phần <name> sẽ ở trong cây xuất
Những thành phần khác được hiển thị trong mode mặc định
07.11.2014 288
Ví dụ XSLT 8
11/7/2014
97
07.11.2014 289
Ví dụ xsl:apply-templates
07.11.2014 290
Kết quả
07.11.2014 291
xsl:apply-template
Rất tiện ích khi những thành phần con có những template của riêng nó
<xsl:template macht=“people“>
<html>
<head><title>Famous Scientist</title></head>
<body>
<xsl:apply-template select=“person“/>
</body>
</html>
</xsl>
11/7/2014
98
07.11.2014 292
xsl:apply-template
Thay thế mỗi thành phần people với thành phần html
Thực thi tất cả con person của thành phần people hiện tại
Thêm vào việc xuất của bất kỳ thành phần so khớp vào trong thành phần body của tài liệu xuất
07.11.2014 293
Ví dụ
07.11.2014 294
Kết quả
11/7/2014
99
07.11.2014 295
Thuộc tính
07.11.2014 296
Thuộc tính
07.11.2014 297
Thuộc tính
Quy tắc mặc nhận không ứng dụng
apply-templates phải trình bày để xuất những giá trị của những thuộc tính
11/7/2014
100
07.11.2014 298
Kết quả
07.11.2014 299
Modes
07.11.2014 300
Modes
Cùng nội dung nhập cần xuất hiện nhiều trong tài liệu xuất sắp xếp xuyên qua những tài liệu khác nhau Tiêu đề của chương
Table của nội dung
Tự trong chương của nó
Thuộc tính mode xsl:template
xsl:apply-templates
11/7/2014
101
07.11.2014 301
Ví dụ với thuộc tính mode
07.11.2014 302
Kết quả
07.11.2014 303
Filtering
11/7/2014
102
07.11.2014 304
Filtering
Cùng thực thi tất cả các thành phần quan hệ đến một nút hoặc một thành phần
Cần một hướng để lọc những thành phần thật tốt
Điều này được hoàn thành với một cấu trúc giám sát Xpath
07.11.2014 305
Ví dụ của Filtering
<?xml version=“1.0“>
<xsl:stylesheet version=“1.0“
xmlns:xsl=http://www.w3c.org/1999/XSL/Transform>
<xsl:template match=“person“>
<xsl:apply-templates select=“*[not(self::hobby)]“/>
</xsl:template>
</xsl-stylesheet>
Từ khóa được cần để xác nhận XSLT processor mà nút theo là một con của node hiện tại
07.11.2014 306
Kết quả
11/7/2014
103
07.11.2014 307
xsl:for-each
07.11.2014 308
xsl:for-each
Vòng lặp qua một node set
<xsl:for-each></xsl:for-each>
07.11.2014 309
Ví dụ của <xsl:for-each>
11/7/2014
104
07.11.2014 310
Kết quả
07.11.2014 311
xsl-if
07.11.2014 312
xsl-if
Có thể kiểm tra nội dung cho những giá trị chắc chắn với XSL
<xsl:if test=criterial></xsl:if>
Thuộc tính test được cần đến và sẽ là true hoặc false
11/7/2014
106
07.11.2014 316
xsl:choose, xsl:when, xsl:otherwise
Có thể chọn nội dung dùng:
<xsl:choose>
<xsl:when test=criterial>
</xsl:when>
<xsl:otherweise>
</xsl:otherweise>
</xsl.choose>
Thuộc tính test làm việc trong cùng kiểu như xsl:if
07.11.2014 317
xsl:choose, xsl:when, xsl:otherwise
07.11.2014 318
Kết quả
11/7/2014
107
07.11.2014 319
xsl:sort
07.11.2014 320
Ví dụ của xsl:sort (Ascending)
XSLT cung cấp một cách tốt để phân loại những tài liệu bởi những nội dung thành phần
Cấu trúc để dùng là: <xsl:sort select=selection></xsl:sort>
Sự phân loại chỉ có thể hòan thành theo những cấu trúc sau: <xsl:apply-templates..../>
<xsl:for-each..../>
07.11.2014 321
Ví dụ của xsl:sort
11/7/2014
108
07.11.2014 322
Kết quả
07.11.2014 323
Ví dụ của xsl:sort (Descending)
07.11.2014 324
Kết quả
11/7/2014
109
07.11.2014 325
xsl:copy
07.11.2014 326
xsl:copy
Được dùng để tạo tài liệu XML
Copying được dùng với cấu trúc
<xsl:copy></xsl:copy>
Chỉ đến máy xử lý mà việc xuất nên là XML thay thế HTML
<xml:output method=“xml“/>
07.11.2014 327
Ví dụ của xsl:copy
11/7/2014
111
07.11.2014 331
DOM
(Document Object Model)
07.11.2014 332
Nội dung
Tính chất và đặc điểm
DOM node tree và node types
Java interfaces
Lập trình DOM
Traversing DOM
Manipulating DOM
Creating a new DOM
Writing out (Serializing) DOM
07.11.2014 333
Nền tảng
DOM là một dạng chuẩn được định nghĩa bởi W3C, chỉ như XML
DOM không được thiết kế đặc trưng cho Java (không như SAX)
DOM là cross-platform và cross-language Dùng OMG `s IDL để định nghĩa những
giao diện
IDL là ngôn ngữ nối kết
11/7/2014
112
07.11.2014 334
Đặc điểm của DOM
Truy xuất tài liệu XML như một cấu trúc cây
Hình thành hầu hết là những nút thành phần và những nút văn bản
Có thể “walk“ trong cây từ trước ra sau
Cần bộ nhớ lớn
Dùng nó để walking và modifying cây
07.11.2014 335
Dom trong Action
07.11.2014 336
DOM cây và nút
Tài liệu XML được hiển thị như một cây
Cây được tạo thành từ nút
Có 12 loại kiểu nút khác nhau
Nút có thể chứa những nút khác (phụ thuộc vào loại nút)
Nút cha chứa những nút con
11/7/2014
113
07.11.2014 337
Loại nút
Document node
Document Fragment node
Element node
Attribute node
Text node
Comment node
Processing instruction node
Document type node
Entity node
Entity reference node
CDATA section node
Notation node
07.11.2014 338
DOM cây phân cấp
Một document node chứa
Một element node (nút thành phần gốc)
Một hay nhiều processing instruction node
Một element node có thể chứa
Những element node khác
Một hay nhiều text node
Một hay nhiều attribute node
Một attribute node có thể chứa
Một text node
07.11.2014 339
Ví dụ XML Document
11/7/2014
114
07.11.2014 340
Ví dụ DOM cây
XML Document node Element node “people“
Element node “person“ Element node “name“
Element node “first_name“
text node “Alan“
Element node “last_name“
text node “Turing“
Element node “profession“
Text node “computer scientist“
Attribute node “born“
Text node “1912“
07.11.2014 341
DOM và Java programming
Làm thế nào để hiển thị mỗi loại kiểu node trong chương trình Java?
Java interface type
Làm thế nào để gói gọn những đặc điểm chung của những loại kiểu nút
Java interface hierarchy
07.11.2014 342
Java Interface Hierarchy
Node interface Document interface DocumentFragment interface DocumentType interface DocumentInstruction interface CharacterData interface
Comment Text
CDATASection
Element interface Attr interface EntityReference interface Entity interface Notation interface
11/7/2014
115
07.11.2014 343
Những Interface khác cho DOM
NodeList
NamedNodeMap
DOMImplementation
07.11.2014 344
Node Interface
Loại dữ liệu đầu tiên trong DOM
Trình bày một nút đơn trong cây DOM
Mỗi nút là Node Interface Type Từ khi mỗi nút là một Node interface
node, mỗi nút có thể thực thi trong cùng một hứơng (polymorphis)
Những giao diện đặc trưng chứa thêm những phương thức hoặc những phương thức thích hợp
07.11.2014 345
Những phương thức trong Node Interface
Node interface methods tiện lợi
public short getNodeType()
public String getNodeName()
public String getNodeValue()
public NameNodeMap getAttributes()
public NodeList getChildNodes()
Không phải tất cả phương thức đều làm có mục đích cho tất cả kiểu nút, tuy nhiên
GetNodeValue() cho Element node
GetAttributes() cho Comment Node
11/7/2014
116
07.11.2014 346
Node Interface-Node Type
07.11.2014 347
Node Interface
07.11.2014 348
Node Interface
11/7/2014
117
07.11.2014 349
NodeList Interface
Hiển thị tập hợp của nút
Trả lại kiểu của getChildNodes()phương thức của Node interface
public interface NodeList()
public Node item (int index);
public int getLength();
}
07.11.2014 350
NamedNodeMap interface
Hiển thị tập hợp của nút mà mỗi nút được đồng nhất bởi name
Trả lại kiểu của getAttributes()phương thức của Node interface
07.11.2014 351
NameNodeMap interface
11/7/2014
118
07.11.2014 352
Document Node
Nút gốc
Hiển thị tài liệu hoàn toàn
Loại nút con
Một Element node
Document type node tùy chọn
Processing instruction nodes
Comment nodes
07.11.2014 353
Document Interface
Chứa factory methods cho những nút tạo khác
Elements, text nodes, comments, processing instructions,...
Phương thức để lấy nút thành phần gốc
07.11.2014 354
Document Interface
11/7/2014
119
07.11.2014 355
Ví dụ
07.11.2014 356
Element node
Hiển thị một thành phần
Bao gồm thẻ đầu, thẻ cuối và nội dung
Những loại nút con
Element nodes
Attribute nodes
ProcessingInstruction nodes
Comment nodes
Text nodes
CDATASection nodes
EntityReference nodes
07.11.2014 357
Element Interface
11/7/2014
120
07.11.2014 358
Element node
Dùng những phương thức của giao diện nút
Tên thành phần
getNodeName()
Tên thuộc tính và giá trị
NamedNodeMap getAttributes()
Thành phần con
NodeList getChildNodes()
07.11.2014 359
Ví dụ Element Node
07.11.2014 360
CharacterData Interface
Hiển thị mọi thứ mà là text
Super interface của
Text interface
Comment interface
11/7/2014
121
07.11.2014 361
Character Interface
07.11.2014 362
Text Node
Hiển thị nội dung văn bản của thành phần hay thuộc tính
Chỉ chứa hoàn toàn text không đánh dấu (mark up)
Một text node cho việc chạy tiếp cận của một text hoàn toàn Thành phần với không có sub-thành phần
Text được hiển thị như một đối tượng text đơn
Thành phần với những sub-thành phần
Nhiều đối tượng text
07.11.2014 363
Text node
Những phương thức text node
getNodeValue() trả lại text
Giống như phương thức getData() của CharacterData interface
11/7/2014
122
07.11.2014 364
Text Interface
07.11.2014 365
Comment Node
Hiển thị comment
Child Node Types
Không
Phương thức Node Interface
getNodeValue() trả lại text
07.11.2014 366
Comment Interface
11/7/2014
123
07.11.2014 367
CDATA Section Node
Hiển thị một CDATA section
Child node types
Không
Phương thức Node interface
getNodeValue() trả lại text
07.11.2014 368
CDATASection interface
07.11.2014 369
Code ví dụ
11/7/2014
124
07.11.2014 370
Attribute Node
Hiển thị một thuộc tính
Child node types
Text node
Entity reference node
Những phương thức node interface
getNodeName() trả lại tên của thuộc tính
getNodeValue() trả lại giá trị của thuộc tính
07.11.2014 371
Attribute Interface
07.11.2014 372
Document Type Node
Hiển thị sự miêu tả loại tư liệu
Child node types
Không
11/7/2014
125
07.11.2014 373
DocumentType Interface
07.11.2014 374
Processing Instruction Node
Hiển thị một processing instruction <?xml-stylesheet href=“XSL\JavaXML.html.xsl“
type=“text/xsl“?>
Child node type
Không
Những phương thức Node interface
getNodeName() trả lại target Giống như getTarget() của ProcessingInstruction
interface
getNodeValue() trả lại rest Giống như getData() của ProcessingInstruction
interface
07.11.2014 375
Ví dụ code
11/7/2014
126
07.11.2014 376
Processing Instruction interface
07.11.2014 377
Entity Node
Hiển thị một thực thể (không phải là một thực thể tham chiếu)
Child Node types Element nodes
ProcessingIntruction nodes
Comment nodes
Text nodes
CDATASection nodes
EntityReference nodes
07.11.2014 378
Entity interface
11/7/2014
127
07.11.2014 379
DOM Programming Procedures
Tạo một một đối tượng parser
Set Features và Read Properties
Phân tích tư liệu XML và lấy đối tượng Document
Thực thi những toán tử Traversing DOM
Manipulating DOM
Creating a new DOM
Writing out DOM
07.11.2014 380
Tạo một đối tượng Parser
Chưa được chuẩn hóa:
Đặc trưng DOM không chỉ ra tạo một đối tượng parser như thế nào
API khác nhau được dùng phụ thuộc vào sự thực thi
Khả năng trao đổi code bị ảnh hưởng
Nguyên nhân dùng JAXP
07.11.2014 381
Code ví dụ (Xerces)
11/7/2014
128
07.11.2014 382
Set Features và Read Properties
Chuẩn hóa cho cả hai SAX 2 và DOM level 2
Những tính chất
Tính chất chung
Tính chất đặc trưng DOM
Tính chất đặc trưng SAX
07.11.2014 383
Ví dụ Code
07.11.2014 384
Phân tích tư liệu XML và trả lại đối tượng tài liệu
Trước khi bất cứ toán tử DOM nào xảy ra, thì tài liệu XML cần được phân tích và đối tượng tài liệu cần được tạo
Không được chuẩn hóa bởi W3C
Lý do cho việc sử dụng JAXP
11/7/2014
129
07.11.2014 385
Ví dụ Code (Xerces)
07.11.2014 386
Thực thi những toán tử DOM
Traversing DOM
Manipulating DOM
Appending nodes
Removing nodes
Modifying nodes
Generating a new DOM
Serializing DOMb
Q:subclassing DOM
07.11.2014 387
Traversing DOM Tree
http://www.w3.org/TR/DOM-Level-2-Traversal-Range/traversal.html
org.w3c.dom.traversal.*
Interfaces
DocumentTraversal
NodeIterator
NodeFilter
TreeWalker
11/7/2014
130
07.11.2014 388
DocumentTraversal Interface
Bao gồm những phương thức mà tạo ra iterators và tree-walkers để di chuyển từ một node đến những con của nó trong sự sắp xếp tài liệu
Trong DOMs mà hổ trợ Traversal Feature, DocumentTraversal sẽ được thực thi bởi cùng một đối tượng mà thực thi Document interface Document.isSupported(“Traversal“,
“2.0“)
07.11.2014 389
DocumentTraversal Interface
07.11.2014 390
Ví dụ Code
11/7/2014
131
07.11.2014 391
NodeIterator interface
Được dùng để bước qua một set of nodes cũng như set of nodes trong một NodeList Document subtree
Result of a query
Đối tượng sự thực thi của interface lấy trả lại từ phương thức createNodeIterator() của DocumentTraversal interface
07.11.2014 392
NodeIterator interface
07.11.2014 393
NodeFilter interface
Được dùng để lọc ra nút đơn
Được dùng với NodeIterator và TreeWalker
Ứng dụng trong determining next node
Phải thực thi nó
Chúa WhatToShow flags
11/7/2014
132
07.11.2014 394
NodeFilter Interface
07.11.2014 395
TreeWalker Interface
Được dùng để tìm vị trí logical view của một tree (hoặc subtree)
Làm việc với logical view của tree Tree hay subtree nơi mà những nút được
lọc ra ngoài qua whatToShow flags và lọc (nếu bất cứ)
Khác với non-filtered tree Cấu trúc cây
Cha và những mối quan hệ ruột
07.11.2014 396
TreeWalker Interface
11/7/2014
133
07.11.2014 397
Ví dụ
07.11.2014 398
Manipulating DOM
Tạo mới một nút
Cộng một nút con
Xóa một nút con
Thay đổi giá trị của nút
Bình thường hóa nút text
07.11.2014 399
Tạo một nút mới và cộng thêm một nút con
11/7/2014
134
07.11.2014 400
Xóa nút con
07.11.2014 401
Thực thi một DOM mới
Thực thi một DOM mới từ đầu
Chưa có một dạng chuẩn DOM
Dùng sự thực thi Apache Xerces
org.apache.xerces.dom.DocumentImpl
WMLDocumentImpl
HTMLDocumentImpl
07.11.2014 402
Ví dụ
11/7/2014
135
07.11.2014 403
Serializing DOM
Không chuẩn DOM Org.apache.xml.serialize.* package
Serialize DOM vào trong một string Được dùng để tạo tài liệu XML
Interfaces Serializer
Classes XML Serializer
OutputFormat
07.11.2014 404
Serializer Interface
Interface cho sự thực thi một DOM serializer
BaseMarkupSerializer
HTMLSerializer
TextSerializer
XMLSerializer
Chứa phương thức factory cho SAX và DOM serializer
Chứa những phương thức static cho serializing DOM
07.11.2014 405
OutputFormat Class
Chỉ ra một kiểu dạng xuất để kiểm soát serializer
Mặc định cho
Encoding
indentation
line separator
Mặc định encoding là UTF-8
11/7/2014
136
07.11.2014 406
Ví dụ
07.11.2014 407
Bình thường hóa nút Text
Nút Text bao gồm những ký tự dòng mới
Sự bình thường hóa làm giảm sự khác nhau giữa dòng cuối cùng với một dòng mới đơn
Sự bình thường hóa làm giảm những ký tự với nhiều khoảng trắng với ký tự một khoảng trắng
Sự bình thường hóa bảo đảm rằng những nút Text không có những nút Text kế cận
Hữu ích để so sánh những tài liệu XML
07.11.2014 408
Ví dụ
11/7/2014
137
07.11.2014 409
Error Handling
DOMException
Cho nhiều những phương thức DOM
SAXException
Cho phương thức parse()
07.11.2014 410
Ví dụ Code
07.11.2014 411
Error Handler (Xerces)
Cùng một lược đồ error handler làm việc cho cả hai SAX và DOM trong sự thực thi Xerces
Cả hai SAXParser và DOMParser là subclass của org.apache.xerces.framework.XMLParser
Cả hai code của DOM và SAX chia sẻ cùng phương thức bao gồm error handlers
11/7/2014
138
07.11.2014 412
Ví dụ Code
07.11.2014 413
Demo và Code Review
07.11.2014 414
Lợi ích của DOM
Cung cấp sự thay đổi truy xuất ngẫu nhiên của một XML file
Một DOM có thể được tạo từ đầu hoặc một file đang tồn tại có thể thay đổi trong bộ nhớ
11/7/2014
139
07.11.2014 415
Sự rút lui của DOM
Tài liệu lớn có thể có vấn đề từ khi toàn bộ tài liệu được đọc trong bộ nhớ
Sự thực thi có thể tồi tệ hơn khi dùng DOM với tư liệu lớn và (hoặc) khả năng tồn tại của giới hạn của bộ nhớ
Không hổ trợ chuẩn cho việc đọc tài liệu hay viết mô hình DOM đến những file
07.11.2014 416
SAX
(Simple API for XML)
07.11.2014 417
Nội dung
Phân tích và ứng dụng
Cơ bản lịch sử SAX
Mô hình SAX event
Error handling
Khi sử dụng SAX
Demo và code
11/7/2014
140
07.11.2014 418
Phân tích và ứng dụng
Phân tích
Kiểm tra tính chất tề chỉnh và hợp lệ
Đọc
Ứng dụng
Thao tác
Tạo
Viết và gửi
07.11.2014 419
Lịch sử cơ bản SAX
API đơn giản cho XML
Bắt đầu như project community-driven xml-dev mailing list
Được thiết kế nguyên thủy như Java API Những cái khác (C++, Python, Perl) bây giờ
được hổ trợ
SAX 2
Không gian tên
07.11.2014 420
Những tính chất SAX
Event-driven
Cung cấp Event-handlers
Nhanh và nhẹ
Tài liệu không phải hoàn toàn trong bộ nhớ
Chỉ truy xuất đọc liên tiếp
One lần truy xuất
Không hổ trợ sự thay đổi của tài liệu
11/7/2014
141
07.11.2014 421
Mô hình thực thi SAX
07.11.2014 422
Lập trình SAX
Tập hợp giao diện và lớp của Java
org.xml.sax package
Giao diện
Parser
XMLReader
Event handlers
ContentHandler
07.11.2014 423
Loại giao diện Java căn bản
11/7/2014
142
07.11.2014 424
Cấu trúc lập trình SAX
07.11.2014 425
Giao diện XMLReader
Hiển thị SAX parser
Thực thi SAX parser phải thực thi giao diện này
Phương thức cho
Đăng ký event handlers
Bắt đầu phân tích
Cấu hình những nét và tính chất
Hợp lệ bật và tắt
07.11.2014 426
Giao diện XMLReader
11/7/2014
143
07.11.2014 427
XMLReader Instance
Đối tượng thực thi cụ thể giới hạn trong giao diện XMLReader
Phải được tạo trước khi phân tích
Được tạo bởi sử dụng phương thức static của phương thức createXMLReader() của lớp hổ trợ XMLReaderFactory()
07.11.2014 428
Ví dụ 1 XMLReader
07.11.2014 429
Ví dụ 2 XMLReader
11/7/2014
144
07.11.2014 430
Ví dụ 3 XMLReader
07.11.2014 431
Ví dụ 4 XMLReader
07.11.2014 432
Setting Features
Phương thức setFeature(String, boolean) của giao diện XMLReader
Features
Features chung
SAX Features
DOM Features
11/7/2014
146
07.11.2014 436
Ví dụ
07.11.2014 437
Ví dụ
07.11.2014 438
Đối tượng InputSource
Gói gọn thông tin về input source như một đối tượng đơn
Chuyển tới phương thức XMLReader.parse()
Bao gồm: Public identifier
System identifier
A byte stream
A character stream
11/7/2014
147
07.11.2014 439
Parse trên InputSource
Nếu charater stream tồn tại, parse sẽ đọc stream trực tiếp
Ngoài ra nếu byte stream tồn tại, parse sẽ đọc byte stream
Ngoài ra mở một kết nối URI đến resource được chỉ ra trong hệ thống identifier
07.11.2014 440
SAX Event Handlers
Giao diện
ContentHandler
ErrorHandler
DTDHandler
EntityResolve
Attributes
Lớp
DefaultHandler
07.11.2014 441
SAX Event Handlers
11/7/2014
148
07.11.2014 442
Giao diện ContentHandler
07.11.2014 443
Một ví dụ SAX đơn giản: Parser
07.11.2014 444
Một ví dụ SAX đơn giản: Event Handler
11/7/2014
149
07.11.2014 445
Character Data
Character Data Void character(char [] ch, int start, int
length) throws SAXException
Parser được cho phép để ngưng character data trong bất kỳ trường hợp nào mong muốn
Character data trong Unicode bất chấp lược đồ encoding chỉ ra trong tư liệu XML
07.11.2014 446
Khoảng trắng
Khoảng trắng
Nonvalidating parse
void characters (char [] ch, int start, int length) throws SAXException
Validating parse
void ignorableWhiteSpace (char [] ch, int start, int length) throws SAXException
“Ignorable white space“ bao gồm khoảng trắng, dòng mới và tab
07.11.2014 447
Giao diện thuộc tính
11/7/2014
150
07.11.2014 448
Giao diện Locator
07.11.2014 449
Giao diện Locator
SAX parser chuyển những đối tượng đối tượng thực thi của giao diện Locator đến ContentHandler.setDocumentLocator()
Nó được trữ đến tham chiếu địa phương nếu ứng dụng cần nó
07.11.2014 450
Ví dụ Locator
11/7/2014
151
07.11.2014 451
Giao diện ErrorHandler
07.11.2014 452
Phương thức DTDHandler
07.11.2014 453
Giao diện EntityResolve
Public interface EntityResolve{
InputSource resolveEntity(String public ID, String systemID) throws SAXException
}
Đây là phương thức được dùng để trả lại InputSource để nội dung của thực thể ngoài có thể đọc
Một thực thể ngoài
Những thực thể phân ngữ bên ngoài
Những thực thể chưa phân ngữ
11/7/2014
152
07.11.2014 454
Lớp DefaultHandler
Lớp hổ trợ
Thực thi ContentHandler
ErrorHandler
DTDHandler
EntityResolver
Chỉ subclass và viết đè những phương thức mà chúng ta quan tâm
Tùy chọn hoàn toàn cho sử dụng
07.11.2014 455
Ưu điểm của SAX
Đơn giản và nhanh
Hữu ích khi cấu trúc dữ liệu được cần cho mô hình của tư liệu XML
Có thể phân tích bất kỳ độ lớn của tài liệu nào không cần phải sử dụng bộ nhớ nén
Có thể được dùng để kéo tập hợp của thông tin tài liệu
07.11.2014 456
Nhìn lại SAX
SAX chỉ cung cấp việc truy xuất đọc
Không có truy xuất ngẫu nhiên đến tư liệu
Tìm kiếm tài liệu không dể dàng
11/7/2014
153
07.11.2014 457
XML và cơ sở dữ liệu
07.11.2014 458
Nội dung
Mở đầu
Sự giống nhau và khác nhau giữa cơ sở dữ liệu và XML
Loại cơ sở dữ liệu XML
Trữ dữ liệu XML trong RDBMS
Sản phẩm
07.11.2014 459
Mở đầu
Ứng dụng muốn giả quyết dữ liệu trong kiểu XML
Cần cho quản lý tài liệu/dữ liệu XML
Store, Retrieve, Search, Update
Cơ sở dữ liệu đang được sử dụng thành công cho việc quản lý dữ liệu
Cả hai ảnh hưởng như thế nào?
11/7/2014
154
07.11.2014 460
Sự giống nhau với cơ sở dữ liệu
Trữ: Table với tài liệu XML
Lược đồ: Lược đồ cơ sở dữ liệu với DTD, ngôn ngữ lược đồ XML
Ngôn ngữ Query: SQL với XQL, XML-QL, QUILT
Giao diện lập trình: JDBC với SAX, DOM
07.11.2014 461
Khác nhau với cơ sở dữ liệu
Storge mechanism
Indexing
Built-in security
Transaction support
Data integrity
Multi-user access
Query across multiple data sources
07.11.2014 462
Quản lý dữ liệu với quản lý tư liệu
Quản lý dự liệu:
Cần cơ sở dữ liệu cho trữ dữ liệu
Relational hay Object database
Quản lý tư liệu
Cần hệ thống quản lý nội dung
Hệ thống quản lý nội dung có thể được xây dựng trên cơ sở dữ liệu
11/7/2014
155
07.11.2014 463
Loại cơ sở dữ liệu XML
XML enabled database
XML được dùng cho việc xuất và nhập
Những mối quan hệ table bên trong
Middleware chuyển đổi giữa XML và relational database tables
Native XML database
Dữ liệu XML được trữ trong kiểu native của nó
07.11.2014 464
XML enabled database
Pros
Cung cấp kỹ thuật cơ sở dữ liệu
Cons
Sự chuyển đổi giữa XML và cơ sở dữ liệu được cần:
Chuyển đổi thực thi hòan toàn
Thông tin cấu trúc XML phức tạp rất khó chuyển đổi sang tables
Có thể không xử lý đủ tốt cho Unicode
07.11.2014 465
Native XML database
Pros