Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带条件的XSLT-XML映射_Xml_Xslt - Fatal编程技术网

带条件的XSLT-XML映射

带条件的XSLT-XML映射,xml,xslt,Xml,Xslt,我有个问题。我有一个入站负载,它被转换为XML出站负载。这工作正常,但随后提出了更改请求,需要从入站设置条件,即如果某个字段E1EDK02和子节点QUALF的值为012,则应从XML出站中删除字段BELNR。我怎样才能做到这一点?希望你能帮助我 以下是入站有效负载: <?xml version="1.0" encoding="UTF-8"?> <INVOIC01> <IDOC BEGIN="1"> <EDI_DC40 SEGMENT="1"> &l

我有个问题。我有一个入站负载,它被转换为XML出站负载。这工作正常,但随后提出了更改请求,需要从入站设置条件,即如果某个字段E1EDK02和子节点QUALF的值为012,则应从XML出站中删除字段BELNR。我怎样才能做到这一点?希望你能帮助我

以下是入站有效负载:

<?xml version="1.0" encoding="UTF-8"?>
<INVOIC01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<IDOCTYP>INVOIC01</IDOCTYP>
<MESTYP>INVOIC</MESTYP>
<MESCOD>MM</MESCOD>
<SNDPRT>LS</SNDPRT>
<SNDPRN>F4FARMINGP</SNDPRN>
<RCVPOR>SAPECP</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>ECPCLNT500</RCVPRN>
</EDI_DC40>
<E1EDK01SEGMENT="1">
<CURCY>AUD</CURCY>
<BSART>INVO</BSART>
<EIGENUINR>97000219214</EIGENUINR>
</E1EDK01>
<E1EDKA1SEGMENT="1">
<PARVW>RE</PARVW>
<PARTN/>
<NAME1>LANDMARKOPERATIONSRURALSERVICES</NAME1>
</E1EDKA1>
<E1EDKA1SEGMENT="1">
<PARVW>LF</PARVW>
<PARTN>0070090862</PARTN>
<NAME1>Tapex</NAME1>
</E1EDKA1>
<E1EDKA1SEGMENT="1">
<PARVW>AG</PARVW>
<PARTN>S2321000</PARTN>
<NAME1>GJ&amp;SSWhite</NAME1>
<STRAS>C/-LANDMARKWAGGA</STRAS>
<STRS2>53-55MOOROONGSTREET</STRS2>
<ORT01>WAGGAWAGGA</ORT01>
<REGIO>NSW</REGIO>
<PSTLZ>2665</PSTLZ>
</E1EDKA1>
<E1EDKA1SEGMENT="1">
<PARVW>WE</PARVW>
<NAME1>LANDMARK-ANAWBCOMPANY</NAME1>
<ORT01>53-55MOOROONG</ORT01>
<REGIO>ST</REGIO>
<PSTLZ>2650</PSTLZ>
</E1EDKA1>
<E1EDK02SEGMENT="1">
<QUALF>012</QUALF>
<BELNR>97160</BELNR>
</E1EDK02>
<E1EDK02SEGMENT="1">
<QUALF>099</QUALF>
<BELNR>1234566789</BELNR>
</E1EDK02>
<E1EDK03SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20151012</DATUM>
</E1EDK03>
<E1EDK03SEGMENT="1">
<IDDAT>028</IDDAT>
<DATUM>20151130</DATUM>
</E1EDK03>
<E1EDK04SEGMENT="1">
<MWSKZ>VAT</MWSKZ>
<MSATZ>10</MSATZ>
<MWSBT>509.80</MWSBT>
</E1EDK04>
<E1EDP01SEGMENT="1">
<MENGE>20.00</MENGE>
<MENEE>EA</MENEE>
<NETWR>254.90</NETWR>
<MATNR/>
<E1EDP02SEGMENT="1">
<QUALF>001</QUALF>
<BELNR>4501493907</BELNR>
<ZEILE/>
</E1EDP02>
<E1EDP19SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>MAX461</IDTNR>
<KTEXT>MAXITUBES4'6x150'</KTEXT>
</E1EDP19>
<E1EDP26SEGMENT="1">
<QUALF>003</QUALF>
<BETRG>5098.00</BETRG>
</E1EDP26>
<E1EDP04SEGMENT="1">
<MWSKZ>VAT</MWSKZ>
<MSATZ>10</MSATZ>
<MWSBT>509.80</MWSBT>
</E1EDP04>
</E1EDP01>
<E1EDS01SEGMENT="1">
<SUMID>006</SUMID>
<SUMME>509.80</SUMME>
</E1EDS01>
<E1EDS01SEGMENT="1">
<SUMID>010</SUMID>
<SUMME>5098.00</SUMME>
</E1EDS01>
<E1EDS01SEGMENT="1">
<SUMID>011</SUMID>
<SUMME>5607.80</SUMME>
</E1EDS01>
<E1EDS01SEGMENT="1">
<SUMID>020</SUMID>
</E1EDS01>
</IDOC>
</INVOIC01>
以下是当前使用的XSLT映射:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="/*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:apply-templates select="child::node()"/>           
</xsl:element>
</xsl:template>
<xsl:template match="processing-instruction()|comment()">
</xsl:template>
</xsl:stylesheet>

提前谢谢你

如果要从“E1EDK02”中删除“BELNR”元素(如果QUALF元素设置为012),请将此模板添加到XSLT中

<xsl:template match="E1EDK02[QUALF='012']/BELNR" />
请注意,看起来您当前的XSLT只是按原样复制所有内容,处理指令和注释除外。试试这个XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" />

    <xsl:template match="@*|*|text()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="E1EDK02[QUALF='012']/BELNR" />
</xsl:stylesheet>

实际上,当前XSLT只会删除文档节点或根元素下的注释和处理说明,但我不确定这是否是有意的。

请在问题中添加代码,而不是图像。谢谢。这是输入XML负载LF 0070090862 Tapex 012 97160 099 1234566789 012 20151012这是现有的XSLT映射非常感谢您的帮助和帮助议论