XSLT 命名空间问题

XSLT Namespace troubles

在我正在处理的项目的下一步中,我遇到了 xslt 文件中的 namespace 语句的问题。我承认这个问题可能与这个问题中发现的问题相同:。但是,我无法理解那里的解决方案,并且觉得答案可能会更简单一些,即我以某种方式搞砸了语法。

我正在使用的 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 输入是行业标准,不会改变(至少就目前而言)。

此处名称 spaces 的使用有点令人困惑,并且几乎完全基于上面链接的问题中使用的名称spaces。在 "value-of select" 语句中使用通配符确实有效,但如您所料,它会获取 xml 示例中的所有文本,而不仅仅是我感兴趣的数据。

由于导入似乎有效并且名称 space 约定似乎对另一张海报有效,我有点不知所措。有没有人指出我哪里出错了?

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