如何检查文件中是否存在节点

时间:2011-01-26 16:40:54

标签: xslt xpath

我有xml,有时可能有节点DSD_G22,但并非总是如此。因此,如果该节点存在,则获取元素的值,否则分配为空: 输入1场景:

<root>
<G_83>
<G_8301/>
<G_8302/>
</G_83>
<DSD_G22>
<DSD_G22_G2201>Value</DSD_G22_G2201>
<DSD_G22_G2202>Value1</DSD_G22_G2202>
</DSD_G22>
</root>

场景输入2:

<root>
<G_83>
<G_8301/>
<G_8302/>
</G_83>
</root>

方案2的输出应为:

<G_83>
<G_8301/>
<G_8302/>
</G_83>
<DSD_G22>
<DSD_G22_G2201/>
<DSD_G22_G2202/>
<DSD_G22/>
</root>

我试图这样做但不起作用。请帮助:

<xsl:variable name="emptySpace" select="'  '" />
  <xsl:if test="@DSD_G22">
          <xsl:if test="@DSD_G22_G2201">
            <xsl:attribute name="DSD_G22_G2201">
              <xsl:value-of select="@DSD_G22_G2201" />
            </xsl:attribute>
          </xsl:if>
          <xsl:if test="@DSD_G22_G2202">
            <xsl:attribute name="DSD_G22_G2202">
              <xsl:value-of select="@DSD_G22_G2202" />
            </xsl:attribute>
          </xsl:if>
</xsl:if>
  <xsl:if test="not(@DSD_G22)">
            <xsl:attribute name="DSD_G22_G2201">
              <xsl:value-of select="@emptySpace " />
            </xsl:attribute>
             <xsl:attribute name="DSD_G22_G2202">
              <xsl:value-of select="@emptySpace" />
            </xsl:attribute>
</xls:if>

2 个答案:

答案 0 :(得分:0)

这可以帮到你:

<DSD_G22>
  <DSD_G22_G2201><xsl:value-of select="DSD_G22/DSD_G22_G2201"/></DSD_G22_G2201>
  <DSD_G22_G2202><xsl:value-of select="DSD_G22/DSD_G22_G2202"/></DSD_G22_G2202>
</DSD_G22>

答案 1 :(得分:0)

<xsl:if test="count(DSD_G22) > 0"> Exists! </xsl:if>