2010-05-05 2 views
0

Я извлекаю данные из двух таблиц CARRIER_IFTA, IFTA_NAME. My Select Query как ниже ..Как сгенерировать XML из базы данных

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

Можете ли вы дать образец XML, который вы передаете XSLT? Ваш запрос возвращает простой набор строк и поэтому должен, по крайней мере, преобразовать XML где-нибудь перед применением XSLT. –

+0

Actully Я пытаюсь преобразовать его непосредственно из базы данных в XML с помощью XSLT. Должен ли я генерировать Intermidiate XML, а затем преобразовать его в My Result xml? –

+0

Да, XSLT может преобразовывать XML только в нечто другое. Я не знаю, как использовать XSLT для чтения чего-то другого, кроме XML. – ilikeorangutans

ответ

1

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

+0

Правильно я использую OracleXMLQuery Oracle для создания xml из таблицы Oracle. –

+0

О, вы действительно хотите преобразовать один XML в другой XML? Я не делаю Oracle, но насколько я знаю, вы могли бы настроить вывод XML, созданный Oracle? – BalusC

+0

Нет, я хочу генерировать XML из базы данных Oracle с помощью OracleXMLQuery. –

Смежные вопросы