我在这里简化了我的xml版本,我想在子节点中使用IMP值填写父节点中的数据(如果有的话),如果子节点中的任何IMP值为true,则该值应为true。如果没有孩子,则应该是假的。
RowKey
所需的输出是
PartitionKey
答案 0 :(得分:1)
由于输入和输出XML类似,您可以开始使用identity transform
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
然后,您可以将没有<parent>
的{{1}}节点作为其子节点进行匹配,因为这些节点是需要添加子<impvalue>
的节点。
<impvalue>
使用条件,您可以检查具有自己子节点的<xsl:template match="parent[not(impvalue)]">
个count
个节点。
<children>
完整的XSLT如下
<xsl:when test="count(children/*) != 0">
输出
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<!-- match <parent> having no <impvalue> child -->
<xsl:template match="parent[not(impvalue)]">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
<impvalue>
<xsl:choose>
<xsl:when test="count(children/*) != 0">
<xsl:value-of select="'true'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'false'" />
</xsl:otherwise>
</xsl:choose>
</impvalue>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>