首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML和XSL输入的XML输出由合并到一条记录中的所有数据组成

XML和XSL输入的XML输出由合并到一条记录中的所有数据组成
EN

Stack Overflow用户
提问于 2019-10-30 04:17:04
回答 1查看 50关注 0票数 0

您好,我已经创建了一个XSL文件,并有一个报告创建XML输入,我必须转换为另一种类型的XML (输出)。

XML输入:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by EnterpriseOne Universal Batch Engine-->
<R570018A>
<Properties>
<Version>LU0001</Version>
<Title>Luxembourg VAT return</Title>
<Machine>PCOJDEDEV04</Machine>
<Environment>DV920</Environment>
<User>ASDF</User>
<Role>*ALL</Role>
<Company>XYZ.LP</Company>
<OneWorldRelease>E920</OneWorldRelease>
<Date>10/29/2019</Date>
<Time>13:58:13</Time>
</Properties>
<PageHeaders>
<Page_Header_S2>
<PageHeaderNumber>1</PageHeaderNumber>
<R570018A_ID1>R570018A</R570018A_ID1>
<Variable_000002_ID2>XYZ.LP</Variable_000002_ID2>
<Variable_000005_ID5>13:58:13</Variable_000005_ID5>
<Variable_000004_ID4>2019-10-29</Variable_000004_ID4>
<Variable_000003_ID3>Luxembourg VAT return</Variable_000003_ID3>
<Variable_000006_ID6>1</Variable_000006_ID6>
<of_ID7>of</of_ID7>
<Page___ID9>Page -</Page___ID9>
</Page_Header_S2>
</PageHeaders>
-<Report_Header_S5>
<AgentMatrNbr_ID2>54564646</AgentMatrNbr_ID2>
<DeclarerMatrNbr_ID7>9879862</DeclarerMatrNbr_ID7>
<Year_PO_ID11>2019</Year_PO_ID11>
<AgentRCSNbr_ID4>5362189</AgentRCSNbr_ID4>
<DeclarerRCSNbr_ID8>8795462525</DeclarerRCSNbr_ID8>
<Period_Number_PO_ID13>10</Period_Number_PO_ID13>
<AgentVATNbr_ID6>988765142</AgentVATNbr_ID6>
<DeclarerVATNbr_ID9>98795668</DeclarerVATNbr_ID9>
</Report_Header_S5>
<UDC___Full_View_of_F0005_for_Transfer_57_LV_Driver_S1>
<Vat_Cross_Ref_57_LV_Print_S3>

<Print_F570018A_S6>
<PageHeaderNumber>1</PageHeaderNumber>
<AccountNumber_ID1>472</AccountNumber_ID1>
<Amount_57LV_ID2>-65071.80</Amount_57LV_ID2>
</Print_F570018A_S6>
<Print_F570018A_S6>
<PageHeaderNumber>1</PageHeaderNumber>
<AccountNumber_ID1>019</AccountNumber_ID1>
<Amount_57LV_ID2>-65071.80</Amount_57LV_ID2>

</Print_F570018A_S6>
<Print_F570018A_S6>
<PageHeaderNumber>1</PageHeaderNumber>
<AccountNumber_ID1>741</AccountNumber_ID1>
<Amount_57LV_ID2>5128.21</Amount_57LV_ID2>
</Print_F570018A_S6>
<Print_F570018A_S6>
<PageHeaderNumber>1</PageHeaderNumber>
<AccountNumber_ID1>742</AccountNumber_ID1>
<Amount_57LV_ID2>871.79</Amount_57LV_ID2>
</Print_F570018A_S6>

</Vat_Cross_Ref_57_LV_Print_S3>
</UDC___Full_View_of_F0005_for_Transfer_57_LV_Driver_S1>
</R570018A>

XSL输入:

代码语言:javascript
复制
<?xml version="1.0" encoding="windows-1252" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <all xmlns="http://www.w3.org/2001/XMLSchema"/>
  <xsl:template match="/"><!-- Root template -->
 - <eCDFDeclarations xmlns="http://www.ctie.etat.lu/2011/ecdf">
   <FileReference>"UMKBJLX20181003T17180101"</FileReference>
   <eCDFFileVersion>1.1</eCDFFileVersion>
   <Interface>CMUL8</Interface>
   -<Agent>
    <MatrNbr>
    <xsl:value-of select="/R570018A/Report_Header_S5/AgentMatrNbr_ID2"/>
    </MatrNbr>
    <RCSNbr>
    <xsl:value-of select="/R570018A/Report_Header_S5/AgentRCSNbr_ID4"/>
    </RCSNbr>
    <VATNbr>
    <xsl:value-of select="/R570018A/Report_Header_S5/AgentVATNbr_ID6"/>
    </VATNbr>
    </Agent>

    -<Declarations>

    -<Declarer>
     <MatrNbr>
     <xsl:value-of select="/R570018A/Report_Header_S5/DeclarerMatrNbr_ID7"/>
     </MatrNbr>
     <RCSNbr>
     <xsl:value-of select="/R570018A/Report_Header_S5/DeclarerRCSNbr_ID8"/>
     </RCSNbr>
     <VATNbr>
     <xsl:value-of select="/R570018A/Report_Header_S5/DeclarerVATNbr_ID9"/>
     </VATNbr>

     -<Declaration language="FR" model="1" type="TVA_DECM">
      <Year>
      <xsl:value-of select="/R570018A/Report_Header_S5/Year_PO_ID11"/>
      </Year>
      <Period>
      <xsl:value-of select="/R570018A/Report_Header_S5/Period_Number_PO_ID13"/>
      </Period>

      -<FormData>

        -<NumericField id="{/R570018A/UDC___Full_View_of_F0005_for_Transfer_57_LV_Driver_S1/Vat_Cross_Ref_57_LV_Print_S3/Print_F570018A_S6/AccountNumber_ID1}"> 
        <xsl:value-of select="/R570018A/UDC___Full_View_of_F0005_for_Transfer_57_LV_Driver_S1/Vat_Cross_Ref_57_LV_Print_S3/Print_F570018A_S6/Amount_57LV_ID2"/> 
        </NumericField>

       </FormData>
      </Declaration>
     </Declarer>
    </Declarations>


  </eCDFDeclarations>
  </xsl:template>
</xsl:stylesheet>

获取的输出:

代码语言:javascript
复制
 - <eCDFDeclarations xmlns="http://www.ctie.etat.lu/2011/ecdf">
   <FileReference>"UMKBJLX20181003T17180101"</FileReference>
   <eCDFFileVersion>1.1</eCDFFileVersion>
   <Interface>CMUL8</Interface>
   -<Agent>
      <MatrNbr>54564646</MatrNbr>
      <RCSNbr>5362189</RCSNbr>
      <VATNbr>988765142</VATNbr>
   </Agent>

    -<Declarations>

    -<Declarer>
         <MatrNbr>9879862</MatrNbr>
         <RCSNbr>8795462525</RCSNbr>
         <VATNbr>98795668</VATNbr>

     -<Declaration language="FR" model="1" type="TVA_DECM">
            <Year>2019</Year>
            <Period>10</Period>

      -<FormData>

        -<NumericField id="472 019 741 742">-65071.80 -65071.80 5128.21 871.79</NumericField>
            </FormData>
         </Declaration>
      </Declarer>
   </Declarations>
</eCDFDeclarations>

预期输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<eCDFDeclarations xmlns="http://www.ctie.etat.lu/2011/ecdf">
  <FileReference>UMKBJLX20181003T17180101</FileReference>
  <eCDFFileVersion>1.1</eCDFFileVersion>
  <Interface>CMUL8</Interface>
  <Agent>
    <MatrNbr>54564646</MatrNbr>
    <RCSNbr>5362189</RCSNbr>
    <VATNbr>988765142</VATNbr>
  </Agent>
  <Declarations>
    <Declarer>
      <MatrNbr>9879862</MatrNbr>
      <RCSNbr>8795462525</RCSNbr>
      <VATNbr>98795668</VATNbr>

      <Declaration language="FR" model="1" type="TVA_DECM">
        <Year>2019</Year>
        <Period>10</Period>
        <FormData>
          <NumericField id="472">-65071,80</NumericField>
          <NumericField id="019">-65071,80</NumericField>
          <NumericField id="741">5128,21</NumericField>
          <NumericField id="742">871,79</NumericField>

 </FormData>
      </Declaration>
    </Declarer>
  </Declarations>
</eCDFDeclarations>

我的问题是,所有数字字段ID和金额都打印在同一行,而不是打印到下一行。我对使用XSL输入非常陌生,您能告诉我应该如何编辑我的XSL输入文件吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-30 05:11:23

请尝试以下XSLT。我在顶部添加了xsl:output元素,以生成一个prolog和一个循环,用于重复相关片段中的值。

XSLT:

代码语言:javascript
复制
<?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="xml" omit-xml-declaration="no" encoding="utf-8"/>

    <all xmlns="http://www.w3.org/2001/XMLSchema"/>

    <xsl:template match="/">
        <!-- Root template -->
        <eCDFDeclarations xmlns="http://www.ctie.etat.lu/2011/ecdf">
            <FileReference>"UMKBJLX20181003T17180101"</FileReference>
            <eCDFFileVersion>1.1</eCDFFileVersion>
            <Interface>CMUL8</Interface>
            <Agent>
                <MatrNbr>
                    <xsl:value-of select="/R570018A/Report_Header_S5/AgentMatrNbr_ID2"/>
                </MatrNbr>
                <RCSNbr>
                    <xsl:value-of select="/R570018A/Report_Header_S5/AgentRCSNbr_ID4"/>
                </RCSNbr>
                <VATNbr>
                    <xsl:value-of select="/R570018A/Report_Header_S5/AgentVATNbr_ID6"/>
                </VATNbr>
            </Agent>

            <Declarations>

                <Declarer>
                    <MatrNbr>
                        <xsl:value-of select="/R570018A/Report_Header_S5/DeclarerMatrNbr_ID7"/>
                    </MatrNbr>
                    <RCSNbr>
                        <xsl:value-of select="/R570018A/Report_Header_S5/DeclarerRCSNbr_ID8"/>
                    </RCSNbr>
                    <VATNbr>
                        <xsl:value-of select="/R570018A/Report_Header_S5/DeclarerVATNbr_ID9"/>
                    </VATNbr>

                    <Declaration language="FR" model="1" type="TVA_DECM">
                        <Year>
                            <xsl:value-of select="/R570018A/Report_Header_S5/Year_PO_ID11"/>
                        </Year>
                        <Period>
                            <xsl:value-of select="/R570018A/Report_Header_S5/Period_Number_PO_ID13"/>
                        </Period>

                        <FormData>
                            <xsl:for-each select="R570018A/UDC___Full_View_of_F0005_for_Transfer_57_LV_Driver_S1/Vat_Cross_Ref_57_LV_Print_S3/Print_F570018A_S6">
                                <NumericField id="{AccountNumber_ID1}">
                                    <xsl:value-of select="Amount_57LV_ID2"/>
                                </NumericField>
                            </xsl:for-each>
                        </FormData>
                    </Declaration>
                </Declarer>
            </Declarations>
        </eCDFDeclarations>
    </xsl:template>
</xsl:stylesheet>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58614794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档