2013-10-09 2 views
0

Я экспорт данных из Filemaker 12 построить вызов SOAP, чтобы обновить наш веб-сайт (Magento)XSLT элемент перегруппировки с FileMaker

я могу получить почти все, что работает на самом деле мне нужно переместить некоторые узлы вокруг

кроме

я в настоящее время (сниппет)

<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> 

Это работает почти в том, что он будет строить 3 элементов, включая все customer_group, кол-во, цена и сайт, однако, она приносит не данные.

Может ли кто-нибудь помочь?

Весь выход FileMaker здесь: 2bxdrumit5mk2 Барабанный станок описание здесь краткое описание 123.45 мой-URL к продукту 01/01/2199 02/01/2199 все все образование барабан комплект материал некоторые больше текста stock_message Заказал по запросу

Весь таблицы стилей 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> 
+0

Weird, почему ваш тег выглядеть несогласованной? –

ответ

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> 
Смежные вопросы