当 QUALF 为“012”时,我需要传递 BELNR 值。如果 //E1EDK02/[QUALF=012]/BELNR 为 NULL,则复制 //E1EDK02/[QUALF=002]/BELNR
使用以下代码但出现错误 - 轴步骤 xsl:document/element() 的上下文项不存在
源 XML
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<E1EDK02>
<QUALF>002</QUALF>
<BELNR>0030000084</BELNR>
</E1EDK02>
<E1EDK02>
<QUALF>026</QUALF>
<BELNR>0080000000</BELNR>
</E1EDK02>
<E1EDK02>
<QUALF>012</QUALF>
<BELNR>0090000020</BELNR>
</E1EDK02>
</DATA>
预期输出
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<Target>
<BELNR>0090000020</BELNR>
</Target>
</DATA>
XSLT 使用
<xsl:choose>
<xsl:when test="DATA/E1EDK02[QUALF=012]/BELNR">
<xsl:value-of select="DATA/E1EDK02[QUALF=012]/BELNR"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="DATA/E1EDK02[QUALF=002]/BELNR"/>
</xsl:otherwise>
</xsl:choose>
我认为你可以简单地做:
<xsl:template match="/DATA">
<xsl:copy>
<Target>
<xsl:copy-of select="(E1EDK02[QUALF=012], E1EDK02[QUALF=002])[1]/BELNR"/>
</Target>
</xsl:copy>
</xsl:template>