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>
这个问题还有另一个问题,但没有解决我的问题。顺便说一句,我还不是新手。
这是他用的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>