Salve a tutti ho il seguente codice per validare un documento xml attraverso una dtd/schemaxml.
codice:
<%@ page language="Java" %>
<%@ page import="org.w3c.dom.*"%>
<%@ page import="org.apache.xerces.parsers.*" %>
<%@ page import="org.xml.sax.*"%>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="javax.xml.transform.*"%>
<%@ page import="javax.xml.transform.dom.DOMSource"%>
<%@ page import="javax.xml.transform.stream.StreamResult"%>
<%@ page import="java.io.*" %>
<HEAD>
<TITLE>Mia Risposta</TITLE>
</HEAD>
<BODY>
<%!
public class ValidatingDOM
{
// Costruttore
public ValidatingDOM (String xmlFile)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// force the parser to validate the document
factory.setValidating(true);
Document document = null;
try {
// builder initialisation
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(null);
// launch the parsing and create DOM structure
document = builder.parse(xmlFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
%>
<%
String xmlFile="C:/Windows/desktop/web/forum.xml";
ValidatingDOM validatingDOM = new ValidatingDOM (xmlFile);
%>
Mia pagina JSP</p>
</BODY>
</HTML>
FORUM.XML:
<?xml version="1.0"?>
<!DOCTYPE forum SYSTEM "forum.dtd">
<forum>
<post>
<utente>Luca Ruggiero</utente>
<localita>Roma</localita>
<data>23/12/05</data>
<messaggio>CIAO!!!!</messaggio>
</post>
</forum>
FORUM.DTD:
<!ELEMENT forum (post+)>
<!ELEMENT post ( utente,titolo,localita,data, messaggio)>
<!ELEMENT utente ( #PCDATA )>
<!ELEMENT titolo ( #PCDATA )>
<!ELEMENT localita ( #PCDATA )>
<!ELEMENT data ( #PCDATA )>
<!ELEMENT messaggio ( #PCDATA )>
ADESSO non capisco perchè non chiamare errore dato che nel mio documento XML,non c'è
il marcatore <titolo></titolo> è sbagliato qualcosa nel codice??Si valida così un documento
xml???GRAZIE