XML IF ELSE语句

时间:2018-01-18 14:47:30

标签: xml if-statement feed google-shopping

对于Google购物Feed,我需要向Google提供一些产品变量。

案例: 有3个唯一的产品标识符:

<!-- Unique Product Identifiers-->
<g:brand>{manufacturer}</g:brand>
<g:gtin>{upc}</g:gtin>
<g:mpn>{sku}</g:mpn>

一种方式来说明它是真还是假:

<g:identifier_exists>TRUE</g:identifier_exists>

g:identifier_exists应该为3个标识符中的1个填充(非空/空)。如果所有3都为空,则标识符应为FALSE。像这样:

<g:identifier_exists>FALSE</g:identifier_exists>

这可以用XML吗?

编辑: 有人提到XLST所以我尝试了以下内容:

<item>
!-- Basic Product Information -->
<g:id>{sku}</g:id>
<title>{name,[substr],[70],[...]}</title>
<description>{description,[html_entity_decode],[strip_tags]}</description>
{G:GOOGLE_PRODUCT_CATEGORY}
{G:PRODUCT_TYPE,[10]}
<link>{url parent}</link>
{G:IMAGE_LINK}
<g:condition>new</g:condition>

<!-- Availability & Price -->
<g:availability>{is_in_stock?[in stock]:[out of stock]:[available for order]}</g:availability>
<g:price>{normal_price,[USD],[0]}USD</g:price>
{G:SALE_PRICE,[USD],[0]}

<!-- Unique Product Identifiers-->
<xsl:choose>
    <xsl:when test=" g:brand != ''' ">
            <g:identifier_exists>TRUE</g:identifier_exists>
        </xsl:when>
        <xsl:when test=" g:gtin != ''' ">
            <g:identifier_exists>TRUE</g:identifier_exists>
        </xsl:when>
    <xsl:when test=" g:mpn != ''' ">
            <g:identifier_exists>TRUE</g:identifier_exists>
        </xsl:when>
        <xsl:otherwise>
            <g:identifier_exists>FALSE</g:identifier_exists>
        </xsl:otherwise>
</xsl:choose>

<!-- Apparel Products -->
<g:gender>{gender}</g:gender>
<g:age_group>{age_group}</g:age_group>
<g:color>{color}</g:color>
<g:size>{size}</g:size>

<!-- Product Variants -->
{G:ITEM_GROUP_ID}

<g:material>{material}</g:material>
<g:pattern>{pattern}</g:pattern>

<!-- Shipping -->
<g:shipping_weight>{weight,[float],[2]}kg</g:shipping_weight>

<!-- AdWords attributes -->
<g:adwords_grouping>{adwords_grouping}</g:adwords_grouping>
<g:adwords_labels>{adwords_labels}</g:adwords_labels>
</item>

1 个答案:

答案 0 :(得分:0)

我会间接回答这个问题,因为我对你的环境了解不多。 这可能甚至不符合您的要求。首先我基于此的一些背景信息:

关于XML所支持的格式的说明,有两个,RSS和ATOM。 https://support.google.com/merchants/answer/160567?hl=en&ref_topic=3163841

这是我们的目标,例如我们选择RSS格式的XML文件作为我们在该链接中指定的表单中所需的“提要”。现在要做到这一点,我们需要从源代码执行XSLT转换,无论是指定的RSS指定格式。

  1. 一个XML文件,它提供生成输出XML所需的信息(数据)。
  2. 从输入文件格式执行“转换”的XSLT文件。有几种方法可以针对XML实际“执行”XSLT,为您提供所需的输出,一些程序,命令行等。您使用的内容取决于您在环境中的内容。这是一个在线链接,您可以在其中放入XML和XSLT:http://www.purplegene.com/static/transform.html(我根本没有与此关联)。您也可以从命令行,C#或Java程序,某些浏览器,浏览器中的某些JavaScript等执行此操作,您的成功可能会有所不同。
  3. 然后,此XSLT文件可以检测到您需要的内容(您可以从那里开始)。 XSLT是“程序”的一部分,XML是源代码部分。注意:从我提供的链接和示例源中的链接/信息中,“1 of 3”似乎是“2 of 3”。关于XSL条件等还有一些其他问题,例如Conditional test around xsl:apply-templates搜索一下。

    这是一个简单的工作流程示例:

    XML输入==&gt;使用XSLT进行处理==&gt;生成XML提要

    在这里,我们可以利用StackOverflow的强大功能!以下是您可能从一些XML和XSLT开始的问题:How can I use XSLT to create an RSS 2.0 feed from an XML file?

    将“模板”与匹配视为每个元素的一部分。

    以下是我在上面链接的页面输出的RSS XML文档示例示例:http://commondatastorage.googleapis.com/newfeedspec/example_feed_xml_rss.xml.zip

    以下是有人想要使用RSS创建新形式的XML的链接:XSLT Transformation of Google product feed xml