H2优化XSLT以转换Shopify XML以进行FileMaker导入

H2优化XSLT以转换Shopify XML以进行FileMaker导入,xslt,shopify,filemaker,Xslt,Shopify,Filemaker,我正在尝试转换以下Shopify XML <orders> <order> <order-no>1001</order-no> <line-items> <line-item> <product-id>knife</product-id> </line-item> <line-item> &

我正在尝试转换以下Shopify XML

<orders>
  <order>
    <order-no>1001</order-no>
    <line-items>
      <line-item>
        <product-id>knife</product-id>
      </line-item>
      <line-item>
        <product-id>fork</product-id>
      </line-item>
    </line-items>
    <shipping-address>
      <post-code>rh10 3hs</post-code> 
    </shipping-address>
  </order>
</orders>

1001
刀
叉
rh10 3hs
到FileMaker FMPXMLRESULT Grammar

<ROW> 
  <COL>
    <DATA>1001</DATA>
  </COL>
  <COL>
    <DATA>Knife</DATA>
  </COL>
  <COL>
    <DATA>rh10 3hs</DATA>
  </COL>
</ROW>
<ROW> 
  <COL>
    <DATA>1001</DATA>
  </COL>
  <COL>
    <DATA>Fork</DATA>
  </COL>
  <COL>
    <DATA>rh10 3hs</DATA>
  </COL>
</ROW>

1001
刀
rh10 3hs
1001
叉
rh10 3hs
i、 e.
1001刀rh10 3hs
1001叉子rh10 3hs

使用FileMaker xslt示例

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">       
    <xsl:template match="/*">
        <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
            <ERRORCODE>0</ERRORCODE>
            <PRODUCT BUILD="" NAME="" VERSION=""/>
            <DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="" RECORDS="{count(/*/*)}" TIMEFORMAT="h:mm:ss a"/>
            <METADATA>
                <xsl:for-each select="/*/*[position()=1]/*">
                    <FIELD>
                        <xsl:attribute name="EMPTYOK">YES</xsl:attribute>
                        <xsl:attribute name="MAXREPEAT">1</xsl:attribute>
                        <xsl:attribute name="NAME"><xsl:value-of select="name()"/></xsl:attribute>
                        <xsl:attribute name="TYPE">TEXT</xsl:attribute>
                    </FIELD>
                </xsl:for-each>
            </METADATA>
            <RESULTSET>
                <xsl:attribute name="FOUND"><xsl:value-of select="count(child::*)"/></xsl:attribute>
                <xsl:for-each select="child::*">
                    <ROW>
                        <xsl:attribute name="MODID">0</xsl:attribute>
                        <xsl:attribute name="RECORDID">0</xsl:attribute>
                        <xsl:for-each select="child::*">
                            <COL>
                                <DATA>
                                    <xsl:value-of select="."/>
                                </DATA>
                            </COL>
                        </xsl:for-each>
                    </ROW>
                </xsl:for-each>
            </RESULTSET>
        </FMPXMLRESULT>
    </xsl:template>
</xsl:stylesheet>

0
对
1.
正文
0
0
但这会提取每个订单的顶级订单详细信息,忽略子订单和子订单

我是一个完全的初学者,曾在网上和论坛上尝试过许多行的排列方式,但老实说,这只是猜测,最初的兴高采烈开始被绝望所取代-(

非常感谢任何提示

非常感谢,,
Jim

在Filemaker中,一次只能导入到一个表中。每次导入都需要一个单独的样式表。此样式表用于导入到LineItems表中:

<?xml version="1.0" encoding="UTF-8"?>
<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">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="" NAME="" VERSION=""/>
<DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>

<METADATA>
<FIELD NAME="OrderID" TYPE="TEXT" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="ProductID" TYPE="TEXT" EMPTYOK="YES" MAXREPEAT=""/>
</METADATA>

<RESULTSET FOUND="">

<xsl:for-each select="orders/order/line-items/line-item">

<ROW MODID="" RECORDID="">
<COL><DATA><xsl:value-of select="../../order-no"/></DATA></COL>
<COL><DATA><xsl:value-of select="product-id"/></DATA></COL>
</ROW>

</xsl:for-each>

</RESULTSET>
</FMPXMLRESULT>

</xsl:template>
</xsl:stylesheet>

0
这一个用于导入到Orders表中:

<?xml version="1.0" encoding="UTF-8"?>
<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">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="" NAME="" VERSION=""/>
<DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>

<METADATA>
<FIELD NAME="OrderID" TYPE="TEXT" EMPTYOK="YES" MAXREPEAT=""/>
<FIELD NAME="PostCode" TYPE="TEXT" EMPTYOK="YES" MAXREPEAT=""/>
</METADATA>

<RESULTSET FOUND="">

<xsl:for-each select="orders/order">

<ROW MODID="" RECORDID="">
<COL><DATA><xsl:value-of select="order-no"/></DATA></COL>
<COL><DATA><xsl:value-of select="shipping-address/post-code"/></DATA></COL>
</ROW>

</xsl:for-each>

</RESULTSET>
</FMPXMLRESULT>

</xsl:template>
</xsl:stylesheet>

0