Игнорирайте пространството на имената с префикс t:

Имаме XML файл като по-долу...

<?xml version='1.0'?>
<T0020 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd"
    xmlns="http://www.safersys.org/namespaces/T0020V1">

    <IRP_ACCOUNT>
        <IRP_CARRIER_ID_NUMBER>1213561</IRP_CARRIER_ID_NUMBER>
        <IRP_BASE_COUNTRY>US</IRP_BASE_COUNTRY>
        <IRP_BASE_STATE>AL</IRP_BASE_STATE>
        <IRP_ACCOUNT_NUMBER>15485</IRP_ACCOUNT_NUMBER>
        <IRP_ACCOUNT_TYPE>I</IRP_ACCOUNT_TYPE>
        <IRP_STATUS_CODE>0</IRP_STATUS_CODE>
        <IRP_STATUS_DATE>2004-02-23</IRP_STATUS_DATE>
        <IRP_UPDATE_DATE>2007-03-09</IRP_UPDATE_DATE>
        <IRP_NAME>
            <NAME_TYPE>LG</NAME_TYPE>
            <NAME>WILLIAMS TODD</NAME>
            <IRP_ADDRESS>
                <ADDRESS_TYPE>MA</ADDRESS_TYPE>
                <STREET_LINE_1>P O BOX 1210</STREET_LINE_1>
                <STREET_LINE_2/>
                <CITY>MARION</CITY>
                <STATE>AL</STATE>
                <ZIP_CODE>36756</ZIP_CODE>
                <COUNTY/>
                <COLONIA/>
                <COUNTRY>US</COUNTRY>
            </IRP_ADDRESS>
        </IRP_NAME>
    </IRP_ACCOUNT>
</T0020>

За да вмъкнем тези XML данни в базата данни, използвахме два XSLT. Първо XSLT ще премахне пространството на имената от XML файла и ще преобразува този XML в някакъв междинен XML (да речем Process.xml) файл на някакво временно местоположение.

след това взехме този междинен xml (без редове за пространство от имена) и приложихме друг XSL, за да картографираме xml поле към базата данни.

След това намерихме решение и използвахме само един XSLT, който предвещава [1] Премахване на пространство от имена и [2] Съпоставяне на XML поле към база данни за вмъкване на данни.

Нашият окончателен стилов лист съдържа следните редове

xmlns:t="http://www.safersys.org/namespaces/T0020V1">

и използвахме следното, за да картографираме поле към база данни

  <xsl:template match="/">
       <xsl:element name="T0020">
           <xsl:apply-templates select="t:T0020/t:IRP_ACCOUNT" /> 
      </xsl:element>
 </xsl:template>

как се реши нашият проблем с този подход? Някакви последствия от използването на това? Търсих за това, но не получих функционалността.

Благодаря предварително..


person Nisarg Mehta    schedule 08.01.2010    source източник


Отговори (1)


Не виждам никакви проблеми във вашия подход.

XSLT налага пълно квалифицирано име за правилно съвпадение, така че използването на пространство от имена с префикс във вашия XSLT е правилното решение; затова реши проблема си.

person Laurent Etiemble    schedule 08.01.2010
comment
добре, разбрах подхода на пространството на имената с префикс. Благодаря за вашата помощ. - person Nisarg Mehta; 02.02.2010