XML:IF节点是BLANK donot在输出中显示任何内容

时间:2015-12-17 15:42:03

标签: xml xslt

我需要修剪XML输出并需要一些建议。我目前的输出是:

<Product>
  <ProductUniqueID>16772</ProductUniqueID>
  <Name>Chill Armchair In Leather Px30 Graphite 063 With</Name>
  <ImageUrl>https://www.example.com/media/catalog/product/1/0/10157.jpg</ImageUrl>
  <Price>1595.0000</Price>
  <ParentID>20064</ParentID>
  <ProductUrl>https://www.example.com/chill-armchair.html</ProductUrl>
  <CategoryID>Lounge Chairs</CategoryID>
</Product>

我的问题是:

  1. 我的部分产品没有父ID,我希望在产品中没有父ID时删除节点<ParentID>20064</ParentID>

  2. 我想删除<CategoryID>Lounge Chairs</CategoryID>值中的间距,使其看起来像<CategoryID>LoungeChairs</CategoryID>

  3. 您能告诉我该怎么办?我的XML模板是,

    <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
            <xsl:template match="/">
            <Feed>
            <Products>
            <xsl:for-each select="objects/object">
                        <Product>
                             <ProductUniqueID><xsl:value-of select="entity_id"/></ProductUniqueID>
                             <Name><xsl:value-of select="name"/></Name>
                             <ImageUrl><xsl:value-of select="images/image/url"/></ImageUrl>    
                             <Price><xsl:value-of select="price"/></Price>                                                                               
                             <ParentID><xsl:value-of select="parent_id"/></ParentID>
                            <ProductUrl><xsl:text>https://www.example.com/</xsl:text>
                            <xsl:choose>
                            <xsl:when test="string(parent_item/url_key)"><xsl:value-of select="parent_item/url_key" /></xsl:when>
                            <xsl:otherwise>
                            <xsl:value-of select="url_key" />
                            </xsl:otherwise>
                            </xsl:choose>
                            <xsl:text>.html</xsl:text>
                            </ProductUrl>
                             <CategoryID><xsl:value-of select="cats/cat/name"/></CategoryID>
                        </Product>
                       </xsl:for-each>
                       </Products>
                    </Feed>
            </xsl:template>
    

2 个答案:

答案 0 :(得分:1)

当相应的xsl:if元素没有<ParentID>时,您可以使用简单的object测试来阻止将parent_id添加到输出XML:

<xsl:if test="parent_id">
    <ParentID><xsl:value-of select="parent_id"/></ParentID>
</xsl:if>

object元素可能parent_id子元素没有价值,并且您也不想为此案例输出ParentID元素:

<xsl:if test="normalize-space(parent_id)">
    <ParentID><xsl:value-of select="parent_id"/></ParentID>
</xsl:if>

答案 1 :(得分:0)

以下语法将删除字符串中的空格:

/var/www/var/www/foo/bar