Hi,
I try validate HTML using PL/SQL that user inputs.
I did create below function for that purpose
CREATE OR REPLACE
FUNCTION validate_html(
p_html IN VARCHAR2
) RETURN BOOLEAN
AS
l_comment XMLTYPE;
xml_parse_err EXCEPTION;
PRAGMA EXCEPTION_INIT (xml_parse_err , -31011);
BEGIN
l_comment := xmlType.createXML('<root><row>' || p_html || '</row></root>');
RETURN TRUE;
EXCEPTION WHEN xml_parse_err THEN
RETURN FALSE;
END;
/
Function works ok and return true if I run e.g.
BEGIN
IF validate_html('<p>Hello</p>') THEN
dbms_output.put_line('OK');
ELSE
dbms_output.put_line('Not valid HTML');
END IF;
END;
/
And return false if I enter not valid HTML like
BEGIN
IF validate_html('<p>Hello') THEN
dbms_output.put_line('OK');
ELSE
dbms_output.put_line('Not valid HTML');
END IF;
END;
/
But it return false also if I run below
BEGIN
IF validate_html('<p>Hello  </p>') THEN
dbms_output.put_line('OK');
ELSE
dbms_output.put_line('Not valid HTML');
END IF;
END;
/
Problem seems to be that   (there is ; in end but do not know how post it without forum convert that to space) witch is valid HTML for me.
I know that HTML is not XML, but can I use Oracle database XML functions for validating HTML?
How I should validate user inputted HTML?
I'm currently developing this using Oracle XE 11G database.
Regards,
Jari