Force to validate external DTD ?

Hello everybody !
Actually I parse a XML document with validation feature turned on :
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setContentHandler(myHandler);
parser.setErrorHandler(myHandler);
parser.parse("/XMLdoc/.../myDoc.xml");
DTD reference is specified in XML document :
<?xml version="1.0" standalone="no"?>
<!DOCTYPE root SYSTEM "file.dtd">
Does anybody know how to force XML validation according to external DTD not define in the document at parse time (I want user to make its own XML document without reference or handling DTD part) ?
Thanks for your help !

Then I'd recommend processing the file with DOM without validation, creating a second Document object with the proper DTD specified (or enough of it specified that you could supply the rest via an EntityResolver) and then copy the contents of the full Document into the new Document with no contents but with a good DTD.
Then, serialize it to a stream or String, and run it throught DOM a second time.
Kind of clunky, but it should work unless the file is huge.
If the file is huge, I'd write code to read the file as a character stream and put the DTD specificaiton in the data. Then process this modified version through DOM.
Dave Patterson

Similar Messages

  • Can I validate an XML file using an external DTD

    Hi,
    I'm trying to use an external DTD to validate an XML
    file (which does not refer to this DTD). The java docs that ship
    with the XML parser aren't clear on how exactly to do this (or
    whether it can be done). I'd appreciate any advice on how I
    should perform this operation.
    Here's what I'm doing right now.
    1) The Java file
    import oracle.xml.parser.v2.*;
    public class ParseWithExternalDTD
    public static void main(String args[]) throws Exception
    DOMParser dp=new DOMParser();
    dp.parseDTD
    ("file:d:/jdk1.2/sample/test/family.DTD","family");
    DTD dtd=dp.getDoctype();
    dp.setDoctype(dtd);
    dp.parse("file:d:/jdk1.2/sample/test/family.xml");
    System.out.println("Finished with no errors!");
    2) The family.DTD file
    <!ELEMENT family (member*)>
    <!ATTLIST family lastname CDATA #REQUIRED>
    <!ELEMENT member (#PCDATA)>
    <!ATTLIST member memberid ID #REQUIRED>
    <!ATTLIST member dad IDREF #IMPLIED>
    <!ATTLIST member mom IDREF #IMPLIED>
    3) The family.xml file
    <?xml version="1.0" standalone="no"?>
    <family lastname="Smith">
    <TagToFoilParserValidation>
    </TagToFoilParserValidation>
    <member memberid="m1">Sarah</member>
    <member memberid="m2">Bob</member>
    <member memberid="m3" mom="m1" dad="m2">Joanne</member>
    <member memberid="m4" mom="m1" dad="m2">Jim</member>
    </family>
    4) The output
    Finished with no errors!
    As you can see, the DOMParser failed to validate the family.xml
    file against the family dtd otherwise, it would have reported a
    validation error when it came across the
    TagToFoilParserValidation.
    Any insight as to what I'm doing wrong would be much appreciated.
    Sincerely,
    Keki
    Project Iona
    Manufacturing Applications
    Oracle Corporation
    The views and opinions expressed here are
    my own and do not reflect the views and
    opinions of Oracle Corporation
    null

    Keki Burjorjee (Oracle) (guest) wrote:
    : 2 further questions related to this issue.
    : 1) Say I am using XSLT to transform A.xml into B.xml, and I
    : want to embed a reference to B.dtd within the B.xml file. Is
    : there an XSLT command which will allow me to do this?
    : 2) Is it possible for your team to give me a mechanism whereby
    I
    : can preset the xml parser to validate the next xml file (or
    : inputstream) it receives against a particular DTD? This scheme
    : does not require the dtd to be present within the XML file
    : Thanks,
    : - Keki
    : Oracle XML Team wrote:
    : : What you are doing wrong is not including a reference to the
    : : applicable DTD in your XML document. Without it there is no
    : way
    : : that the parser knows what to validate against. Including
    the
    : : reference is the XML standard way of specifying an external
    : : DTD. Otherwise you need to embed the DTD in your XML
    Document.
    : : Oracle XML Team
    : : http://technet.oracle.com
    : : Oracle Technology Network
    : : Keki Burjorjee (guest) wrote:
    : : : Hi,
    : : : I'm trying to use an external DTD to validate an XML
    : : : file (which does not refer to this DTD). The java docs that
    : : ship
    : : : with the XML parser aren't clear on how exactly to do this
    : (or
    : : : whether it can be done). I'd appreciate any advice on how I
    : : : should perform this operation.
    : : : Here's what I'm doing right now.
    : : : 1) The Java file
    : : : import oracle.xml.parser.v2.*;
    : : : public class ParseWithExternalDTD
    : : : public static void main(String args[]) throws Exception
    : : : DOMParser dp=new DOMParser();
    : : : dp.parseDTD
    : : : ("file:d:/jdk1.2/sample/test/family.DTD","family");
    : : : DTD dtd=dp.getDoctype();
    : : : dp.setDoctype(dtd);
    : : : dp.parse("file:d:/jdk1.2/sample/test/family.xml");
    : : : System.out.println("Finished with no errors!");
    : : : 2) The family.DTD file
    : : : <!ELEMENT family (member*)>
    : : : <!ATTLIST family lastname CDATA #REQUIRED>
    : : : <!ELEMENT member (#PCDATA)>
    : : : <!ATTLIST member memberid ID #REQUIRED>
    : : : <!ATTLIST member dad IDREF #IMPLIED>
    : : : <!ATTLIST member mom IDREF #IMPLIED>
    : : : 3) The family.xml file
    : : : <?xml version="1.0" standalone="no"?>
    : : : <family lastname="Smith">
    : : : <TagToFoilParserValidation>
    : : : </TagToFoilParserValidation>
    : : : <member memberid="m1">Sarah</member>
    : : : <member memberid="m2">Bob</member>
    : : : <member memberid="m3" mom="m1" dad="m2">Joanne</member>
    : : : <member memberid="m4" mom="m1" dad="m2">Jim</member>
    : : : </family>
    : : : 4) The output
    : : : Finished with no errors!
    : : : As you can see, the DOMParser failed to validate the
    : : family.xml
    : : : file against the family dtd otherwise, it would have
    : reported
    : : a
    : : : validation error when it came across the
    : : : TagToFoilParserValidation.
    : : : Any insight as to what I'm doing wrong would be much
    : : appreciated.
    : : : Sincerely,
    : : : Keki
    : : : Project Iona
    : : : Manufacturing Applications
    : : : Oracle Corporation
    : : : The views and opinions expressed here are
    : : : my own and do not reflect the views and
    : : : opinions of Oracle Corporation
    1) No XSLT commands exist that allow you to embed a DTD while
    doing the transformation.
    2) You can use the setDocType() method in the parser, to set a
    DTD based on which the XML document will be validated. The
    parseDTD() method allows you to parse a DTD file separately and
    get a DTD object. Here is a sample code :
    DOMParser domparser = new DOMParser();
    domparser.setValidationMode(true);
    // parse the DTD file
    domparser.parseDTD(new FileReader(dtdfile));
    DTD dtd = domparser.getDocType();
    // Parse XML file - XML file will be validated based on the DTD.
    domparser.setDocType(dtd);
    domparser.parse(new FileReader(xmlfile));
    Document doc = domparser.getDocument();
    Oracle XML Team
    http://technet.oracle.com
    Oracle Technology Network
    null

  • Validating an XML document using external DTD?

    Hi,
    I want to validate an XML file using external DTD with SAX parser.
    How can I validate an XML file with external DTD.
    Thanks in Advance,
    Mahendra

    I dont think we can set a DTD file throug java while
    parsing an XML.I've done it with an XML schema though. Can you use that instead? For schemas you do something like:
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setAttribute( "http://java.sun.com/xml/jaxp/properties/schemaSource",
                                       schemaUrl );where schemaUrl in this case would be something like file:///usr/local/whatever.xsd

  • Validating XML against an external DTD

    I've three questions concerning the validation of an XML file on Checkin:
    1. Can the SimpleXMLParser validate an XML file against an external (internal) DTD.
    2. How do I have to construct the !DOCTYPE Reference in my XML file for the parser to find my external DTD
    3. Do I need to have a iFS type definition for my file to get it validated
    null

    Yes, DTD Validation is supported for 1.1
    but its not supported on a Per document basis
    or a per protocol basis.
    There is a System wide Property called
    IfsDefaultDTDValidation which if set to true
    will turn on validation for the entire
    system (all protocols)
    In addition, there is also support for a validate option to be passed to the parser
    (which is currently not exposed for 1.1 through the protocols) but a Custom Parser
    or application can set the validate mode on.
    The validate option setting takes preference
    over the IfsDefaultDTDValidation setting
    null

  • Use external DTD in 11g

    Hi,
    I try to parse an XML file within a CLOB column. In Oracle 9i and 10g the code work, but in 11 I get a lot of errors.
    First I got
    ORA-31020: Der Vorgang ist nicht zulässig, Ursache: For security reasons, ftp and http access over XDB repository is not allowed on server side (-31020)
    The XML file contains a reference to an external DTD, which is accessible per HTTP on a remote webserver.
    As I have understood, I have to register all my DTDs within the Oracle Database. I found
    dbms_xmlschema.registerURI()
    to do the job. This is very unpractical, because there are a lot of DTDs, which can be referenced by the XML-CLOBs. So I have to register all the DTDs manually.
    Normally the XML generator adds the matching DTD reference and so I can validate the XML with the parser without any knowledge about the type of the DTD.
    To figure out the problem I read a lot of documents on severyl websites. I have tried
    select HTTPURITYPE('http://mywebserver.domain/schema/mydtd-v1.0.dtd').getCLob() from dual;
    to load the DTD content. Surprise, surprise I got a lot of ACL errors. To solve that, I have added some network acls. At the moment the statement above
    returns my DTD within a CLOB now, so it seems, that I can load the external file from the remote webserver.
    Back to registerURI():
    dbms_xmlschema.registerURI(
          schemaURL => 'http://mywebserver.domain/schema/mydtd-v1.0.dtd',
          schemaDocUri => 'http://mywebserver.domain/schema/mydtd-v1.0.dtd',
          local => false);
    returns now (error messages in German)
    ORA-31011: XML-Parsing nicht erfolgreich
    ORA-19202: Fehler bei XML-Verarbeitung
    LPX-00247: Ungültige Dokument-Typ-Deklaration (DTD)
    Error at line 5
    aufgetreten
    ORA-06512: in "XDB.DBMS_XMLSCHEMA_INT", Zeile 20
    ORA-06512: in "XDB.DBMS_XMLSCHEMA", Zeile 199
    ORA-06512: in Zeile 12
    The same error occurs on
    dbms_xmlschema.registerschema(
          schemaURL => 'http://mywebserver.domain/schema/mydtd-v1.0.dtd',
          schemaDoc => HTTPURITYPE('http://mywebserver.domain/schema/mydtd-v1.0.dtd').getCLob()
    How I can get more information about the underlying error? I have tried to enable tracing for some XDB events, but in the udump directory
    exist only old files. I think, the DTD is correct, also the reference within the XML CLOB (because it works on the old database instances).
    It seems to be a security or character-set(?) issue.
    Any ideas?
    Thanks a lot
    Andre

    As I have understood, I have to register all my DTDs within the Oracle Database.
    Not exactly.
    DBMS_XMLSchema procedures deal with XML schemas, not DTDs.
    You can have Oracle resolve the DTD by loading it into the XML DB repository at the same uri referenced by the XML file.
    Or, if you don't actually need to use those DTDs to validate XML documents, you can also disable DTD validation altogether at session or instance level.

  • Validating an xml with DTD external DTD

    Hi
    how can i validate my XML File with an external DTD ?
    thanks for your replies
    serge

    Hi,
    when you use the XML Library, the interface <b>if_ixml_parser</b> has a static method <b>set_validation( )</b> to activate and deactivate a DTD validation.
    There are the follow constants in the if_ixml_parser for the DTD validation-mode:
    <b>if_ixml_parser=>co_no_validation</b>
    Do not validate the XML-Document against the document type definition (DTD)
    <b>if_ixml_parser=>co_validate</b>
    Validate the XML-Document against the document type definition (DTD)
    <b>if_ixml_parser=>co_validate_if_dtd</b>
    Validate the XML-Document against the document type definition (DTD) if a DTD is specified. Otherwise parse the Document in non validating mode.
    see also the SAP online-help:
    <a href="http://help.sap.com/saphelp_webas610/helpdata/de/bb/5766b2dca511d4990b00508b6b8b11/content.htm">Interface if_ixml_parser</a>
    Regards
    Stefan

  • Is there a way to "force-mount" an external drive that doesn't show up on it's own when plugged in with firewire?

    Hi, is there a way to "force-mount" an external drive that doesn't show up on the desktop? I have a new Hitachi SATA III 2 TB Ultrastar that won't show up like all the other drives when plugged in. So I can't partition, repair, format etc with Disk Utility, Disk Drill, Tech Tools etc. How do I make it visible?
    I use the FW 400 to 800 adapter and a FW hub.
    Thanks,
    W.

    ok, I did find the log in Diskutil of what happened, I just can't figure out why it happened and how to start over:
    2014-04-20 13:42:08 -0400: Disk Utility started.
    2014-04-20 13:44:30 -0400: Preparing to erase : “Terra 8”
    2014-04-20 13:44:30 -0400:           Partition Scheme: GUID Partition Table
    2014-04-20 13:44:30 -0400:           1 volume will be created
    2014-04-20 13:44:30 -0400:                     Name                    : “Terra 8”
    2014-04-20 13:44:30 -0400:                     Size                    : 2 TB
    2014-04-20 13:44:30 -0400:                     File system          : Mac OS Extended (Journaled)
    2014-04-20 13:44:30 -0400: Unmounting disk
    2014-04-20 13:45:00 -0400: Creating the partition map
    2014-04-20 13:45:01 -0400: Waiting for the disks to reappear
    2014-04-20 13:45:01 -0400: Formatting disk2s2 as Mac OS Extended (Journaled) with name Terra 8
    2014-04-20 13:45:26 -0400: Initialized /dev/rdisk2s2 as a 2 TB case-insensitive HFS Plus volume with a 155648k journal
    2014-04-20 13:45:26 -0400: Mounting disk
    2014-04-20 13:45:29 -0400: Erase complete.
    2014-04-20 13:45:29 -0400:
    - That was it, gone.....

  • ERROR: "info.plist does not validate against DTD"

    Hi! I got this error if anyone has it solved Please HELP.
    I am trying to package a WRT widget using Nokia WRT extension for Adobe Dreamweaver. This is the place for info on the extension: http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Runtimes/Web_Runtime/
    I figure developer from here who use DW to develop mobile content might know the error.
    When come to the step of 'Package Nokia WRT Widget' I got this error: info.plist does not validate against DTD
    and a page of error info shown like this:
    DTD validated at: Wed Jun 17 2009 19:03:00 GMT+0800 (Malay Peninsula Standard Time)
    DTD used for validation: http://www.nokia.com/DTDs/plist-1.0.dtd
    Line
    Column
    Message
    Explanation
    Source
    2
    95
    DTD did not contain element declaration for document type name
    3
    16
    Attribute "version" exists, but can not be used for this element.
    3
    21
    element "plist" undefined. Did you mean "applet" or "strike"?
    4
    7
    element "dict" undefined. Did you mean "strike" or "input"?
    5
    7
    element "key" undefined. Did you mean "strike" or "blockquote"?
    6
    10
    element "string" undefined. Did you mean "strong" or "strike"?
    7
    7
    element "key" undefined. Did you mean "strike" or "blockquote"?
    8
    10
    element "string" undefined. Did you mean "strong" or "strike"?
    9
    7
    element "key" undefined. Did you mean "strike" or "blockquote"?
    10
    10
    element "string" undefined. Did you mean "strong" or "strike"?
    11
    7
    element "key" undefined. Did you mean "strike" or "blockquote"?
    12
    10
    element "string" undefined. Did you mean "strong" or "strike"?
    13
    7
    element "key" undefined. Did you mean "strike" or "blockquote"?
    14
    9
    element "true" undefined. Did you mean "textarea" or "tr"?
    Can anyone knows what this means and how i can solve it?
    Please help. Thankyou.
    note: I am new here and knows that keep asking quesion without giving back is not good but I have a deadline here and wanted to finish the job. I will read some other post and try to help in return when I am able to do so.

    Hi pziecina,
    Thanks for your reply,
    I suspect my problem is the installation or setup of my system or software. as the result i tested is not by doing any scripting at all. All I did is following one of their example exactly (http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Runtimes/Web_Runtime/Dreamweaver_Exte nsion/QuickStart.xhtml) and package strightaway without modifying the code. because I want to make sure i got the extension install correctly. even so by packaging one of their ready make example already yield this error.

  • Error opening external DTD 'book.dtd'

    I know this may be something simple, but can't get it to work. I have a local (on my local network) dtd file that I'm trying to use for validation on my xml file.
    My first two lines in the xml are:
    <?xml version="1.0" ?>
    <!DOCTYPE book SYSTEM "D:\tmp\book.dtd">
    When trying to parse it in Java, I get the exception thrown of:
    Error opening external DTD 'book.dtd'.
    I checked, and the file has full permissions for read and write, and it is in the directory specified.
    How can I use an external dtd file on my local network for my DTD validation?
    Thanks in advance!
    null

    Try using PUBLIC instead of SYSTEM.
    Oracle XML Team

  • Error opening external DTD 'Segnatura.dtd' using dbms_xmlsave.insertXML

    I've been trying to insert a document in a table. All works fine
    if the xml doesn't contains the doctype element!
    If I add the row
    <!DOCTYPE Segnatura SYSTEM "Segnatura.dtd">
    to my xml I get the error:
    oracle.xml.sql.OracleXMLSQLException: Error opening external DTD
    'Segnatura.dtd'.
    If I specify all the path "file:///temp/Segnatura.dtd" the insert
    works, but I don't want to do in that way beacause I don't want
    to modify the original xml that i'm inserting!
    In the package dbms_xmlsave I have no ways to change the
    basedir/baseurl
    or to setValidationMode to false like in xmlparser package.
    Is there any way to solve this problem??
    Thank's in advance
    Mauro
    This is an example scratch of my xml doc:
    <?xml version = '1.0' encoding = 'ISO-8859-1'?>
    <!DOCTYPE Segnatura SYSTEM "Segnatura.dtd">
    <Segnatura versione="2001-05-07"
    xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="it">
    </Segnatura>

    Hy Steven, thank's for your attention.
    I'm not using the xsql servlet.
    I'm reading an xml file coming from the file system and I want to
    import it in the db using a java stored proc.
    I also have the dtd file (Segnatura.dtd) but I don't know where
    to put in on the server.
    If I run my java program and I put Segnatura.dtd in the execution
    classpath on the program the xml is loaded fine.
    If I load the stored proc in the db then I don't know where to
    put the dtd. Do I have to put the directory containing the dtd in
    the server classpath and the restart the db maibe?
    thank's
    mauro

  • XML document in CLOB with reference to external DTD

    If you place the xml document in clob using dbms_lob and the document has reference to external (system) DTD then it gives an error 'Error opening external DTD'. Whats the work around. See example below...
    declare
    xmlstring CLOB;
    xmlstring1 CLOB;
    os_file BFILE := bfilename('BFILE_DIR','family.xml');
    > > > rowsp INTEGER; > > > errnum NUMBER; > > > errmsg VARCHAR2(2000);
    > > > time VARCHAR2(20); > > > begin
    > > > select to_char(sysdate,'MM/DD/YYYY HH24:MI:SS')
    > > > into time from dual; > > > dbms_output.put_line(time);
    > > > dbms_lob.createtemporary(xmlstring, true, > > > dbms_lob.session);
    > > > dbms_lob.fileopen(os_file, > > dbms_lob.file_readonly);
    > > > dbms_lob.loadfromfile(xmlstring, os_file,
    > > > dbms_lob.getlength(os_file));
    > > > select to_char(sysdate,'MM/DD/YYYY HH24:MI:SS')
    > > > into time from dual; > > > dbms_output.put_line(time);
    > > > xmlgen.resetOptions; > > > xmlgen.setRowTag('family');
    > > > --xmlgen.setIgnoreTagCase(xmlgen.IGNORE_CASE);
    > > > rowsp := xmlgen.insertXML('family',xmlString);
    > > > dbms_output.put_line(' Rows processed = '&#0124; &#0124; > > > TO_CHAR(rowsp));
    > > > dbms_lob.freetemporary(xmlstring);
    > > > dbms_lob.fileclose(os_file); > > > commit; > > > exception
    > > > when no_data_found then > > > rollback;
    > > > dbms_lob.freetemporary(xmlstring);
    > > > dbms_lob.fileclose(os_file); > > > errnum := abs(SQLCODE);
    > > > errmsg := SQLERRM;
    > > > dbms_output.put_line(errnum&#0124; &#0124;'----'&#0124; &#0124;errmsg); > > > when others then
    > > > rollback; > > > dbms_lob.freetemporary(xmlstring);
    > > > dbms_lob.fileclose(os_file); > > > errnum := abs(SQLCODE);
    > > > errmsg := SQLERRM;
    > > > dbms_output.put_line(errnum&#0124; &#0124;'----'&#0124; &#0124;errmsg); > > > end;

    Can be one of two problems.
    One
    Your database user does not have
    privileges to open a socket inside
    the database. This will prevent
    the XML parser running inside the DB
    from retrieving the DTD which it must
    do to properly parse the document.
    Two
    you are sitting behind a corporate
    firewall and need to properly set
    the Proxy Server host and port to
    properly retrieve the DTD.
    From looking at your code it would appear
    that your job can more easily be done by
    using the OracleXML putXML command line
    utility outside the database.
    You can specify the -D options to your
    JavaVM to set the System properties for
    the proxy server if need be like this:
    java -DproxySet=true -DproxyHost=yourproxyserver OracleXML putXML

  • XML-Document with extern DTD

    Hello!
    How can the Oracle XML-Parser parse a XML-Document without the
    XML-Declaration. There is no information about the Version and
    the DTD in the XML-Document. Can I use an extern DTD?
    Thanks,
    Peter
    null

    Peter Roemer (guest) wrote:
    : Hello!
    : How can the Oracle XML-Parser parse a XML-Document without the
    : XML-Declaration. There is no information about the Version and
    : the DTD in the XML-Document. Can I use an extern DTD?
    : Thanks,
    : Peter
    Have you tried oracle.xml.parser.v2.XMLParser.setDoctype(DTD)?
    Oracle XML Team
    http://technet.oracle.com
    Oracle Technology Network
    null

  • External DTDs in 1.1

    Can 1.1 on Win2000 Server handler DTD that are external to the xml document? I know it handles local DTDs.
    Here is the decl:
    <!DOCTYPE TRANSCRIPT SYSTEM "\\dga22\DTDs\transcript.dtd">
    Here is the error.
    Thu Mar 08 15:51:40 CST 2001: \Transcription\Inprocess\trans02022001T1.xml:
    oracle.ifs.common.IfsException: IFS-12608: Error while pre-parsing with the SAXParser: at line (2), column (59): Error opening external DTD '\\dga22\DTDs\transcript.dtd'.
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    at oracle.ifs.common.IfsException.<init>(Compiled Code)
    at oracle.ifs.common.IfsException.<init>(Compiled Code)
    at oracle.ifs.beans.parsers.IfsXmlParser.preParse(Compiled Code)
    at oracle.ifs.beans.parsers.IfsXmlParser.getParserName(IfsXmlParser.java:367)
    at oracle.ifs.beans.parsers.IfsXmlParser.parse(IfsXmlParser.java:276)
    at oracle.ifs.beans.parsers.IfsXmlParser.parse(IfsXmlParser.java:214)
    at oracle.ifs.utils.common.ParserHelper.parseExistingDocument(ParserHelper.java:379)
    at oracle.ifs.protocols.ntfs.server.FileProxy.parseFile(FileProxy.java:785)
    at oracle.ifs.protocols.ntfs.server.FileProxy.cleanupFile(Compiled Code)
    at oracle.ifs.protocols.ntfs.server.FileProxy.run(Compiled Code)
    null

    I think the DTD has to be stored in the IFS repository or accessed with an HTTP protocol
    null

  • Error opening external DTD

    I get the error above when doing the following
    import oracle.xml.parser.v2.DOMParser;
    public class testXML

    I do not know how do you pass the JDK compiler.Typos in the transcription process. I was more interested in showing my approach rather than precise code (apologies).
    Actual code below - less 2 methods I have not changed.
    Andrew
    =======================
    import java.net.URL;
    import org.w3c.dom.Node;
    import org.w3c.dom.Element;
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.NamedNodeMap;
    //import oracle.xml.parser.v2.DOMParser;
    //import oracle.xml.parser.v2.XMLDocument;
    import java.io.*;
    import org.xml.sax.*;
    import org.apache.xerces.parsers.DOMParser;
    public class DOMSample
    static public void main(String[] argv)
    try
    if (argv.length != 1)
    // Must pass in the name of the XML file.
    System.err.println("Usage: java DOMSample <xml file>");
    System.exit(1);
    // Get an instance of the parser
    DOMParser parser = new DOMParser();
    // Oracle's Way - gives an error "Error opening external DTD"
    // Set various parser options: validation on,
    // warnings shown, error stream set to stderr.
    // parser.setErrorStream(System.err);
    // parser.setValidationMode(DOMParser.DTD_VALIDATION); <-- deprecated ??
    // parser.showWarnings(true);
    // Parse the document
    // System.out.println("Parsing XML document and do DTD Validation...");
    // System.err.println("Parser version " + parser.getReleaseVersion());
    // parser.parse(DemoUtil.createURL(argv[0]));
    // My way - using Xerces - works, using an input source with Oracle way also fails
    File file = new File ("c:\\temp2\\javFilterDat.xml");
    InputSource is = new InputSource( new FileReader(file));
    is.setSystemId("file:/c:"+ System.getProperty("file.separator") +
    "temp2");
    parser.parse(is);
    // Obtain the document.
    Document doc = parser.getDocument();
    // Print document elements
    System.out.print("The elements are: ");
    printElements(doc);
    // Print document element attributes
    System.out.println("The attributes of each element are: ");
    printElementAttributes(doc);
    catch (Exception e)
    System.out.println(e.toString());

  • Validate External Email

    Hi Guys
        My requirement is to validate external Email address [email protected] I want to validate on “@” and on “<b>.</b>”  . Is there any FM to validate External email.  I tried FM “SX_INTERNET_ADDRESS_TO_NORMAL” .  Is it  Ok or Suggest me any other FM . Or through coding how can we do this.
    Waiting for reply
    Thanks and regards
    Naval

    Hi Anurag
      Thanks for the great help.
    Here is my code
    data :    WS_RECNAM(80) TYPE  C. " Email
    DATA:     WS_LEN TYPE I,          " Length of Email
                WS_F_CHR TYPE C,        " First Character of Email
                WS_AT TYPE I,           " Counter for '@'
                WS_DOT TYPE I.          " Counter for '.'
    *&      Checks for '@' and '.'
        WS_RECNAM   = '[email protected]'.
      IF WS_RECNAM NA '@' OR WS_RECNAM NA '.'.
        WS_FLAG = 'A'.
        MESSAGE   S002(ZHR) .
        STOP.
      ENDIF.
    *&      Checks If first character is '@'
      IF WS_RECNAM(1) = '@'.
        WS_FLAG = 'B'.
        MESSAGE E003(ZHR) .
      ENDIF.
      WS_LEN = STRLEN( WS_RECNAM ).
      WS_F_CHR = WS_RECNAM(1).
    *&      Checks If first character is an Alphabet
      IF WS_F_CHR CO SY-ABCDE .
        CLEAR : WS_F_CHR.
        DO WS_LEN TIMES.
          WS_F_CHR = WS_RECNAM(1).
    *&    keeps the count of '@' and '.'
          CASE WS_F_CHR.
            WHEN '@'.
              WS_AT = WS_AT + 1.
            WHEN '.'.
              WS_DOT = WS_DOT + 1.
            WHEN OTHERS.
    *&      Check for Alphanumeric,'_' and '.'
              IF WS_F_CHR NA SY-ABCDE AND WS_F_CHR NA '0123456789_.' .
                WS_FLAG = 'C'.
                MESSAGE E004(ZHR).
                EXIT.
              ENDIF.
          ENDCASE.
          SHIFT WS_RECNAM.
        ENDDO.
    *&      Checks if '@' more then one and '.' more then 5
        IF WS_DOT GT 5 OR WS_AT GT 1.
          WS_FLAG = 'A'.
          MESSAGE E002(ZHR) .
        ENDIF.
      ELSE.
        WS_FLAG = 'D'.
        MESSAGE E005(ZHR) .
      ENDIF.

Maybe you are looking for