Игнорировать пространство имен с префиксом 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