Google Merchant Center と統合するには、XML を提供する必要があります。要素の一部には名前空間プレフィックスがあります。次に例を示します。
<g:availability>in stock</g:availability>,
一方、名前空間を必要としないものもあります。次に例を示します。
<title>My Product</title>
ただし、次のことを可能にする XSLT を思い付くことができません。
1) 対応する名前空間を指定 (xmlns:g="http://base.google.com/ns/1.0") AND 2) プレフィックス属性
、「g」名前空間がどこかに追加されていません。
私のユースケースでは exclude-result-prefixes="g" は機能しないと思います。繰り返しますが、いくつかの XML 要素の前に "g" を付ける必要があります。これを行う必要がなかった場合、たとえば
<availability>in stock<availability>
の場合、exclude-result-prefixes は正常に機能します。ただし、要素にプレフィックスを追加すると、XSLT の実行時に名前空間が追加されます。このシナリオの例を以下に示します。
ありがとう。
XSLT:
<xsl:template match="/">
<xsl:element name="type">
<xsl:for-each select="categories/product">
<xsl:element name="product">
<g:availability>
<xsl:text>preorder</xsl:text>
</g:availability>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<categories>
<product>
<id>1</id>
<preorder>true</preorder>
<releaseDate>true</releaseDate>
<quantity>1</quantity>
</product>
<product>
<id>2</id>
<preorder>false</preorder>
<quantity>0</quantity>
</product>
<product>
<id>3</id>
<preorder></preorder>
<quantity>10</quantity>
</product>
出力:
<?xml version="1.0" encoding="UTF-8"?>
<type>
<product>
<g:availability xmlns:g="http://base.google.com/ns/1.0">preorder</g:availability>
</product>
<product>
<g:availability xmlns:g="http://base.google.com/ns/1.0">preorder</g:availability>
</product>
<product>
<g:availability xmlns:g="http://base.google.com/ns/1.0">preorder</g:availability>
</product>
</type>
(不完全) Google Merchant、予想される XML の例
<?xml version="1.0"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>Example - Online Store</title>
<item>
<title>LG Flatron M2262D 22" Full HD LCD TV</title>
<g:id>TV_123456</g:id>
<g:condition>used</g:condition>
</item>
</channel>
</rss>
XSLT のバージョン 1 の使用