2012-06-28 2 views
1

FileMakerPro에서 제품 데이터베이스를 WordPress 가져 오기 XML 구조로 내보내려고합니다.XSL을 사용하여 FMP를 WordPress로 변환

원하는 XML 구조에는 값을 추가 할 필요가없는 필드가 많이 있지만, 업데이트해야하는 필드가 있습니다. 일단 작동하는 프로토 타입이 있으면 마무리 작업을 할 수 있어야합니다.

변환을 수행하기 위해 XSLPallete라는 프로그램을 사용하고 있습니다. XML에 XSL을 적용하는 다른 쉬운 방법이 있습니까?

내 보낸 데이터 여기

<RESULTSET FOUND="745"> 
     <ROW MODID="108" RECORDID="586"> 
      <COL> 
       <DATA>Product 1 name</DATA> 
      </COL> 
      <COL> 
       <DATA>$XXX.XX</DATA> 
      </COL> 
      <COL> 
       <DATA>image reference</DATA> 
      </COL> 
      <COL> 
       <DATA>product description</DATA> 
      </COL> 
     </ROW> 
     <ROW MODID="48" RECORDID="587"> 
      <COL> 
       <DATA>Product two name</DATA> 
      </COL> 
      <COL> 
       <DATA>$XXX.XX<DATA> 
      </COL> 
      <COL> 
       <DATA>image reference</DATA> 
      </COL> 
      <COL> 
       <DATA>product description</DATA> 
      </COL> 
     </ROW> 

다음은 원하는 출력 구조

<item> 
    <title>Product Name</title> 
    <link>url + post_name</link> 
    <pubDate>date</pubDate> 
    <dc:creator>user</dc:creator> 
    <guid isPermaLink="false"></guid> 
    <description></description> 
    <content:encoded><![CDATA[]]></content:encoded> 
    <excerpt:encoded><![CDATA[]]></excerpt:encoded> 
    <wp:post_id>29</wp:post_id> 
    <wp:post_date>timestamp</wp:post_date> 
    <wp:post_date_gmt>timestamp</wp:post_date_gmt> 
    <wp:comment_status>open</wp:comment_status> 
    <wp:ping_status>open</wp:ping_status> 
    <wp:post_name>post_name</wp:post_name> 
    <wp:status>publish</wp:status> 
    <wp:post_parent>0</wp:post_parent> 
    <wp:menu_order>0</wp:menu_order> 
    <wp:post_type>product</wp:post_type> 
    <wp:post_password></wp:post_password> 
    <wp:is_sticky>0</wp:is_sticky> 
    <category domain="product_cat" nicename="the_category"><![CDATA[Apple]]></category> 
    <wp:postmeta> 
     <wp:meta_key>_edit_last</wp:meta_key> 
     <wp:meta_value><![CDATA[3]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>seo_follow</wp:meta_key> 
     <wp:meta_value><![CDATA[false]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>seo_noindex</wp:meta_key> 
     <wp:meta_value><![CDATA[false]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>total_sales</wp:meta_key> 
     <wp:meta_value><![CDATA[0]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_regular_price</wp:meta_key> 
     <wp:meta_value><![CDATA[2499]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_sale_price</wp:meta_key> 
     <wp:meta_value><![CDATA[]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_tax_status</wp:meta_key> 
     <wp:meta_value><![CDATA[taxable]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_tax_class</wp:meta_key> 
     <wp:meta_value><![CDATA[]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_visibility</wp:meta_key> 
     <wp:meta_value><![CDATA[visible]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_purchase_note</wp:meta_key> 
     <wp:meta_value><![CDATA[]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_featured</wp:meta_key> 
     <wp:meta_value><![CDATA[yes]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_weight</wp:meta_key> 
     <wp:meta_value><![CDATA[4]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_length</wp:meta_key> 
     <wp:meta_value><![CDATA[45]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_width</wp:meta_key> 
     <wp:meta_value><![CDATA[35]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_height</wp:meta_key> 
     <wp:meta_value><![CDATA[10]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_sku</wp:meta_key> 
     <wp:meta_value><![CDATA[9999]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_product_attributes</wp:meta_key> 
     <wp:meta_value><![CDATA[a:0:{}]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_downloadable</wp:meta_key> 
     <wp:meta_value><![CDATA[no]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_virtual</wp:meta_key> 
     <wp:meta_value><![CDATA[no]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_sale_price_dates_from</wp:meta_key> 
     <wp:meta_value><![CDATA[]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_sale_price_dates_to</wp:meta_key> 
     <wp:meta_value><![CDATA[]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_price</wp:meta_key> 
     <wp:meta_value><![CDATA[$price]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_stock</wp:meta_key> 
     <wp:meta_value><![CDATA[]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_stock_status</wp:meta_key> 
     <wp:meta_value><![CDATA[instock]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_backorders</wp:meta_key> 
     <wp:meta_value><![CDATA[no]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_manage_stock</wp:meta_key> 
     <wp:meta_value><![CDATA[no]]></wp:meta_value> 
    </wp:postmeta> 
    <wp:postmeta> 
     <wp:meta_key>_thumbnail_id</wp:meta_key> 
     <wp:meta_value><![CDATA[30]]></wp:meta_value> 
    </wp:postmeta> 
</item> 
+1

나는 당신의 "보낸 데이터 가정 "귀하의 XSLT 입력입니까? 확인해주세요. 입력 문서와 변환 규칙을 제공하십시오. –

+0

안녕하세요, Sean, 예, "내 보낸 데이터"(FMP에서)는 XSLT 입력입니다. 규칙은 기본적으로 RESULTSET.ROW [i] .COL [0] .DATA -> item.title RESULTSET.ROW [i] .COL [1] .DATA -> item.wp : postmeta.wp : meta_value into (여기서 meta_key == _price) 이것은 도전입니다 – danjp

+0

이것은 정보가 충분하지 않습니다. 예를 들어 항목/링크 - 해당 정보는 어디서 오는 것입니까? 또는 항목/게시 하시겠습니까? 또는 다른 100 개의 들판? 전혀 명확하지 않습니다. –

답변

2

당신이 시작할 수하는 XSLT 1.0 스타일 시트입니다. 변형 규칙을 결정하면이를 기반으로 작업을 수행 할 수 있습니다.

샘플 입력에 적용이 스타일 시트, ...

<?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="/"> 
<items> 
    <xsl:apply-templates select="RESULTSET/ROW" /> 
    </items> 
</xsl:template> 

<xsl:template match="ROW"> 
<item> 
    <title><xsl:value-of select="COL[1]/DATA" /></title> 
    <description><xsl:value-of select="COL[4]/DATA" /></description> 
    </item> 
</xsl:template> 

</xsl:stylesheet> 

... 다음 출력 문서를 생성합니다 ...

<items> 
    <item> 
    <title>Product 1 name</title> 
    <description>product description</description> 
    </item> 
    <item> 
    <title>Product two name</title> 
    <description>product description</description> 
    </item> 
</items> 
+0

감사합니다. 이것을 처리하는 가장 좋은 방법은 무엇입니까? 특정 응용 프로그램을 사용하십니까? – danjp

+0

플랫폼에 따라 다릅니다. Windows? 맥? 기계적 인조 인간? 또한 서버 쪽? 또는 브라우저 측? –

+0

OSX. 가능한 XML을 얻고 싶습니다. 파이어 폭스의 "생성 된 소스보기"는 괜찮습니다.하지만 쉬운 방법이 있는지 궁금합니다. – danjp

관련 문제