Question: Which XML parser is built into JDK14.2?

Is it Crimson, Xerces ?
Do you know which version ?
When using inbuilt XML parser with JDK 1.4.2 which API shoudl I look at ?
Is it only the standard JDK API at http://java.sun.com/j2se/1.4.2/docs/api ?

It is crimson and its version is 1.1.3

Similar Messages

  • Which XML parser is built into JDK1.4.2 ?

    Which XML parser is built into JDK1.4.2 ?
    Is it Crimson, Xerces ?
    Do you know which version ?
    When using inbuilt XML parser with JDK 1.4.2 which API shoudl I look at ?
    Is it only the standard JDK API at http://java.sun.com/j2se/1.4.2/docs/api ?

    X-post:
    http://forum.java.sun.com/thread.jsp?thread=524180&forum=136&message=2511345

  • Which XML parser for WLS6.1

    I heard BEA's Scott Dietzen at JDJEdge (
    http://www.sys-con.com/jdjedge/tv4.cfm ) say that the XML parser used by
    WebLogic's web services stack is native (not java). Question - which parser
    is it? BEA's own work? Or xp? or...?
    do I care?

    I think you may have misinterpreted the meaning of "native" ;-)
    WLS 6.1 comes with a Java-based, SAX Parser built by BEA engineers. It is included
    in the client.jar file created during the Web service assembly process. It is
    JAXP-complaint, and definitely Java.
    Regards,
    Mike Wooten
    "dc" <[email protected]> wrote:
    I heard BEA's Scott Dietzen at JDJEdge (
    http://www.sys-con.com/jdjedge/tv4.cfm ) say that the XML parser used
    by
    WebLogic's web services stack is native (not java). Question - which
    parser
    is it? BEA's own work? Or xp? or...?
    do I care?

  • Which XML Parser gives best performance? Please respond!!

    Hi,
    I am trying to figure out what is the best performing XML parser. I know that SAX implementation is good for XML reading and DOM is good when building XML documents.
    Now, I want to know which parser (JAXP? JDOM? Piccolo?) I understand that JAXP underneath uses Xerces and SAX2. Is it right?
    Is it a good practice to have a single application using a SAX parser for reading xml docs and a DOM parser to build xml parser?
    We are also planning to migrate from Apache Soap to Apache Axis. Do you have any recommendations?

    I think JAXP is an API, not a parser. It uses an underlying parser called Crimson by default. If you want it to use other parsers you can configure it to do so. I can't tell you which parser is more fastest.
    The easiest way of reading and writing XML documents is to use an XML data binding library such as JAXB or castor. It's much nicer than implementing the SAX callback methods or building document trees. The steps involve are...
    1. Write an XML Schema
    2. Tell the XML data binding tool to generate the source code to marshall / unmarshall XML documents to and from java objects
    3. Compile the source code
    4. Package the classes into a library
    5. Use the library in your application
    Steps 2-4 can be added into your build script.
    It may take you a couple of days to become familiar with the tools, but will save you weeks of maintenance & debugging.

  • Which XML parser is used by JWSDP?

    Hi,
    SOAP messages are xml messages. I know that the SOAP messages are processed before invoking the web service. what parser is used to process the SOAP message at the service side. Is it a DOM parser or a SAX parser?? Can i make the server use another parser.??
    Regards,
    Kartik.

    There are standard ways of causing a particular parser to be used. You will find a list of them in the API documentation for the newInstance() method of SAXParserFactory and DocumentBuilderFactory.
    Personally I don't understand why you care what parser is used to parse the message. You don't say that there is any problem with it, so why do you ask?

  • Best xml parser ?

    what is the best xml parser ? i have an xml document. i want to parse it to extract information. what is the best xml parser ? what developers prefers ? there are lots of xml perser available in the net like electric xml parser, in built java xml parser etc etc. which parser world use most ?

    thanks....is there any good tutorial how to use JXAB ..... i want a very simple tutorial with a simple example document . .....do you know any good tutorial site (except sun )? i want to start early work...thanks

  • Loading XML parser for PL/SQL

    I am working my way thru 'Building Oracle XML Applications' by Steve Muench.
    I am getting a problem when I try to install the XML parser for PL/SQL
    The following errors occur when I try to do
    loadjava -v -r -u xmlbook/xmlbook xmlparserv2.jar
    initialization complete
    loading : oracle/xml/parser/v2/XMLByteReader
    creating : oracle/xml/parser/v2/XMLByteReader
    Error while creating class oracle/xml/parser/v2/XMLByteReader
    ORA-29545: badly formed class: User has attempted to load a class (oracle.xml.parser.v2.XMLByteReader) into a restricted package. Permission can be granted using dbms_java.grant_permission(<user>, LoadClassInPackage...
    loading : oracle/xml/parser/v2/PrintDriver
    creating : oracle/xml/parser/v2/PrintDriver
    Error while creating class oracle/xml/parser/v2/PrintDriver
    ORA-29545: badly formed class: User has attempted to load a class (oracle.xml.parser.v2.PrintDriver) into a restricted package. Permission can be granted using dbms_java.grant_permission(<user>, LoadClassInPackage...
    resolving: oracle/xml/parser/v2/PrintDriver
    Error while resolving class oracle/xml/parser/v2/PrintDriver
    ORA-04043: object /a065289c_PrintDriver does not exist
    resolving: org/w3c/dom/html/HTMLAnchorElement
    Error while resolving class org/w3c/dom/html/HTMLAnchorElement
    ORA-04043: object /564607d_HTMLAnchorElement does not exist
    About 20 classes get loaded correctly. All the rest get ORA-29545 or ORA-04043 errors.
    I expect the ORA-04043 errors are a result of the earlier errors.
    The documentation seems to indicate that there is no need to do
    dbms_java.grant_permission to load into your own schema.
    I have NT4 (sp6)
    Oracle 8.1.7
    xmlparserv2.jar dated 24/8/2001 17:01 size 1,177,259
    xmlparserv2_2027.jar gives the same errors.
    Any help would be appreciated.
    null

    Was it definitely xmlparsev2.jar that you had to load?
    I recently started going through some of these examples as well and found that the standard xml parser was there but that I needed to load the xml parser for PL/SQL. I did this using loadjava from a subdirectory within the xdk directory and everything worked fine.

  • Error message while loading XML parser into db

    I get the following error message while loading xmlparserv2.jar
    ORA-29534 referenced object SYSTEM.oracle/xml/parser/v2/XMLNOde could not be resolved
    ORA-29545: badly formed class: java.lang.NullPointerException
    using XSU111 package

    I had the same problem. I did a search of the forum looking for the error number (that's how I ran across your question). It seems that the xmlparserv2.jar (v2.0.2.8 or 2.0.2.9) which is included was compiled with java 1.2 which is incompatible with Oracle 8.1.5 (which is what I have and probably what you have). You probably need xmlparser v2.0.2.7.
    Do a search on the error number, the post is from Steve back on June 8. I found the correct version of the xmlparserv2.jar in my copy of the xmlschema stuff (xmlschema_v0_9_0_0.zip). I don't know which version is in the current xmlschema
    (v1.0.0.0) but it is probably the new version.
    Steve will email you the correct version if you ask.
    Eric
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by nrajav ():
    I get the following error message while loading xmlparserv2.jar
    ORA-29534 referenced object SYSTEM.oracle/xml/parser/v2/XMLNOde could not be resolved
    ORA-29545: badly formed class: java.lang.NullPointerException
    using XSU111 package<HR></BLOCKQUOTE>
    null

  • How to Parse a string into an XML DOM ?

    Hi,
    I want to parse a String into an XML DOM. Not able to locate any parser which supports that. Any pointers to this?

    Download Xerces from xml.apache.org. Place the relevant JAR's on your classpath. Here is sample code to get a DOM document reference.
    - Saish
    public final class DomParser extends Object {
         // Class Variables //
         private static final DocumentBuilder builder;
         private static final String JAXP_SCHEMA_LANGUAGE =
             "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
         /** W3C schema definitions */
         private static final String W3C_XML_SCHEMA =
             "http://www.w3.org/2001/XMLSchema";
         // Constructors //
         static {
              try {
                   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                   factory.setNamespaceAware(true);
                   factory.setValidating(true);
                   factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
                   builder = factory.newDocumentBuilder();
                   builder.setErrorHandler(new ErrorHandler() {
                       public void warning(SAXParseException e) throws SAXException {
                           System.err.println("[warning] "+e.getMessage());
                       public void error(SAXParseException e) throws SAXException {
                           System.err.println("[error] "+e.getMessage());
                       public void fatalError(SAXParseException e) throws SAXException {
                           System.err.println("[fatal error] "+e.getMessage());
                           throw new XmlParsingError("Fatal validation error", e);
              catch (ParserConfigurationException fatal) {
                   throw new ConfigurationError("Unable to create XML DOM document parser", fatal);
              catch (FactoryConfigurationError fatal) {
                   throw new ConfigurationError("Unable to create XML DOM document factory", fatal);
         private DomParser() {
              super();
         // Public Methods //
         public static final Document newDocument() {
              return builder.newDocument();
         public static final Document parseDocument(final InputStream in) {
              try {
                   return builder.parse(in);
              catch (SAXException e) {
                   throw new XmlParsingError("SAX exception during parsing.  Document is not well-formed or contains " +
                        "illegal characters", e);
              catch (IOException e) {
                   throw new XmlParsingError("Encountered I/O exception during parsing", e);
    }- Saish

  • Xml parser procedur which worked in oracle 8.1.7 not working in oracle 9ir2

    hi all,
    THE BELOW PROCEDURE TO PARSE A XML WEB PAGE AND RETRIEVE THE DATA INTO TABLE IS WORKING WELL IN ORACLE 8.1.7 , BUT WHEN WE UPGRADED TO oRACLE 9I RELEASE 2 ,,ITS NOT WORKING AND GIVING THESE ERRORS,,
    13:44:56 Error: ORA-29532: Java call terminated by uncaught Java exception: java.lang.NullPointerException
    ORA-06512: at "SYS.XMLNODECOVER", line 0
    ORA-06512: at "SYS.XSLPROCESSOR", line 500
    ORA-06512: at "XXCNA.XRATESDLOAD", line 37
    ORA-06512: at line 2
    CAN ANYONE GIVE A TIP?
    REGARDS,
    VIJAY
    CREATE OR REPLACE PACKAGE BODY XRATESDLOAD AS
    PROCEDURE XRATESDLOADP
    IS
    --DECLARE THE REQUIRED XML PARSER, DOM DOCUMENT,NODES AND NODELLISTS
    v_parser xmlparser.Parser;
    v_doc xmldom.DOMDocument;
    v_nl xmldom.DOMNodeList;
    v_n xmldom.DOMNode;
    --CREATE A PL/SQL TYPE TABLE
    TYPE tab_type IS TABLE OF CNA_XRATES_TEXT%ROWTYPE;
         t_tab tab_type := tab_type();
    BEGIN
    -- Create a parser.
    v_parser := xmlparser.newParser;
    -- Parse the document and create a new DOM document.
    xmlparser.parse(v_parser, 'http://www.xe.com/dfs/datafeed2.cgi?cnaeuropeholdingsltd');
    v_doc := xmlparser.getDocument(v_parser);
    -- Free resources associated with the Parser now it is no longer needed.
    xmlparser.freeParser(v_parser);
    -- Get a list of all the CURRENCY nodes in the document using the XPATH syntax.
    v_nl := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/xe-datafeed/currency');
    dbms_output.put_line( 'Currency rates processed on '||to_char(sysdate));
    --DELETE THE RECORDS IN THE CNA_XRATES_TEXT
    delete from CNA_XRATES_TEXT;
    dbms_output.put_line( 'Previous records of CNA_XRATES_TEXT table deleted '||to_char(sysdate));
    -- Loop through the list and create a new record in a tble collection
    -- for each CURRENCY record.
    FOR cur_emp IN 0 .. xmldom.getLength(v_nl) - 1 LOOP
    v_n := xmldom.item(v_nl, cur_emp);
    t_tab.extend;
    -- Use XPATH syntax to assign values to he elements of the collection.
    t_tab(t_tab.last).CURRENCY_SYMBOL := xslprocessor.valueOf(v_n,'csymbol');
    --t_tab(t_tab.last).CURRENCY_NAME     := xslprocessor.valueOf(v_n,'cname');
    t_tab(t_tab.last).CURRENCY_RATE := xslprocessor.valueOf(v_n,'crate');
         --t_tab(t_tab.last).CURRENCY_DATE       := xslprocessor.valueOf(v_n, sysdate);
    END LOOP;
    -- Insert data into the real CNA_XRATES_TEXT table from the table collection.
    -- Form better performance multiple collections should be used to allow
    -- bulk binding using the FORALL construct but this would make the code
    -- too long-winded for this example.
    FOR cur_emp IN t_tab.first .. t_tab.last LOOP
    INSERT INTO CNA_XRATES_TEXT
    (CURRENCY_SYMBOL,
    CURRENCY_RATE,
         CURRENCY_DATE)
    VALUES
    (t_tab(cur_emp).CURRENCY_SYMBOL,
    t_tab(cur_emp).CURRENCY_RATE,
         to_char(sysdate));
    END LOOP;
    dbms_output.put_line( 'Currency rates inserted into CNA_XRATES_TEXT table on '||to_char(sysdate));
    COMMIT;
    -- Free any resources associated with the document now it
    -- is no longer needed.
    xmldom.freeDocument(v_doc);
    END XRATESDLOADP;
    END XRATESDLOAD;
    /

    Unlike Oracle 7.x, versions 8 and above now internalize the trigger you are looking for within the database itself. So you can no longer have the kind of control over this process as you would have done previously, however the performance has increased according to Oracle.
    It is possible to remove these triggers in an emergency as follows:
    -- if tab$.trigflag != 0 - then Oracle internal replication triggers are enabled
    select * from tab$ where trigflag != 0;
    -- to remove Oracle internal replication triggers if replication is not working
    -- and needs to be removed in an emergency to allow writing to the tables
    -- also do this as sys user
    run catrepr
    -- also do this as sys user
    update tab$ set trigflag=0 where trigflag !=0;
    commit;
    shutdown immediate;
    startup
    However this removes all of the triggers - which is not what you want to do in your situation.
    You may find some additional helpful commands in the repdoc.txt file on my website:
    http://www.dotcomsolutionsinc.net/products/repgen/repgen_example_repdoc1.html
    And here is a list of replication setup scripts which could be helpful as well:
    http://www.dotcomsolutionsinc.net/products/repgen/repgen_files.html
    What is expecially important (as I am sure you know) is the setup of conflict resolution, which I do a little bit differently than I have seen documented elsewhere in order to avoid ORA-1403 errors.
    David Simpson
    www.dotcomsolutionsinc.net
    (Oracle Replication Consulting & Tools)

  • Parse xml data and insert into database

    Hi Friends,
    I have an xml document which needs to be parsed and the data need to be inserted into an oracle database table.
    Please tell me which will be the easiest and optimal way of doing this.
    Thanks,
    Achayan

    Take a look at the JDOM xml parsing library - google for JDOM download or something.
    This will allow you to build an object representation of the XML doc, from which you can then extract the data.
    J

  • XML Parser - Reading an XML document into the DocumentObject

    Hi guys,
    I have been trying to read an XML file and feed it into the XMLParser.
    I have read about the DOM API, and i can work with the DOM API in java
    scripts. How
    will i play with it in TOOL implementation of DOM API. Can anyone guide me
    in this
    process.
    Thanks for your help.
    Laks

    Sorry for this post, here ist the complete text.
    Is it possible to create a XML Parser (javax.xml.parsers.SaxParser or javax.xml.parsers.DocumentBuilder) which reads from a ByteChannel?
    Example:
    java.nio.channels.FileChannel fc = new ...;
    javax.xml.parsers.SaxParser parser = ...;
    org.xml.sax.HandlerBase hb = ...;
    parser.parse( fc, hb );

  • Does Java have a built in XML parser?

    Hi, does the JDK come with a built in XML parser? If so, from what version onwards is this available?
    I'm looking at this article here:
    http://www.devx.com/xml/Article/16921/0/page/3
    So, I presume the answer is yes, Java comes with JAXP. I'm using JDK 1.6, does that come packaged with JAXP?
    Thanks.
    Rupert

    rupertlssmith wrote:
    Hi, does the JDK come with a built in XML parser? If so, from what version onwards is this available?
    I'm looking at this article here:
    http://www.devx.com/xml/Article/16921/0/page/3
    You need to add three jar files--jaxp.jar, crimson.jar, and xalan.jar--to your CLASSPATH.xalan and jaxp have been in the Sun Java SDK since at least 1.4.
    crimson existed in the Sun Java 1.4 SDK apparently replaced by xerces from Sun Java 1.5 SDK.

  • Swapping XML Parser and XSLT to Xalan 2.7.0 - Not Working (OC4J 10.1.3)

    Hi-
    I'm trying to use the latest Xercies/Xalan classes in OC4J 10.1.3 as described in the How-To swap XML Parsers document:
    http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html
    What I can see happening is that the oracle.xml shared library is successfully 'turned off', but the xalan libraries are not added. Instead, the default xml classes that are distributed with the JDK become visible. For instance, using a slightly modified version of the index.jsp page from the how-to, I get this result:
    ------ Output from JSP page ----------------
    TransformerFactory Instance: org.apache.xalan.processor.TransformerFactoryImpl
    Transformer Instance: org.apache.xalan.transformer.TransformerIdentityImpl
    Transformer Version: Xalan Java 2.4.1 (!!)
    What I expect is for that last line to say version 2.7.0, which is the version of the xalan.jar included in my shared library (code to add that line to the how-to shown below).
    I suspect what is happening is that the class loader is simply not letting a shared library override a system library - to do that you probably need to place the jar files in system endorsed directory.
    Has anyone gotten this how-to to work - actually replacing the XML parser/transform classes with the latest Xalan classes? Are you sure it is seeing the current version you placed in the shared library?
    Thanks,
    Eric Everman
    ---- My modified getXSLTDetails() method in the index.jsp page of the how-to -------
    <!-- Additional Import -->
    <%@ page import="org.apache.xalan.Version" %>
    public static String getXSLTDetails()
    Transformer transformer=null;
    TransformerFactory transformerfactory = TransformerFactory.newInstance();
         Version ver = null;
         String br = "<" + "br" + ">"; //otherwise the otn forum chocks on the break.
    try
    transformer = transformerfactory.newTransformer();
              ver = (Version) transformer.getClass().forName("org.apache.xalan.Version").newInstance();
              String ret_val =
                   "TransformerFactory Instance: "+transformerfactory.getClass().getName() + br +
                   "Transformer Instance: "+transformer.getClass().getName() + br;
              if (ver != null) {
                   ret_val = ret_val + "Transformer Version: " + ver.getVersion() + br;
              } else {
                   ret_val = ret_val + "Transformer Version not Available" + br;
              return ret_val;
    catch (Exception e)
    e.printStackTrace();
    return e.getMessage();
    }--------------------------------------------------------------------

    Steve - Thanks for responding on this.
    The Xalan SQL extension is built into Xalan. The most painless way to try it out is to run it via JEdit: www.jedit.org
    JEdit a OS Java application with a fairly painless install process (I'm assuming you already have a current JRE installed). Once its installed, you'll need to install the XSLT plugin - in JEdit goto Plugins | Plugin Manager | Install and pick the XSLT plugin. You'll need the Oracle JDBC classes on your classpath - this can be done by copying the oracle_jdbc4.jar into the [JEdit install directory]/jars directory.
    Restart to load that jar and you should be all set.
    I included a sample XSLT page at the bottom of this post that is somewhat of a template transform for the SQL extension - its more complicated then it needs to be, but it does some nice things with the results of the query. Save it as a file and make the appropriate changes to the 'datasource' parameter near the top of the file.
    Then in JEdit, open the file and make sure the XSLT plugin is visible (Plugins | XSLT | XSLT Processor Toggle - or alternately dock it in the window via global prefs). In the XSLT plugin: Allow the current buffer to be used as the source, Add that same file as a stylesheet via the '+' button, and pick a result file at the bottom. Then click the 'Transform XML' button.
    Troubleshooting: I seem to remember having some classpath errors when I tried this on windows, but others have had it work w/o issues. I do remeber that the XSLT plugin had a popup window that gave a pretty good explaintion of the problem, if it occurs. Also, for some reason the XSLT plugin will not create a new file for the output, so its often best to create a file first, then choose it as the output. Of course, you can always run a transformation from the command line or w/in an applicatoin. Full docs on the Xalan SQL extension can be found at: http://xml.apache.org/xalan-j/extensionslib.html#sql
    Here is my sample XSLT transform using the SQL extension:
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
              xmlns:sql="http://xml.apache.org/xalan/sql"
              xmlns:str="http://exslt.org/strings"
              xmlns:xalan="http://xml.apache.org/xalan"
              extension-element-prefixes="sql str xalan">
         <xsl:output indent="yes"/>
         <xsl:param name="driver">oracle.jdbc.OracleDriver</xsl:param>
         <xsl:param name="datasource">jdbc:oracle:thin:jqpublic/jqpublic@server_name:1521:dbname</xsl:param>
         <xsl:param name="jndiDatasource"><!-- jndi source for production use w/in enterprise environment --></xsl:param>
         <xsl:param name="debug">true</xsl:param>
         <xsl:variable name="connection" select="sql:new()"/>
         <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
         <xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
         <!--
              The query:  You could pass parameters in to this query to build a where clause, but here is a simple example.
              Also, its nice to wrap the query with a max row number to prevent huge results.
         -->
         <xsl:param name="query">
         select * from (
      SELECT
              'One' FIELD_1,
              'Two' FIELD_2
         FROM DUAL
         ) where rownum < 100
         </xsl:param>
         <!-- Essentially, create a XConnection object -->
         <xsl:variable name="connection" select="sql:new()"/>
         <xsl:template match="/">
        <xsl:choose><!-- Connect using JNDI -->
          <xsl:when test="$jndiDatasource != ''">
            <xsl:if test="not(sql:connect($connection, $jndiDatasource))">
              <xsl:message>Failed to connect to db via jndi connection</xsl:message>
              <xsl:comment>Failed to connect to db via jndi connection</xsl:comment>
              <xsl:if test="$debug = 'true'">
                <xsl:copy-of select="sql:getError($connection)/ext-error"/>
              </xsl:if>
            </xsl:if>
          </xsl:when>
          <xsl:otherwise><!-- Connect using connection string -->
            <xsl:if test="not(sql:connect($connection, $driver, $datasource))">
              <xsl:message>Failed to connect to db via driver/url connection</xsl:message>
              <xsl:comment>Failed to connect to db via driver/url connection</xsl:comment>
              <xsl:if test="$debug = 'true'">
                <xsl:copy-of select="sql:getError($connection)/ext-error"/>
              </xsl:if>
            </xsl:if>
          </xsl:otherwise>
        </xsl:choose>
              <!--
              The results of the query.  The rowset is brought back in 'streaming' mode,
              so its not possible to ask it for the number of rows, or to check for zero
              rows.  There is a switch to disable streaming mode, but this requires all
              rows to be brought into memory.
              -->
              <xsl:variable name="table" select="sql:query($connection, $query)"/>
              <xsl:if test="not($table)">
                   <xsl:message>Error in Query</xsl:message>
                   <xsl:copy-of select="sql:getError($connection)/ext-error"/>
              </xsl:if>
              <page>
                   <!-- Your xalan environment -->
                   <xsl:copy-of select="xalan:checkEnvironment()"/>
                   <!-- Build a bunch of metadata about the rows -->
                   <meta>
                        <cols>
                             <xsl:apply-templates select="$table/sql/metadata/column-header"/>
                        </cols>
                   </meta>
                   <rowset>
                        <!--
                             With streaming results, you must use the apply-temmplates contruct,
                             not for-each, since for-each seems to attempt to count the rows, which
                             returns zero.
                        -->
                        <xsl:apply-templates select="$table/sql/row-set"/>
                   </rowset>
              </page>
              <xsl:value-of select="sql:close($connection)"/><!-- Always close -->
         </xsl:template>
         <xsl:template match="row">
              <row>
                   <xsl:apply-templates select="col"/>
              </row>
         </xsl:template>
         <xsl:template match="column-header">
              <col>
                   <xsl:attribute name="type">
                        <xsl:value-of select="@column-typename"/>
                   </xsl:attribute>
                   <xsl:attribute name="display-name">
                        <xsl:call-template name="create-display-name"/>
                   </xsl:attribute>
                   <xsl:value-of select="@column-name"/>
              </col>
         </xsl:template>
         <!-- Convert column names to proper caps: MY_FIELD becomes My Field -->
         <xsl:template name="create-display-name">
              <xsl:variable name="col-name">
                   <xsl:for-each select="str:tokenize(@column-name, '_')">
                        <xsl:value-of
                             select="concat(translate(substring(., 1, 1), $lowercase, $uppercase), translate(substring(.,2), $uppercase, $lowercase), ' ')"/>
                   </xsl:for-each>
              </xsl:variable>
              <xsl:value-of select="substring($col-name, 1, string-length($col-name) - 1)"/>
         </xsl:template>
         <!-- Creates data columns named 'col' with a column-name attribute -->
         <xsl:template match="col">
              <col>
                   <xsl:attribute name="column-name"><xsl:value-of select="@column-name"/></xsl:attribute>
                   <xsl:value-of select="."/>
              </col>
         </xsl:template>
    </xsl:stylesheet>

  • XML Parse issues when using Network Data Model LOD with Springframework 3

    Hello,
    I am having issues with using using NDM in conjuction with Spring 3. The problem is that there is a dependency on the ConfigManager class in that it has to use Oracle's xml parser from xmlparserv2.jar, and this parser seems to have a history of problems with parsing Spring schemas.
    My setup is as follows:
    Spring Version: 3.0.1
    Oracle: 11GR2 and corresponding spatial libraries
    Note that when using the xerces parser, there is no issue here. It only while using Oracle's specific parser which appears to be hard-coded into the ConfigManager. Spring fortunately offers a workaround, where I can force it to use a specific parser when loading the spring configuration as follows:
    -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl But this is an extra deployment task we'd rather not have. Note that this issue has been brought up before in relation to OC4J. See the following link:
    How to change the defaut xmlparser on OC4J Standalone 10.1.3.4 for Spring 3
    My question is, is there any other way to configure LOD where it won't have the dependency on the oracle parser?
    Also, fyi, here is the exception that is occurring as well as the header for my spring file.
    org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
    Line 11 in XML document from URL [file:/C:/projects/lrs_network_domain/service/target/classes/META-INF/spring.xml] is invalid;
    nested exception is oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
         [snip]
         ... 31 more
    Caused by: oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
         at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425)
         at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:287)
         at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:331)
         at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:222)
         at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155)
         at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)Here is my the header for my spring configuration file:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">Thanks, Tom

    I ran into this exact issue while trying to get hibernate and spring working with an oracle XMLType column, and found a better solution than to use JVM arguments as you mentioned.
    Why is it happening?
    The xmlparserv2.jar uses the JAR Services API (Service Provider Mechanism) to change the default javax.xml classes used for the SAXParserFactory, DocumentBuilderFactory and TransformerFactory.
    How did it happen?
    The javax.xml.parsers.FactoryFinder looks for custom implementations by checking for, in this order, environment variables, %JAVA_HOME%/lib/jaxp.properties, then for config files under META-INF/services on the classpath, before using the default implementations included with the JDK (com.sun.org.*).
    Inside xmlparserv2.jar exists a META-INF/services directory, which the javax.xml.parsers.FactoryFinder class picks up and uses:
    META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines oracle.xml.jaxp.JXDocumentBuilderFactory as the default)
    META-INF/services/javax.xml.parsers.SAXParserFactory (which defines oracle.xml.jaxp.JXSAXParserFactory as the default)
    META-INF/services/javax.xml.transform.TransformerFactory (which defines oracle.xml.jaxp.JXSAXTransformerFactory as the default)
    Solution?
    Switch all 3 back, otherwise you'll see weird errors.  javax.xml.parsers.* fix the visible errors, while the javax.xml.transform.* fixes more subtle XML parsing (in my case, with apache commons configuration reading/writing).
    QUICK SOLUTION to solve the application server startup errors:
    JVM Arguments (not great)
    To override the changes made by xmlparserv2.jar, add the following JVM properties to your application server startup arguments.  The java.xml.parsers.FactoryFinder logic will check environment variables first.
    -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
    However, if you run test cases using @RunWith(SpringJUnit4ClassRunner.class) or similar, you will still experience the error.
    BETTER SOLUTION to the application server startup errors AND test case errors:
    Option 1: Use JVM arguments for the app server and @BeforeClass statements for your test cases.
    System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
    System.setProperty("javax.xml.parsers.SAXParserFactory","com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
    System.setProperty("javax.xml.transform.TransformerFactory","com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");
    If you have a lot of test cases, this becomes painful.
    Option 2: Create your own Service Provider definition files in the compile/runtime classpath for your project, which will override those included in xmlparserv2.jar.
    In a maven spring project, override the xmlparserv2.jar settings by creating the following files in the %PROJECT_HOME%/src/main/resources directory:
    %PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl as the default)
    %PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.SAXParserFactory (which defines com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl as the default)
    %PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory (which defines com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl as the default)
    These files are referenced by both the application server (no JVM arguments required), and solves any unit test issues without requiring any code changes.
    This is a snippet of my longer solution for how to get hibernate and spring to work with an oracle XMLType column, found on stackoverflow.

Maybe you are looking for