2010-01-08 6 views
1

Nous avons fichier XML comme ci-dessous ...Ignore espace de nom avec T: préfixe

<?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> 

Pour insérer ces données XML à base de données, nous avons utilisé deux XSLT. Le premier XSLT supprimera l'espace de nom du fichier XML et convertira ce fichier XML en un fichier XML (par exemple Process.xml) intermédiaire sur un emplacement temporaire.

alors nous prenions ce XML intermédiaire (sans lignes d'espace de nommage) et nous avons appliqué un autre XSL pour mapper le champ xml à la base de données.

Ensuite, nous avons trouvé la solution et nous avons utilisé seulement un XSLT qui bode [1] Remove namespace et [2] Mapping XML field à la base de données pour insérer des données.

Notre feuille de style final contient des lignes suivantes

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

et nous avons utilisé ci-dessous pour cartographier le champ de la base de données

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

Comment notre problème résolu avec cette approche? Les conséquences l'utilisation de ce? J'ai cherché à ce sujet, mais ne pas obtenir la fonctionnalité.

Merci à l'avance ..

Répondre

2

Je ne vois pas de problème avec votre approche. XSLT exige un nom complet pour une correspondance correcte. L'utilisation d'un espace de noms préfixé dans votre XSLT est donc la bonne solution. C'est pourquoi vous avez résolu votre problème.

+0

ok j'ai compris l'approche de l'espace de nom préfixé. Merci pour votre aide. –

Questions connexes