XSLT命名空间问题

时间:2015-07-09 16:26:15

标签: xslt namespaces filemaker

在我正在研究的项目的下一步中,我遇到了xslt文件中的命名空间语句问题。我承认问题可能与此问题中的问题相同:Filemaker XSL Importing blank fields。但是,我无法理解那里的解决方案,并且觉得答案可能更简单一些,即我以某种方式搞砸了语法。

我正在使用的xml是:

    <?xml version="1.0" encoding="utf-8" ?>
    <ledesxml xmlns="http://www.ledes.org/ledes20.xsd">
      <firm>
        <lf_vendor_id>test</lf_vendor_id>
      </firm>
    </ledesxml> 

我目前使用的xslt是:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
    xmlns="http://www.ledes.org/ledes2000.xsd"
    xmlns:t="http://www.ledes.org/ledes2000.xsd"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">

<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">

    <METADATA>
        <FIELD NAME="lf_vendor_id" TYPE="TEXT"/>
    </METADATA>

    <RESULTSET>
        <ROW>
            <COL><DATA><xsl:value-of select="/t:ledesxml/t:firm/t:lf_vendor_id"/></DATA></COL>
        </ROW>
    </RESULTSET>

</FMPXMLRESULT>

</xsl:template>
</xsl:stylesheet>

导入到Filemaker会产生没有任何数据的新记录。此处的xml输入是行业标准,不会更改(至少在目前用途)。

这里使用名称空间有点令人困惑,几乎完全基于上面链接的问题中使用的命名空间。在“value-of select”语句中使用通配符确实有效,但正如您所料,抓取xml示例中的所有文本而不仅仅是我感兴趣的数据。

由于导入似乎有效并且名称空间约定似乎适用于另一张海报,我有点不知所措。有没有人对我出错的地方有一些指示?

1 个答案:

答案 0 :(得分:3)

XML文档有xmlns="http://www.ledes.org/ledes20.xsd",而XSLT使用xmlns:t="http://www.ledes.org/ledes2000.xsd"而不是ledes2000声明ledes20。您需要在两个文档中使用相同的命名空间URL。