0

正如标题所描述的,我正在尝试像这样使用 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           */&#x09;</xsl:text>
    <xsl:value-of select ="Name"/>
    <xsl:apply-templates select="LongIdentifier">
    <xsl:text>ECU_ADDRESS&#x09;&#x09;&#x09;&#x09;</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 节点?

4

1 回答 1

1

您可以在您的中使用一些 XPathfor-each来过滤掉<Measurement>元素。如果要删除任何子元素为空的所有此类元素,可以执行以下操作:

<xsl:for-each select="Measurement[not(*[. = ''])]">
     ....
</xsl:for-each>

即只选择<Measurement>没有任何空子元素的元素。

于 2013-10-08T16:59:51.033 回答