0

Filemaker 12 からデータをエクスポートして、SOAP 呼び出しを作成し、Web サイト (magento) を更新しています。

いくつかのノードを移動する必要があるという事実を除いて、ほとんどすべてを機能させることができます

私は現在持っています(スニペット)

<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
  <RESULTSET FOUND="1">
    <ROW MODID="4431" RECORDID="31">
      <!-- column 15 -->
      <COL> <!-- customer group -->
        <DATA>all</DATA>
        <DATA>all</DATA>
        <DATA>education</DATA>
      </COL>
      <!-- column 16 -->
      <COL> <!-- qty -->
        <DATA>5</DATA>
        <DATA>10</DATA>
        <DATA>100</DATA>
      </COL>
      <!-- column 17 -->
      <COL> <!-- sale price -->
        <DATA>1300</DATA>
        <DATA>1250</DATA>
        <DATA>1225</DATA>
      </COL>
      <!-- column 18 -->
      <COL> <!-- website -->
        <DATA>1</DATA>
        <DATA>1</DATA>
        <DATA>2</DATA>
      </COL>
    </ROW>
  </RESULTSET>
</FMPXMLRESULT>

私がそれをどのように見せたいかは次のとおりです。

<item>
    <customer_group>all</customer_group
    <qty>5</qty>
    <price>1300</price>
    <website>1</website>
</item>
<item>
    <customer_group>all</customer_group
    <qty>10</qty>
    <price>1250</price>
    <website>1</website>
</item>
<item>
    <customer_group>education</customer_group
    <qty>100</qty>
    <price>1225</price>
    <website>2</website>
</item>

私の現在のスタイルシートは次のようになります(これも関連するスニペットのみです)

                <xsl:for-each select="fmp:COL[15]/fmp:DATA">
                  <xsl:variable name="location">
                    <xsl:value-of select="position()" />
                  </xsl:variable>
                  <item>
                    <customer_group_id xsi:type="xsd:string">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[15]/fmp:DATA[$location]" />
                    </customer_group_id>
                    <qty xsi:type="xsd:int">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[16]/fmp:DATA[$location]" />
                    </qty>
                    <price xsi:type="xsd:double">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[17]/fmp:DATA[$location]" />
                    </price>
                    <website xsi:type="xsd:string">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[18]/fmp:DATA[$location]" />
                    </website>
                  </item>
                </xsl:for-each>

これは、すべての customer_group 、qty、price、web サイトを含む 3 つの要素を構築するという点でほぼ機能しますが、データは取り込まれません。

誰でも助けることができますか?

filemaker の出力全体は次のとおりです。45 1 my-url-to-product 4 1700 01/01/2199 02/01/2199 2 すべて すべての教育 5 10 100 1300 1250 1225 1 1 2 ドラムキットのもの もう少し text 0 stock_message リクエストに応じて注文1

XSLT スタイルシート全体は次のとおりです。

<?xml version="1.0" encoding="utf-8" standalone='no'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fmp="http://www.filemaker.com/fmpxmlresult" exclude-result-prefixes="fmp" xmlns:sc="http://schemas.google.com/structuredcontent/2009" xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:gd="http://schemas.google.com/g/2005" xmlns:scp="http://schemas.google.com/structuredcontent/2009/products">
  <xsl:output method="xml" version="1.0" encoding="windows-1251" indent="yes" />
  <xsl:template match="/">
    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="urn:Magento">
      <SOAP-ENV:Body>
        <ns1:catalogProductUpdate>
          <xsl:for-each select="fmp:FMPXMLRESULT/fmp:RESULTSET/fmp:ROW">
            <sessionId xsi:type="xsd:string">sessionIDstring</sessionId>
            <product xsi:type="xsd:string">
              <xsl:value-of select="fmp:COL[1]/fmp:DATA" />
            </product>
            <productData>
              <categories SOAP-ENC:arrayType="ns:ArrayOfString[1]">
                <xsl:for-each select="fmp:COL[2]/fmp:DATA">
                  <item xsi:type="xsd:string">
                    <xsl:value-of select="." />
                  </item>
                </xsl:for-each>
              </categories>
              <websites SOAP-ENC:arrayType="ns:ArrayOfString[1]">
                <xsl:for-each select="fmp:COL[3]/fmp:DATA">
                  <item xsi:type="xsd:string">
                    <xsl:value-of select="." />
                  </item>
                </xsl:for-each>
              </websites>
              <name xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[4]/fmp:DATA" />
              </name>
              <description xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[5]/fmp:DATA" />
              </description>
              <short_description xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[6]/fmp:DATA" />
              </short_description>
              <weight xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[7]/fmp:DATA" />
              </weight>
              <status xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[8]/fmp:DATA" />
              </status>
              <url_key xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[9]/fmp:DATA" />
              </url_key>
              <visibility xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[10]/fmp:DATA" />
              </visibility>
              <category_ids />
              <website_ids />
              <price xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[11]/fmp:DATA" />
              </price>
              <special_from_date xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[12]/fmp:DATA" />
              </special_from_date>
              <special_to_date xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[13]/fmp:DATA" />
              </special_to_date>
              <tax_class_id xsi:type="xsd:string">
                <xsl:value-of select="fmp:COL[14]/fmp:DATA" />
              </tax_class_id>
              <tier_price SOAP-ENC:arrayType="ns:catalogProductTierPriceEntityArray[1]">
                <item_count>
                  <xsl:value-of select="count(//fmp:ROW/fmp:COL[15]/fmp:DATA)" />
                </item_count>
                <xsl:variable name="tierCount">
                  <xsl:value-of select="count(//fmp:ROW/fmp:COL[15]/fmp:DATA)" />
                </xsl:variable>
                <!-- count how many tiered thingys we have and hope that the data is correct in FM and there are no blank fields -->
                <item_var>
                  <xsl:value-of select="$tierCount" />
                </item_var>
                <xsl:variable name="count">
                  <xsl:number />
                </xsl:variable>
                <xsl:for-each select="fmp:COL[15]/fmp:DATA">
                  <xsl:variable name="location">
                    <xsl:value-of select="position()" />
                  </xsl:variable>
                  <item>
                    <customer_group_id xsi:type="xsd:string">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[15]/fmp:DATA[$location]" />
                    </customer_group_id>
                    <qty xsi:type="xsd:int">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[16]/fmp:DATA[$location]" />
                    </qty>
                    <price xsi:type="xsd:double">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[17]/fmp:DATA[$location]" />
                    </price>
                    <website xsi:type="xsd:string">
                      <xsl:value-of select="//fmp:ROW/fmp:COL[18]/fmp:DATA[$location]" />
                    </website>
                  </item>
                </xsl:for-each>
              </tier_price>
            </productData>
          </xsl:for-each>
        </ns1:catalogProductUpdate>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
  </xsl:template>
</xsl:stylesheet>
4

1 に答える 1

0

私は次のことを行うことでこれを解決することができました:

          <tier_price SOAP-ENC:arrayType="ns:catalogProductTierPriceEntityArray[1]">
            <xsl:for-each select="//fmp:ROW/fmp:COL[15]/fmp:DATA">
              <xsl:variable name="location" select="position()" />
              <item>
                <customer_group_id xsi:type="xsd:string">
                  <xsl:value-of select="//fmp:ROW/fmp:COL[15]/fmp:DATA[$location]" />
                </customer_group_id>
                <qty xsi:type="xsd:int">
                  <xsl:value-of select="//fmp:ROW/fmp:COL[16]/fmp:DATA[$location]" />
                </qty>
                <price xsi:type="xsd:double">
                  <xsl:value-of select="//fmp:ROW/fmp:COL[17]/fmp:DATA[$location]" />
                </price>
                <website xsi:type="xsd:string">
                  <xsl:value-of select="//fmp:ROW/fmp:COL[18]/fmp:DATA[$location]" />
                </website>
              </item>
            </xsl:for-each>
          </tier_price>
于 2013-10-20T20:29:04.030 に答える