Как сгенерировать XML из базы данных - PullRequest
0 голосов
/ 05 мая 2010

Я получаю данные из двух таблиц CARRIER_IFTA, IFTA_NAME. Мой выбранный запрос, как показано ниже ..

SELECT t1.IFTA_LICENSE_NUMBER,t1.IFTA_BASE_STATE,t2.NAME_TYPE,t2.NAME
from CARRIER_IFTA t1 inner join  IFTA_NAME t2
    on t1.IFTA_LICENSE_NUMBER=t2.IFTA_LICENSE_NUMBER

Мои данные поступают таким образом ...

IFTA_LICENSE_NUMBER   IFTA_BASE_STATE  NAME_TYPE  NAME
--------------------------------------------------------
630908333                 US            LG        XYZ
630908333                 US            MG        PQR
730908344                 US            LG        ABC

Теперь, используя XSLT, я хочу сгенерировать XML следующим образом

<T0019>
  <IFTA_ACCOUNT>
    <IFTA_LICENSE_NUMBER>630908333</IFTA_LICENSE_NUMBER>
    <IFTA_BASE_STATE>US</IFTA_BASE_STATE>
    <IFTA_NAME>
       <NAME_TYPE>LG<NAME_TYPE>
       <NAME>XYZ</NAME>
    </IFTA_NAME>
    <IFTA_NAME>
       <NAME_TYPE>MG<NAME_TYPE>
       <NAME>PQR</NAME>
    <IFTA_NAME>
  </IFTA_ACCOUNT>
  <IFTA_ACCOUNT>
     <IFTA_LICENSE_NUMBER>730908344</IFTA_LICENSE_NUMBER>
     <IFTA_BASE_STATE>US</IFTA_BASE_STATE>
     <IFTA_NAME>
       <NAME_TYPE>LG<NAME_TYPE>
       <NAME>ABC</NAME>
    </IFTA_NAME>
  </IFTA_ACCOUNT>     

</T0019>

Я использовал ниже xslt, но это не дает мне желаемого результата ...

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:template match="/ROWSET">
        <xsl:element name="T0019">
            <xsl:apply-templates select="IFTAACCOUNT"/>
        </xsl:element>
    </xsl:template> 
    <xsl:template match="IFTAACCOUNT">
        <xsl:element name="IFTAACCOUNT">
            <xsl:apply-templates select="IFTA_CARRIER_ID_NUMBER"/>
        </xsl:element>
    </xsl:template>
   <xsl:template match="IFTA_LICENSE_NUMBER">
            <xsl:element name="IFTA_LICENSE_NUMBER">
                <xsl:apply-templates />
            </xsl:element>
    </xsl:template> 

<xsl:template match="IFTA_BASE_STATE">
            <xsl:element name="IFTA_BASE_STATE">
                <xsl:apply-templates />
            </xsl:element>
    </xsl:template> 
<xsl:template match="IRP_NAME">
     <IRP_NAME>
        <xsl:apply-templates select="NAME"/>    
        <xsl:apply-templates select="NAME_TYPE"/>       
     </IRP_NAME>            
    </xsl:template> 

    <xsl:template match="NAME">
            <xsl:element name="NAME">
                <xsl:value-of select="." />
            </xsl:element>
    </xsl:template> 

    <xsl:template match="NAME_TYPE">
            <xsl:element name="NAME_TYPE">
                <xsl:apply-templates />
            </xsl:element>
    </xsl:template> 

</xsl:stylesheet>

но это не дает желаемого результата ...

Пожалуйста, помогите мне ...

Заранее спасибо ...

1 Ответ

1 голос
/ 05 мая 2010

Большинство СУБД предоставляет встроенные инструменты для возврата прямого XML без необходимости XSL. Какой вы используете? Обратитесь к его документации. Если это, например, MySQL, то вам нужна опция --xml .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...