2014-01-18 79 views
0

我有這樣開始的XML文件:XSL在FileMaker導入問題

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<MensajeFacturacion xmlns="http://localhost/elegibilidad" AgenteSolicitante="0021"> 
<Cabecera> 
... 

我試圖將此文件導入的FileMaker的信息,但它是不可能的,因爲在節點MensajeFacturacion我有xmlns="http://localhost/elegibilidad"。如果我擦除命名空間,文件導入就好了。

這是XSL的樣子:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:fmp="http://www.filemaker.com/fmpxmlresult" 
       exclude-result-prefixes="fmp"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/> 

    <xsl:template match="/"> 
    <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> 
     <ERRORCODE>0</ERRORCODE> 
     <PRODUCT BUILD="03-15-2012" NAME="FileMaker" VERSION="ProAdvanced 12.0v1"/> 
     <DATABASE DATEFORMAT="D/m/yyyy" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT="k:mm:ss "/> 

     <METADATA> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Codigo_empresa_emisora" TYPE="TEXT"/> 
     <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="CUPS" TYPE="TEXT"/> 
     </METADATA> 

     <RESULTSET FOUND=""> 
     <ROW RECORDID="" MODID="" > 
      <COL><DATA><xsl:value-of select="//Cabecera/CodigoREEEmpresaEmisora"/></DATA></COL> 
      <COL><DATA><xsl:value-of select="//Medidas/CodUnificadoPuntoSuministro"/></DATA></COL> 
     </ROW> 
     </RESULTSET> 
    </FMPXMLRESULT> 
    </xsl:template> 
</xsl:stylesheet> 

如何獲取導入與命名空間的工作嗎?

回答

1

您需要在<stylesheet>元素中聲明源文檔的名稱空間,爲它分配一個前綴並在尋址源文檔的元素時使用該前綴。所以,你的樣式表的根元素應該是這樣的:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns="http://localhost/elegibilidad"> 

(注意,這是需要聲明這裏的Filemaker命名空間),和您的通話獲取數據需要被改爲:

<COL><DATA><xsl:value-of select="//ns:Cabecera/ns:CodigoREEEmpresaEmisora"/></DATA></COL> 
<COL><DATA><xsl:value-of select="//ns:Medidas/ns:CodUnificadoPuntoSuministro"/></DATA></COL>