Filemaker xslt 导入

Filemaker xslt Import

这个问题还有另一个问题,但没有解决我的问题。顺便说一句,我还不是新手。

这是他用的xml,只是我稍微修改了一下。我需要一个 xslt 文档来导入 FMP

<orders>
 <order>
  <order-no>1001</order-no>
   <line-items>
    <line-item>
     <product-id>knife</product-id>
     <product-id>Fork</product-id>
     <product-id>Spoon</product-id>
     <something>bbb</something>
     <something>ccc</something>
     <something>ddd</something>
   </line-item>
   <line-item>
     <product-id>plunger</product-id>
     <product-id>Brush</product-id>
     <product-id>Stool</product-id>
     <something>hhh</something>
     <something>jjj</something>
    <something>lll</something>
   </line-item>
  </line-items>
</orders>

我需要的是一个 xslt,它将显示在 Filemaker 导入对话框屏幕中,如下所示。

product-id > FMP 中的 ProdID 字段 something > FMP 中的 something 字段,但需要从 something 中的第一行获取 something "Knife" > FMP 中的 ProdID "bbb" > something 字段 然后导入到 FMP 的下一条记录将是第二行并从某处获取第二行 "Fork" > FMP 中的 ProdID "ccc" >东西领域 然后导入到 FMP 的下一条记录将是第 3 行,并从某处获取第 3 行 "Spoon" > FMP 中的 ProdID "ddd" > 某个字段。

然后转到下一个 "line-item" 元素并重新做一遍。

我希望这个感觉。我有一个 xslt 文档,但是当它位于 ProdID 的第 2、3 行时,我无法将它转到 select 第 2、3... 行。

我已经为此工作了 2 天,但离解决方案还差得很远。我的 xml 与此完全不同,但如果我知道如何在这个简化的 xml 中做到这一点,我可以修改我的 xslt 以适应它。

感谢您的帮助!

斯科特

很难理解你的描述。我认为你想使用类似的东西:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
        <METADATA>
            <FIELD NAME="ProductID" TYPE="TEXT"/>
            <FIELD NAME="Something" TYPE="TEXT"/>
        </METADATA>
        <RESULTSET>
            <xsl:for-each select="orders/order/line-items/line-item">
                <ROW>
                    <COL><DATA><xsl:value-of select="product-id[1]"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="something[1]"/></DATA></COL>
                </ROW>
                <ROW>
                    <COL><DATA><xsl:value-of select="product-id[2]"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="something[2]"/></DATA></COL>
                </ROW>
                <ROW>
                    <COL><DATA><xsl:value-of select="product-id[3]"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="something[3]"/></DATA></COL>
                </ROW>
            </xsl:for-each>
        </RESULTSET>
    </FMPXMLRESULT>
</xsl:template>

</xsl:stylesheet>

这将为源中的每个行项目创建 3 条记录(每条记录有 2 个字段)XML。

注意:您必须使用 FMP 版本 11 或更高版本才能使其工作。


编辑:

Lets say there are 21 productID as well as something on each line-item?

如果每个订单项中有那么多产品,请使用:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
        <METADATA>
            <FIELD NAME="ProductID" TYPE="TEXT"/>
            <FIELD NAME="Something" TYPE="TEXT"/>
        </METADATA>
        <RESULTSET>
            <xsl:for-each select="orders/order/line-items/line-item">
                <xsl:for-each select="product-id">
                    <xsl:variable name="i" select="position()"/>
                    <ROW>
                        <COL><DATA><xsl:value-of select="."/></DATA></COL>
                        <COL><DATA><xsl:value-of select="../something[$i]"/></DATA></COL>
                    </ROW>
                </xsl:for-each>
            </xsl:for-each>
        </RESULTSET>
    </FMPXMLRESULT>
</xsl:template>

</xsl:stylesheet>