仅从 xml 文件中获取该产品下没有项目的产品
Get only products from xml file where there are no items under that product
我有一个 xml 文件,其中包含产品和项目。产品可能有也可能没有项目。我只想获取那些没有项目的产品。
这是我的输入
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<prod-id>P16753</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<items/>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
<product>
<prod-id>P16754</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<items>
<item>
<item-id>i16754</item-id>
<item-status>CREATED</item-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
</item>
</items>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
</products>
我希望在 xml 文件中有这样的输出。如果可能,我希望删除标签,以便稍后可以转换为 csv 文件
prod-id P16754
我有一个 xslt 代码(我从这个论坛获得的)但我无法完成这项工作
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<ns:WhiteList>
<name>prod-id</name>
</ns:WhiteList>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"*[not(descendant-or-self::*[name()=prod-id[not(items/item)]document('')/*/ns:WhiteList/*])]"/>
</xsl:transform>
如果你使用
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="products/product[not(items/item)]/prod-id/concat(local-name(), ' ', .)" separator=" "/>
</xsl:template>
</xsl:transform>
那么对于您的输入样本,输出是
prod-id P16753
在线示例位于 http://xsltransform.net/pPJ8LUP。
我有一个 xml 文件,其中包含产品和项目。产品可能有也可能没有项目。我只想获取那些没有项目的产品。
这是我的输入
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<prod-id>P16753</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<items/>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
<product>
<prod-id>P16754</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<items>
<item>
<item-id>i16754</item-id>
<item-status>CREATED</item-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
</item>
</items>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
</products>
我希望在 xml 文件中有这样的输出。如果可能,我希望删除标签,以便稍后可以转换为 csv 文件
prod-id P16754
我有一个 xslt 代码(我从这个论坛获得的)但我无法完成这项工作
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<ns:WhiteList>
<name>prod-id</name>
</ns:WhiteList>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"*[not(descendant-or-self::*[name()=prod-id[not(items/item)]document('')/*/ns:WhiteList/*])]"/>
</xsl:transform>
如果你使用
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="products/product[not(items/item)]/prod-id/concat(local-name(), ' ', .)" separator=" "/>
</xsl:template>
</xsl:transform>
那么对于您的输入样本,输出是
prod-id P16753
在线示例位于 http://xsltransform.net/pPJ8LUP。