我需要使用Saxon java工具(命令行)从xsl查询mysql数据库?

时间:2013-01-22 13:55:49

标签: java mysql xslt saxon jdbc-odbc

我想使用java工具SAXON查询数据库

  1. 使用ODBC连接连接到mysql数据库
  2. 查询数据库(可能是信息架构-read架构)
  3. 将结果导出到xml
  4. 这是撒克逊人的许可功能(例如saxon9ee)吗?
    如果是,是否有任何其他开源选项可以实现相同级别的功能?
    我已经下载了saxon9ee.jar + saxon9he.jar并且玩了一下。

    到目前为止我做了什么:

    XSLT:connect.xslt

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      exclude-result-prefixes="#all"
      xmlns:sql="http://saxon.sf.net/sql"
      extension-element-prefixes="sql"
      version="2.0">
    
        <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    
        <xsl:param name="driver" select="'com.mysql.jdbc.Driver'"/>
        <xsl:param name="database" select="'jdbc:mysql://localhost/databaename'"/>
        <xsl:param name="user" select="'usr'"/>
        <xsl:param name="password" select="'pwd'"/>
    
        <xsl:template match="//databaseObjects">
                <xsl:message>Connecting to database...</xsl:message>
    
                <!-- The "connection" variable establishes JDBC connection by selecting as its value the SQL connection to the database.!-->
    
               <xsl:variable name="connection" as="java:java.lang.Object" xmlns:java="http://saxon.sf.net/java-type">
                    <sql:connect driver="{$driver}" database="{$database}" user="{$user}" password="{$password}">
    
                       <!-- Used primarily for debugging, if, 
                       for whatever reason, the credentials or something incorrect is passed in the connect statement, 
                       the process will terminate with the following message -->
                        <xsl:fallback>
                            <xsl:message terminate="yes">Connection to MySQL failed.</xsl:message>
                        </xsl:fallback>
                       </sql:connect>
                </xsl:variable>
    
    
         <sql:close connection="$connection"/>
     </xsl:template>
    </xsl:stylesheet>
    

    XML:objects.xml

    (粗略的想法)

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <databaseObjects>
        <object type="triggers"/>
        <object type="functions"/>
        <object type="procedures"/>
        <object type="views"/>
        <object type="events"/>
    </databaseObjects>
    

    的命令:

    java -jar ~/saxon/saxon9he.jar   objects.xml connect.xslt 
    

    输出:

    No license file found - running with licensable features disabled Connecting to database... Error on line 17 of connect.xslt: XTDE1450: Unknown extension instruction in built-in template rule Transformation failed: Run-time errors were reported

    任何形式的帮助都很明显,谢谢

1 个答案:

答案 0 :(得分:1)

使用以下过程:

  • 安装MySQL Connector / J(MySQL的官方JDBC驱动程序)
  • 安装Apache Ant
  • 创建/修改Ant任务:
    • 连接到MySQL
    • 运行查询
    • 获取XML输出
    • 通过Saxon处理XML

<强>参考