在学习将XML项目导入Filemaker 13时,我使用" xsl:for-each"来解决问题。获取多行数据以进行导入。我一直在使用的XML是W3 Schools Music Example。
我用来转换这个XML的XSL如下:
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<METADATA>
<FIELD NAME="Title" TYPE="TEXT"/>
<FIELD NAME="Artist" TYPE="TEXT"/>
<FIELD NAME="Country" TYPE="TEXT"/>
<FIELD NAME="Company" TYPE="TEXT"/>
<FIELD NAME="Price" TYPE="NUMBER"/>
<FIELD NAME="Year" TYPE="NUMBER"/>
</METADATA>
<RESULTSET>
<xsl:for-each select="catalog/cd">
<ROW>
<COL>
<DATA><xsl:value-of select="catalog/cd/title"/></DATA>
</COL>
<COL>
<DATA><xsl:value-of select="catalog/cd/artist"/></DATA>
</COL>
<COL>
<DATA><xsl:value-of select="catalog/cd/country"/></DATA>
</COL>
<COL>
<DATA><xsl:value-of select="catalog/cd/company"/></DATA>
</COL>
<COL>
<DATA><xsl:value-of select="catalog/cd/price"/></DATA>
</COL>
<COL>
<DATA><xsl:value-of select="catalog/cd/year"/></DATA>
</COL>
</ROW>
</xsl:for-each>
</RESULTSET>
</FMPXMLRESULT>
</xsl:template>
</xsl:stylesheet>
如果我删除&#34; xsl:for-each&#34;我会可靠地从导入到Filemaker的XML中获取第一条记录。使用&#34; xsl:for-each&#34;如图所示,我将得到26条空白记录。 XML中有26个项目,这很好,但我没有得到任何数据。
顺便说一下,如果xsl选择字符串被修改为读取&#34; catalog / cd / title [4]&#34;,我认为应该返回XML中的第四条记录,我再次得到一个空白记录。
我在这里缺少什么?
答案 0 :(得分:2)
for-each
内部节点内部是cd
元素,因此您的路径需要相对于<xsl:value-of select="title"/>