只有在输入文件中E1EP01 / CODE = WK30和E1EP01 / E1EP19 / TEXT的值不为空时,我才需要在输出结构中填充行项E1EP01。 我写了下面的代码行,但是即使CODE的值等于WK30且TEXT不是空白,E1EP01也没有出现在输出中 有人可以帮我吗?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ORDERS05>
<IDOC>
<xsl:if test=" ZXX/IDOC/E1EP01/CODE = 'WK30' and ZXX/IDOC/E1EP01/E1EP19/TEXT!= ' '">
<xsl:for-each select="E1EP01">
<E1EP01>
<POSEX>
<xsl:value-of select="ZXX/IDOC/E1EP01/POSEX"/>
</POSEX>
</E1EP01>
</xsl:for-each>
</xsl:if>
</IDOC>
</ORDERS05>
</xsl:template>
</xsl:stylesheet>
示例输入如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<ZXX>
<IDOC BEGIN="1">
<E1EP01 SEGMENT="1">
<POSEX>00020</POSEX>
<CODE>WN14</WERKS>
<E1EP19 SEGMENT="1">
<Q>001</Q>
<TEXT>000000000000204034</TEXT>
</E1EP19>
</E1EP01>
<E1EP01 SEGMENT="1">
<POSEX>00010</POSEX>
<WERKS>WK30</WERKS>
<E1EP19 SEGMENT="1">
<Q>001</Q>
<TEXT>000000000000205115</TEXT>
</E1EP19>
</E1EP01>
</IDOC>
</ZXX>
答案 0 :(得分:0)
变化:
<xsl:for-each select="E1EP01">
为:
<xsl:for-each select="ZXX/IDOC/E1EP01">
注意:您不需要在测试表达式中将单引号转义为'
。
我需要测试每个E1EP01的条件以及条件是否匹配 那么E1EP01应该出现在输出中。
以这种方式尝试,然后:
XSLT 1.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/ZXX">
<ORDERS05>
<IDOC>
<xsl:for-each select="IDOC/E1EP01[CODE='WK30' and E1EP19/TEXT!='']">
<xsl:copy>
<xsl:copy-of select="POSEX"/>
</xsl:copy>
</xsl:for-each>
</IDOC>
</ORDERS05>
</xsl:template>
</xsl:stylesheet>