xslt 1.0—仅从产品下没有项目的xml文件中获取产品



我有一个包含产品和项目的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="&#10;"/>
    </xsl:template>
</xsl:transform>

那么对于你的输入样本,输出是

prod-id P16753

相关内容

  • 没有找到相关文章

最新更新