读书人

Saxon处理器处理XML的转换(带查询数据

发布时间: 2012-03-24 14:00:46 作者: rapoo

Saxon处理器处理XML的转换(带查询数据库的),hold不住了,大家帮帮我吧
原XSLT文件,加载本地文件作为参数

XML code
<!-- set output -->    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>    <!-- load other xml as param-->    <xsl:param name="Articles2" select="'../Articles.xml'"/>        <!-- 这里加载的本地文件 -->    <xsl:param name="ShortPO2" select="'../ShortPO.xml'"/>


现在想把上面文件的选择属性,选择从数据库中查询一个XML出来。

这里定义一个模版访问数据(访问数据库是正常的),查询XML,作为参数
XML code
<xsl:param name="ShortPO2">        <xsl:variable name="xsltstr">            <!-- 调用模版 -->            <xsl:call-template name="getXSLT">                <!-- 设置参数 -->                <xsl:with-param name="jdbc.driver">com.microsoft.sqlserver.jdbc.SQLServerDriver</xsl:with-param>                <xsl:with-param name="jdbc.database" as="xsd:string" select="string('jdbc:sqlserver://localhost:1433;databaseName=CnnTest')"/>                <xsl:with-param name="table" select="string('dbo.xslt')"/>                <xsl:with-param name="where" select="string('id=2')"/>            </xsl:call-template>        </xsl:variable>        <xsl:value-of select="string($xsltstr)"/>    </xsl:param>       <xsl:template match="/">        <!-- 输出参数的值 -->        <xsl:value-of select="$ShortPO2"/>    </xsl:template>


当output method="xml" 时候,输出结果就是下面这个样子
XML code
<?xml version="1.0" encoding="UTF-8"?>
<ShortPO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="ShortPO.xsd">
    <CustomerNr>3</CustomerNr>
    <LineItems>
        <LineItem>
            <ArticleNr>3</ArticleNr>
            <Amount>5</Amount>
        </LineItem>
        <LineItem>
            <ArticleNr>1</ArticleNr>
            <Amount>17</Amount>
        </LineItem>
    </LineItems>
</ShortPO>


当output method 设置为 text时候,输出正常为一个标准的XML。
XML code
<?xml version="1.0" encoding="UTF-8"?><ShortPO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:noNamespaceSchemaLocation="ShortPO.xsd">    <CustomerNr>3</CustomerNr>    <LineItems>        <LineItem>            <ArticleNr>3</ArticleNr>            <Amount>5</Amount>        </LineItem>        <LineItem>            <ArticleNr>1</ArticleNr>            <Amount>17</Amount>        </LineItem>    </LineItems></ShortPO>


但是我现在需要将output method为xml,但输出结果是一个正常的XML,该怎么做啊?

有什么xpath的函数,或者xsl有什么函数呢?可以将上面那个不是XML文件转换为XML文件。
求个方案,或者方法!hold 不住了!


[解决办法]
没用过Saxon,是说不用数据库查询时候Saxon的输出都是正确的么?用XMLSpy也这样么?


[解决办法]
单就这个例子而言

XML code
<xsl:param select="<?xml version="1.0" encd?><ShortPO>.......</ShortPO>"> 

读书人网 >XML SOAP

热点推荐