[英]Conditionally delete Parent Node if Children nodes are empty
正如标题所描述的,我正在尝试采用这样的xml:
<Measurement>
<Name>Board_1_Output_0</Name>
<LongIdentifier>Board 1 Output 0<LongIdentifier/>
...
<ECUAddress>2000000F</ECUAddress>
</Measurement>
<Measurement>
<Name/>
<LongIdentifier/>
...
<ECUAddress/>
</Measurement>
并有条件地删除<Measurement>
如果任何子节点<Measurement>
是空的是这样的:
<Measurement>
<Name>Board_1_Output_0</Name>
<LongIdentifier>Board 1 Output 0<LongIdentifier/>
...
<ECUAddress>2000000F</ECUAddress>
</Measurement>
在本节中,我当前的xslt如下所示:
<xsl:for-each select="Measurement">
<xsl:text>/begin MEASUREMENT</xsl:text>
<xsl:text>/* Name */	</xsl:text>
<xsl:value-of select ="Name"/>
<xsl:apply-templates select="LongIdentifier">
<xsl:text>ECU_ADDRESS				</xsl:text>
<xsl:value-of select ="ECUAddress"/>
<xsl:text>/end MEASUREMENT</xsl:text>
</xsl:for-each ><!-- Measurement -->
我以为我可以有条件地查看每个部分,并且如果任何子标记为空,则不打印任何<Measurment>
XML标记,但是,我只能像这样保留父<Measurement>
元素:
<Measurement></Measurement>
当我发现我的同一个xslt样式表中有一个空孩子时,是否可以删除父xml节点? 还是我需要通过其他样式表运行xml来删除任何具有空子级的XML节点?
您可以在for-each
使用一些XPath来过滤<Measurement>
元素。 如果要删除所有这些元素,其中的任何子元素是空的,你可以这样做:
<xsl:for-each select="Measurement[not(*[. = ''])]">
....
</xsl:for-each>
即,仅在没有任何子元素为空的情况下选择<Measurement>
元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.