1

製品データベースを FileMakerPro から WordPress インポート XML 構造にエクスポートしようとしています。

目的の XML 構造には、値を追加する必要のない多くのフィールドがありますが、更新する必要があるフィールドがいくつかあります。実用的なプロトタイプができたら、それに最後の仕上げを施すことができるはずです。

XSLPallete というプログラムを使用して変換を行っています。XSL を XML に適用する他の簡単な方法はありますか?

エクスポートされたデータ

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

1 に答える 1

2

これがXSLT1.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> 
于 2012-06-29T01:13:40.770 に答える