Filemaker导入问题中的XSL

时间:2014-01-18 19:58:07

标签: xslt filemaker

我有一个XML文件,开头如下:

<?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 个答案:

答案 0 :(得分: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>