我有一个像下面这样的xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
<entry key="user">1234</entry>
<entry key="name"></entry>
</properties>
我想检查键“name”的值是否为null,如果为null则忽略完整标记,结果xml应如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
<entry key="cm:user">1234</entry>
</properties>
如果不为null,则结果xml应如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
<entry key="cm:user">1234</entry>
<entry key="cm:name">sam</entry>
</properties>
我使用下面的xslt但没有得到所需的输出。
<xsl:template match="@key[.='user']">
<xsl:attribute name="key">
<xsl:value-of select="'cm:user'"/>
</xsl:attribute>
</xsl:template>
<xsl:choose>
<xsl:when test="@key[.='name'] != ''">
<xsl:template match="@key[.='name']">
<xsl:attribute name="key">
<xsl:value-of select="'cm:name'"/>
</xsl:attribute>
</xsl:template>
</xsl:when>
<xsl:otherwise>
<xsl:template match="entry[@key='name']"/>
</xsl:otherwise>
</xsl:choose>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="fileName">
<xsl:value-of select="base-uri()" />
</xsl:variable>
<xsl:template match="/">
<xsl:result-document href="{$fileName}.xml">
<xsl:apply-templates/>
</xsl:result-document>
</xsl:template>
</xsl:transform>
有人可以帮我解决这个问题,以获得所需的输出xml。