正如标题描述的那样,我试图像这样使用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节点?
答案 0 :(得分:1)
您可以在for-each
中使用一些XPath来过滤掉<Measurement>
元素。如果要删除任何子元素为空的所有元素,您可以执行以下操作:
<xsl:for-each select="Measurement[not(*[. = ''])]">
....
</xsl:for-each>
即。只选择没有任何子元素为空的<Measurement>
个元素。