XML IF ELSE 语句

XML IF ELSE statement

对于 Google 购物提要,我需要提供 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 个已填写(不是 null/empty)。如果 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>

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

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

这是我们的目标,例如,我们选择一个 RSS 格式的 XML 文件作为我们的 "feed",它需要 link 中指定的格式。现在要做到这一点,我们需要从我们的源执行 XSLT 转换,无论它是什么到 RSS 指定格式。

  1. 一个 XML 文件,它提供了生成输出 XML 所需的信息(数据)。
  2. 根据您的输入文件格式执行 "transform" 的 XSLT 文件。有几种方法可以实际 "execute" XSLT 针对 XML 为您提供所需的输出、一些程序、命令行等。您使用什么取决于您的环境中有什么。这是一个在线 link,您可以在其中放置 XML 和 XSLT:http://www.purplegene.com/static/transform.html(我与此完全没有任何关系)。您也可以从命令行、C# 或 Java 程序、某些浏览器、浏览器中的某些 Java 脚本等执行该操作,您的成功可能会有所不同。

此 XSLT 文件随后可以检测您需要的内容(您从那里开始)。 XSLT 是 "program" 部分,XML 是源代码部分。注意:“3 个中的 1 个”似乎是 links/info 中的“3 个中的 2”,我在我提供的 link 上看到,并且在示例提要中来自那里。还有一些关于 XSL 条件等的其他问题,例如 Conditional test around xsl:apply-templates 稍微搜索一下。

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

XML 输入 ==> 使用 XSLT 处理 ==> 生成 XML feed

在这里我们可以利用 Whosebug 的强大功能!这是一个关于 XML 和 XSLT 的问题,您可能会从:How can I use XSLT to create an RSS 2.0 feed from an XML file?

将 "template" 和匹配视为用于每个元素的一部分。

这是一个示例 RSS XML 文档示例输出,来自我在上面 link 编辑的页面:http://commondatastorage.googleapis.com/newfeedspec/example_feed_xml_rss.xml.zip

这是一个 link,其中有人想使用 RSS 创建新形式的 XML:XSLT Transformation of Google product feed xml