我需要修剪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>
我的问题是:
我的部分产品没有父ID,我希望在产品中没有父ID时删除节点<ParentID>20064</ParentID>
。
我想删除<CategoryID>Lounge Chairs</CategoryID>
值中的间距,使其看起来像<CategoryID>LoungeChairs</CategoryID>
您能告诉我该怎么办?我的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>
答案 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