2010-01-08 248 views
1

我們有XML文件像下面...忽略名稱空間T:前綴

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

怎麼用這個方法解決了我們的問題?用這個什麼後果嗎? 我已經搜索了這個,但沒有得到功能。

在此先感謝..

回答

2

我沒有看到您的方法有任何問題。對於正確匹配

XSLT任務完全合格的名稱,因此,使用您的XSLT前綴名字空間是正確的解決方案;這就是爲什麼你解決了你的問題。

+0

好的,我已經理解了前綴名稱空間的方法。 感謝您的幫助。 – 2010-02-02 10:52:51