在我正在研究的项目的下一步中,我遇到了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示例中的所有文本而不仅仅是我感兴趣的数据。
由于导入似乎有效并且名称空间约定似乎适用于另一张海报,我有点不知所措。有没有人对我出错的地方有一些指示?
答案 0 :(得分:3)
XML文档有xmlns="http://www.ledes.org/ledes20.xsd"
,而XSLT使用xmlns:t="http://www.ledes.org/ledes2000.xsd"
而不是ledes2000
声明ledes20
。您需要在两个文档中使用相同的命名空间URL。