Describe Validate XML, DTD Handler, Lexical Event, EntityResolver, Filter
Validate là một công cụ mạnh mẽ.
- Nó cho phép bạn nhanh chóng kiểm tra đầu vào gần giống với dạng bạn mong đợi và nhanh chóng loại bỏ bất kỳ tài liệu nào khác xa với những gì mà quá trình của bạn có thể xử lý.
- Nếu có một vấn đề với dữ liệu, thì tốt hơn nên tìm ra sớm còn hơn muộn.
Trong ngữ cảnh của Ngôn ngữ đánh dấu mở rộng (XML), việc Validate thường liên quan đến việc viết một đặc tả chi tiết cho các nội dung của tài liệu theo bất kỳ một số ngôn ngữ lược đồ nào như XSD (XML Schema Language) của W3C , RELAX NG, các DTD (Document Type Definition), và Schematron. Đôi khi thực hiện xác nhận hợp lệ trong khi phân tích cú pháp, đôi lúc ngay sau đó. Tuy nhiên, thường thực hiện nó trước khi bất kỳ bước xử lý đầu vào tiếp theo nào diễn ra.
DTD Handler
DTD Handler là một interface để nhận thông báo của các sự kiện liên quan đến DTD
Nếu như ứng dụng SAX cần thông tin về notations và unparsed entities thì ứng dụng sẽ implement và đăng ký một thể hiện với SAX parser sử dụng các phương thức setDTDHandler của parser. Parser sử dụng các thể hiện đó để để thông báo các notations và unparsed entities cho ứng dụng.
Lexical Event
LexicalHandler dùng để xác định các comments, phần CDATA , và những thứ liên quan đến các parsed entities.
Entity Resolver
Nếu một ứng dụng SAX cần thực hiện xử lý tùy biến cho các entities bên ngoài, nó phải implement interface này và đăng ký một thể hiện với SAX driver bằng cách sử dụng phương pháp setEntityResolver.
Filter
Là SAX interface đóng vai trò là 2 stream cơ bản:
- 1 là sự kiện từ SAX driver (thường là một XMLReader) cho các ứng dụng;
- 2 là request từ các ứng dụng tới SAX driver.
Ví dụ :
public class TomcatUserHandler extends DefaultHandler {
@Override
public void warning(SAXParseException e) throws SAXException {
System.out.println("WraningError at "+e.getLineNumber()+e.getMessage());
}
@Override
public void error(SAXParseException e) throws SAXException {
System.out.println("error at "+e.getLineNumber()+e.getMessage());
}
@Override
public void fatalError(SAXParseException e) throws SAXException {
System.out.println("faltaError at "+e.getLineNumber()+e.getMessage());
}
}
-----------------
public class TomcatUser {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
// TODO code application logic here
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse("tomcat-users.xml",new TomcatUserHandler());
} catch (IOException ex) {
Logger.getLogger(TomcatUser.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParserConfigurationException ex) {
Logger.getLogger(TomcatUser.class.getName()).log(Level.SEVERE, null, ex);
} catch (SAXException ex) {
Logger.getLogger(TomcatUser.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Không có nhận xét nào:
Đăng nhận xét