XSLT检查-如果父节点有子节点,则将xml等效为Y

XSLT检查-如果父节点有子节点,则将xml等效为Y,xml,xslt,Xml,Xslt,我有一个类似于: <EnhancedData> <EmailAddress>abc.def@email.com</EmailAddress> <PassengerName>ABC/DEF</PassengerName> <RecordLocator_PNR>ABCDEF</RecordLocator_PNR>

我有一个类似于:

<EnhancedData>
                  <EmailAddress>abc.def@email.com</EmailAddress>
                  <PassengerName>ABC/DEF</PassengerName>
                  <RecordLocator_PNR>ABCDEF</RecordLocator_PNR>
</EnhancedData>

美国广播公司。def@email.com
ABC/DEF
ABCDEF
我使用的对应XSLT如下所示:

<xsl:for-each select="EnhancedData">
            <xsl:if test="*">
              <EnhancedData>
                <xsl:value-of select="Y" />
              </EnhancedData>
            </xsl:if>
          </xsl:for-each>
          <xsl:for-each select="EnhancedData/EmailAddress">
          <EmailAddress>
          <xsl:value-of select="." />
          </EmailAddress>
          </xsl:for-each>
           <xsl:for-each select="EnhancedData/PassengerName">
          <PassengerName>
          <xsl:value-of select="." />
          </PassengerName>
          </xsl:for-each>
           <xsl:for-each select="EnhancedData/RecordLocator_PNR">
          <RecordLocator_PNR>
          <xsl:value-of select="." />
          </RecordLocator_PNR>
          </xsl:for-each>
<EnhancedData/>
<EmailAddress>abc.def@email.com</EmailAddress>
<PassengerName>ABC/DEF</PassengerName>
<RecordLocator_PNR>ABCDEF</RecordLocator_PNR>

我使用的Java代码使用XSLT将xml转换为另一个o/p文件。如果包含任何子节点,我需要将增强数据设置为Y

使用当前代码,输出xml如下所示:

<xsl:for-each select="EnhancedData">
            <xsl:if test="*">
              <EnhancedData>
                <xsl:value-of select="Y" />
              </EnhancedData>
            </xsl:if>
          </xsl:for-each>
          <xsl:for-each select="EnhancedData/EmailAddress">
          <EmailAddress>
          <xsl:value-of select="." />
          </EmailAddress>
          </xsl:for-each>
           <xsl:for-each select="EnhancedData/PassengerName">
          <PassengerName>
          <xsl:value-of select="." />
          </PassengerName>
          </xsl:for-each>
           <xsl:for-each select="EnhancedData/RecordLocator_PNR">
          <RecordLocator_PNR>
          <xsl:value-of select="." />
          </RecordLocator_PNR>
          </xsl:for-each>
<EnhancedData/>
<EmailAddress>abc.def@email.com</EmailAddress>
<PassengerName>ABC/DEF</PassengerName>
<RecordLocator_PNR>ABCDEF</RecordLocator_PNR>

美国广播公司。def@email.com
ABC/DEF
ABCDEF
我需要的是:

<EnhancedData>Y</EnhancedData>
<EmailAddress>abc.def@email.com</EmailAddress>
<PassengerName>ABC/DEF</PassengerName>
<RecordLocator_PNR>ABCDEF</RecordLocator_PNR>
Y
美国广播公司。def@email.com
ABC/DEF
ABCDEF
而不是

<xsl:value-of select="Y" />

只用

<xsl:text>Y</xsl:text>
Y
以下代码有效:Y N