2014-11-24 94 views
0

我正在使用B2MML文件处理MES(SIMATIC)到SAP的集成,这些文件需要映射到RFC调用XML才能调用SAP函数。源代码B2MML文件和RFC XML都是已知的,但不幸的是我没有足够的知识在它们之间创建XSLT。B2MML到SAP RFC转换

1.源B2MML文件:

<SyncMaterialLot revision="0.0" environment="Production" lang="en-US" xmlns="http://www.siemens.com/ad/mes/b2mt-1.0" xmlns:oag="http://www.openapplications.org/oagis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bml="http://www.wbf.org/xml/b2mml-v02" xsi:schemaLocation="http://www.siemens.com/ad/mes/b2mt-1.0 file:///C:/Users/Sitadmin/Desktop/FO/B2MT/B2MT_Schemas/B2MT_MaterialLot.xsd"> 
    <oag:ApplicationArea> 
     <oag:Sender> 
      <oag:Task>HON</oag:Task> 
     </oag:Sender> 
     <oag:CreationDateTime>2014-07-14T15:02:56</oag:CreationDateTime> 
     <oag:BODId>04aa4bb2-316f-4c43-abfa-705afd103a61</oag:BODId> 
    </oag:ApplicationArea> 
    <DataArea> 
     <oag:Sync confirm="Always"> 
      <oag:SyncCriteria> 
       <oag:SyncExpression action="Add"/> 
      </oag:SyncCriteria> 
     </oag:Sync> 
     <bml:MaterialLot> 
      <bml:ID>SLA000000129417E</bml:ID> 
      <bml:Description>202220-002</bml:Description> 
      <bml:MaterialDefinitionID>PC-SLAB</bml:MaterialDefinitionID> 
      <bml:Status>LT-PR</bml:Status> 
      <bml:MaterialLotProperty> 
       <bml:ID>AutoControlComment</bml:ID> 
       <bml:Description>Comentariu autocontrol</bml:Description> 
       <bml:Value> 
        <bml:ValueString/> 
        <bml:DataType>string</bml:DataType> 
        <bml:UnitOfMeasure>n/a</bml:UnitOfMeasure> 
        <bml:Any/> 
       </bml:Value> 
      </bml:MaterialLotProperty> 
      <bml:MaterialLotProperty> 
       <bml:ID>AutoControlDecision</bml:ID> 
       <bml:Description>Decizie autocontrol</bml:Description> 
       <bml:Value> 
        <bml:ValueString>1</bml:ValueString> 
        <bml:DataType>string</bml:DataType> 
        <bml:UnitOfMeasure>n/a</bml:UnitOfMeasure> 
        <bml:Any/> 
       </bml:Value> 
      </bml:MaterialLotProperty> 
      <bml:MaterialLotProperty> 
       <bml:ID>AutoControlRecAction</bml:ID> 
       <bml:Description>Actiune înreg. Autocontrol</bml:Description> 
       <bml:Value> 
        <bml:ValueString/> 
        <bml:DataType>string</bml:DataType> 
        <bml:UnitOfMeasure>n/a</bml:UnitOfMeasure> 
        <bml:Any/> 
       </bml:Value> 
      </bml:MaterialLotProperty> 
      <bml:MaterialLotProperty> 
       <bml:ID>CCP_Aspect</bml:ID> 
       <bml:Description>Aspect CCP</bml:Description> 
       <bml:Value> 
        <bml:ValueString>7</bml:ValueString> 
        <bml:DataType>integer</bml:DataType> 
        <bml:UnitOfMeasure>n/a</bml:UnitOfMeasure> 
        <bml:Any/> 
       </bml:Value> 
      </bml:MaterialLotProperty> 
      <bml:MaterialLotProperty> 
       <bml:ID>CCP_Cleanliness</bml:ID> 
       <bml:Description>Puritate CCP</bml:Description> 
       <bml:Value> 
        <bml:ValueString>6</bml:ValueString> 
        <bml:DataType>integer</bml:DataType> 
        <bml:UnitOfMeasure>n/a</bml:UnitOfMeasure> 
        <bml:Any/> 
       </bml:Value> 
      </bml:MaterialLotProperty> 
      <bml:StorageLocation>MTC4-Strand8</bml:StorageLocation> 
      <bml:Quantity> 
       <bml:QuantityString>14.593</bml:QuantityString> 
       <bml:DataType>decimal</bml:DataType> 
       <bml:UnitOfMeasure>ton</bml:UnitOfMeasure> 
       <bml:Any/> 
      </bml:Quantity> 
     </bml:MaterialLot> 
    </DataArea> 
</SyncMaterialLot> 
  • 目标XML文件
  • <?xml version="1.0" encoding="UTF-16" standalone="yes"?> 
    <!-- edited with XMLSpy v2011 rel. 3 sp1 (http://www.altova.com)--> 
    <RfcFunction rfcFunctionName="ZPEL_MATLOT_INBOUND" Unicode="false" version="xx.xx.xx.xx"> 
        <Imports> 
         <SimpleParam paramName="I_ERASE_ALL" paramLength="1" nucLength="1" ucLength="2" paramType="0" descriptionType="RFCTYPE_CHAR" decimal="0" optional="1"/> 
        </Imports> 
        <Exports/> 
        <Changing/> 
        <RfcTables> 
         <Table tName="T_APPAREA" tucLength="1276" tnucLength="638"> 
          <Header> 
           <cl clName="LOGICALID" clnucLength="50" clnucOffset="0" clucLength="100" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="COMPONENT" clnucLength="100" clnucOffset="50" clucLength="200" clucOffset="100" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="TASK" clnucLength="100" clnucOffset="150" clucLength="200" clucOffset="300" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="REFERENCEID" clnucLength="50" clnucOffset="250" clucLength="100" clucOffset="500" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="CONFIRMATION" clnucLength="50" clnucOffset="300" clucLength="100" clucOffset="600" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="AUTHORIZATIONID" clnucLength="50" clnucOffset="350" clucLength="100" clucOffset="700" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="CREATIONDATETIME" clnucLength="50" clnucOffset="400" clucLength="100" clucOffset="800" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="SIGNATURE" clnucLength="50" clnucOffset="450" clucLength="100" clucOffset="900" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="BODID" clnucLength="38" clnucOffset="500" clucLength="76" clucOffset="1000" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8">1123</cl> 
           <cl clName="USERAREA" clnucLength="100" clnucOffset="538" clucLength="200" clucOffset="1076" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
          </Header> 
          <body rowCounter="1"> 
           <tr> 
            <Item/> 
            <Item/> 
            <Item>HON</Item> 
            <Item/> 
            <Item/> 
            <Item/> 
            <Item/> 
            <Item/> 
            <Item>04aa4bb2-316f-4c43-abfa-705afd103a61</Item> 
            <Item>SAP_OUTPUT_5772649_20141116041806591.xml</Item> 
           </tr> 
          </body> 
         </Table> 
         <Table tName="T_DATAAREA" tucLength="1276" tnucLength="638"> 
          <Header> 
           <cl clName="SYNCEXPRESSION" clnucLength="50" clnucOffset="0" clucLength="100" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="MATLOTID" clnucLength="38" clnucOffset="50" clucLength="76" clucOffset="100" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="88" clucLength="200" clucOffset="176" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="MATDEFID" clnucLength="50" clnucOffset="188" clucLength="100" clucOffset="376" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="STATUS" clnucLength="50" clnucOffset="238" clucLength="100" clucOffset="476" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="EQUIPMENTID" clnucLength="50" clnucOffset="288" clucLength="100" clucOffset="576" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="EQUIPMENTELEMENTLVL" clnucLength="50" clnucOffset="338" clucLength="100" clucOffset="676" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="LOCATION" clnucLength="50" clnucOffset="388" clucLength="100" clucOffset="776" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="STORAGELOCATION" clnucLength="50" clnucOffset="438" clucLength="100" clucOffset="876" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
           <cl clName="QUANTITY" clnucLength="50" clnucOffset="488" clucLength="100" clucOffset="976" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
           <cl clName="UM" clnucLength="50" clnucOffset="538" clucLength="100" clucOffset="1076" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="10"/> 
           <cl clName="ANYTXT" clnucLength="50" clnucOffset="588" clucLength="100" clucOffset="1176" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="11"/> 
          </Header> 
          <body rowCounter="1"> 
           <tr> 
            <Item>Add</Item> 
            <Item>SLA000000129417E</Item> 
            <Item>202220-002</Item> 
            <Item>PC-SLAB</Item> 
            <Item>LT-PR</Item> 
            <Item/> 
            <Item/> 
            <Item/> 
            <Item>MTC4-Strand8</Item> 
            <Item>14.593</Item> 
            <Item>ton</Item> 
            <Item/> 
           </tr> 
          </body> 
         </Table> 
         <Table tName="T_MATLOTPROP" tucLength="1052" tnucLength="526"> 
          <Header> 
           <cl clName="MATLOTID" clnucLength="38" clnucOffset="0" clucLength="76" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="PROPERTYID" clnucLength="38" clnucOffset="38" clucLength="76" clucOffset="76" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="76" clucLength="200" clucOffset="152" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="VALUE" clnucLength="150" clnucOffset="176" clucLength="300" clucOffset="352" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="DATATYPE" clnucLength="50" clnucOffset="326" clucLength="100" clucOffset="652" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="UM" clnucLength="50" clnucOffset="376" clucLength="100" clucOffset="752" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="TESTSPECID" clnucLength="50" clnucOffset="426" clucLength="100" clucOffset="852" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="ANYTXT" clnucLength="50" clnucOffset="476" clucLength="100" clucOffset="952" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
          </Header> 
          <body rowCounter="2"> 
           <tr> 
            <Item>SLA000000129417E</Item> 
            <Item>AutoControlDecision</Item> 
            <Item>Decizie autocontrol</Item> 
            <Item>1</Item> 
            <Item>string</Item> 
            <Item>n/a</Item> 
            <Item/> 
            <Item/> 
           </tr> 
           <tr> 
            <Item>SLA000000129417E</Item> 
            <Item>CCP_Aspect</Item> 
            <Item>Aspect CCP</Item> 
            <Item>7</Item> 
            <Item>integer</Item> 
            <Item>n/a</Item> 
            <Item/> 
            <Item/> 
           </tr> 
          </body> 
         </Table> 
         <Table tName="T_RETURN" tucLength="1088" tnucLength="548"> 
          <Header> 
           <cl clName="TYPE" clnucLength="1" clnucOffset="0" clucLength="2" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="ID" clnucLength="20" clnucOffset="1" clucLength="40" clucOffset="2" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="NUMBER" clnucLength="3" clnucOffset="21" clucLength="6" clucOffset="42" clType="6" decimal="0" sapType="RFCTYPE_NUM" seqNum="2"/> 
           <cl clName="MESSAGE" clnucLength="220" clnucOffset="24" clucLength="440" clucOffset="48" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="LOG_NO" clnucLength="20" clnucOffset="244" clucLength="40" clucOffset="488" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="LOG_MSG_NO" clnucLength="6" clnucOffset="264" clucLength="12" clucOffset="528" clType="6" decimal="0" sapType="RFCTYPE_NUM" seqNum="5"/> 
           <cl clName="MESSAGE_V1" clnucLength="50" clnucOffset="270" clucLength="100" clucOffset="540" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="MESSAGE_V2" clnucLength="50" clnucOffset="320" clucLength="100" clucOffset="640" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="MESSAGE_V3" clnucLength="50" clnucOffset="370" clucLength="100" clucOffset="740" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
           <cl clName="MESSAGE_V4" clnucLength="50" clnucOffset="420" clucLength="100" clucOffset="840" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
           <cl clName="PARAMETER" clnucLength="32" clnucOffset="470" clucLength="64" clucOffset="940" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="10"/> 
           <cl clName="ROW" clnucLength="4" clnucOffset="504" clucLength="4" clucOffset="1004" clType="8" decimal="0" sapType="RFCTYPE_INT" seqNum="11"/> 
           <cl clName="FIELD" clnucLength="30" clnucOffset="508" clucLength="60" clucOffset="1008" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="12"/> 
           <cl clName="SYSTEM" clnucLength="10" clnucOffset="538" clucLength="20" clucOffset="1068" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="13"/> 
          </Header> 
          <body rowCounter="0"/> 
         </Table> 
         <Table tName="T_SUBLOT" tucLength="952" tnucLength="476"> 
          <Header> 
           <cl clName="MATLOTID" clnucLength="38" clnucOffset="0" clucLength="76" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="SUBLOTID" clnucLength="38" clnucOffset="38" clucLength="76" clucOffset="76" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="76" clucLength="200" clucOffset="152" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="STATUS" clnucLength="50" clnucOffset="176" clucLength="100" clucOffset="352" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="STORAGELOCATION" clnucLength="50" clnucOffset="226" clucLength="100" clucOffset="452" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="QUANTITY" clnucLength="50" clnucOffset="276" clucLength="100" clucOffset="552" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="UM" clnucLength="50" clnucOffset="326" clucLength="100" clucOffset="652" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="MATSUBLOT" clnucLength="50" clnucOffset="376" clucLength="100" clucOffset="752" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="ANYTXT" clnucLength="50" clnucOffset="426" clucLength="100" clucOffset="852" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
          </Header> 
          <body rowCounter="0"/> 
         </Table> 
         <Table tName="T_TESTRESULTS" tucLength="1028" tnucLength="514"> 
          <Header> 
           <cl clName="MATLOTID" clnucLength="38" clnucOffset="0" clucLength="76" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="PROPERTYID" clnucLength="38" clnucOffset="38" clucLength="76" clucOffset="76" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="TESTID" clnucLength="38" clnucOffset="76" clucLength="76" clucOffset="152" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="114" clucLength="200" clucOffset="228" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="TESTDATETIME" clnucLength="50" clnucOffset="214" clucLength="100" clucOffset="428" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="RESULTVALUE" clnucLength="50" clnucOffset="264" clucLength="100" clucOffset="528" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="RESULTDATATYPE" clnucLength="50" clnucOffset="314" clucLength="100" clucOffset="628" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="RESULTANY" clnucLength="50" clnucOffset="364" clucLength="100" clucOffset="728" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="EXPIRATIONTIME" clnucLength="50" clnucOffset="414" clucLength="100" clucOffset="828" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
           <cl clName="ANYTXT" clnucLength="50" clnucOffset="464" clucLength="100" clucOffset="928" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
          </Header> 
          <body rowCounter="0"/> 
         </Table> 
        </RfcTables> 
        <RFC_Exceptions/> 
    </RfcFunction> 
    

    有用于映射的源文件中的三个区:ApplicationArea [0..1],DataArea [0..1]和MaterialLotProperty [1..n]映射到三个ABAP表:T_APPAREA,T_DATAAREA和T_MATLOTPROP。其他参数不能转换。

    我只设法映射ApplicationArea但还是坚持了DataArea中:

    <xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.siemens.com/ad/mes/b2mt-1.0" xmlns:amg="[email protected]" xmlns:bml="http://www.wbf.org/xml/b2mml-v02" xmlns:oag="http://www.openapplications.org/oagis" xmlns:sit="http://www.siemens.com/ad/mes/b2mml-v02-SITExt-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
        <xsl:output method="xml" encoding="UTF-8" indent="yes"/> 
        <xsl:template match="*"> 
         <RfcFunction rfcFunctionName="ZPEL_MATLOT_INBOUND" Unicode="false" version="xx.xx.xx.xx"> 
          <Imports> 
           <SimpleParam paramName="I_ERASE_ALL" paramLength="1" nucLength="1" ucLength="2" paramType="0" descriptionType="RFCTYPE_CHAR" decimal="0" optional="1"/> 
          </Imports> 
          <Exports/> 
          <Changing/> 
          <RfcTables> 
            <xsl:apply-templates select="oag:ApplicationArea"/> 
            <xsl:apply-templates select="DataArea"/> 
          </RfcTables> 
          <RFC_Exceptions/> 
         </RfcFunction> 
        </xsl:template> 
        <xsl:template match="oag:ApplicationArea"> 
         <Table tName="T_APPAREA" tucLength="1276" tnucLength="638"> 
          <Header> 
           <cl clName="LOGICALID" clnucLength="50" clnucOffset="0" clucLength="100" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="COMPONENT" clnucLength="100" clnucOffset="50" clucLength="200" clucOffset="100" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="TASK" clnucLength="100" clnucOffset="150" clucLength="200" clucOffset="300" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="REFERENCEID" clnucLength="50" clnucOffset="250" clucLength="100" clucOffset="500" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="CONFIRMATION" clnucLength="50" clnucOffset="300" clucLength="100" clucOffset="600" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="AUTHORIZATIONID" clnucLength="50" clnucOffset="350" clucLength="100" clucOffset="700" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="CREATIONDATETIME" clnucLength="50" clnucOffset="400" clucLength="100" clucOffset="800" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="SIGNATURE" clnucLength="50" clnucOffset="450" clucLength="100" clucOffset="900" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="BODID" clnucLength="38" clnucOffset="500" clucLength="76" clucOffset="1000" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
           <cl clName="USERAREA" clnucLength="100" clnucOffset="538" clucLength="200" clucOffset="1076" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
          </Header> 
          <body> 
           <xsl:attribute name="rowCounter"><xsl:value-of select="string(count(ApplicationArea))"/></xsl:attribute> 
           <tr> 
            <Item/> 
            <Item/> 
            <Item> 
             <xsl:value-of select="oag:Sender/oag:Task"/> 
            </Item> 
            <Item/> 
            <Item/> 
            <Item/> 
            <Item> 
             <xsl:value-of select="oag:CreationDateTime"/> 
            </Item> 
            <Item/> 
            <Item> 
             <xsl:value-of select="oag:BODId"/> 
            </Item> 
            <Item> 
             <xsl:value-of select="substring-after(document-uri(/),'/')"/> 
            </Item> 
           </tr> 
          </body> 
         </Table> 
        </xsl:template> 
        <xsl:template match="DataArea"> 
         <Table tName="T_DATAAREA" tucLength="1276" tnucLength="638"> 
          <Header> 
           <cl clName="SYNCEXPRESSION" clnucLength="50" clnucOffset="0" clucLength="100" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
           <cl clName="MATLOTID" clnucLength="38" clnucOffset="50" clucLength="76" clucOffset="100" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
           <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="88" clucLength="200" clucOffset="176" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
           <cl clName="MATDEFID" clnucLength="50" clnucOffset="188" clucLength="100" clucOffset="376" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
           <cl clName="STATUS" clnucLength="50" clnucOffset="238" clucLength="100" clucOffset="476" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
           <cl clName="EQUIPMENTID" clnucLength="50" clnucOffset="288" clucLength="100" clucOffset="576" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
           <cl clName="EQUIPMENTELEMENTLVL" clnucLength="50" clnucOffset="338" clucLength="100" clucOffset="676" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
           <cl clName="LOCATION" clnucLength="50" clnucOffset="388" clucLength="100" clucOffset="776" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
           <cl clName="STORAGELOCATION" clnucLength="50" clnucOffset="438" clucLength="100" clucOffset="876" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
           <cl clName="QUANTITY" clnucLength="50" clnucOffset="488" clucLength="100" clucOffset="976" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
           <cl clName="UM" clnucLength="50" clnucOffset="538" clucLength="100" clucOffset="1076" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="10"/> 
           <cl clName="ANYTXT" clnucLength="50" clnucOffset="588" clucLength="100" clucOffset="1176" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="11"/> 
          </Header> 
          <body> 
           <xsl:attribute name="rowCounter"><xsl:value-of select="string(count(DataArea))"/></xsl:attribute> 
           <tr> 
            <Item>Add</Item> 
            <Item>SLA000000129417E</Item> 
            <Item>922678-030</Item> 
            <Item>PC-SLAB</Item> 
            <Item>LT-REL</Item> 
            <Item/> 
            <Item/> 
            <Item/> 
            <Item>MTC1-Strand2</Item> 
            <Item>20.606</Item> 
            <Item>ton</Item> 
            <Item/> 
           </tr> 
          </body> 
         </Table> 
        </xsl:template> 
    </xsl:transform> 
    

    如何纠正的转型?

    回答

    0

    它可能感兴趣的答案。我已经解决了它,而无需使用模板:

    的XSLT(1.0):

    <?xml version="1.0"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oag="http://www.openapplications.org/oagis" xmlns:a="http://www.siemens.com/ad/mes/b2mt-1.0" xmlns:bml="http://www.wbf.org/xml/b2mml-v02"> 
        <xsl:output method="xml" encoding="UTF-8" indent="yes"/> 
        <xsl:template match="/"> 
         <RfcFunction> 
          <RfcTables> 
           <Table tName="T_APPAREA" tucLength="1276" tnucLength="638"> 
            <Header> 
             <cl clName="LOGICALID" clnucLength="50" clnucOffset="0" clucLength="100" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
             <cl clName="COMPONENT" clnucLength="100" clnucOffset="50" clucLength="200" clucOffset="100" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
             <cl clName="TASK" clnucLength="100" clnucOffset="150" clucLength="200" clucOffset="300" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
             <cl clName="REFERENCEID" clnucLength="50" clnucOffset="250" clucLength="100" clucOffset="500" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
             <cl clName="CONFIRMATION" clnucLength="50" clnucOffset="300" clucLength="100" clucOffset="600" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
             <cl clName="AUTHORIZATIONID" clnucLength="50" clnucOffset="350" clucLength="100" clucOffset="700" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
             <cl clName="CREATIONDATETIME" clnucLength="50" clnucOffset="400" clucLength="100" clucOffset="800" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
             <cl clName="SIGNATURE" clnucLength="50" clnucOffset="450" clucLength="100" clucOffset="900" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
             <cl clName="BODID" clnucLength="38" clnucOffset="500" clucLength="76" clucOffset="1000" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
             <cl clName="USERAREA" clnucLength="100" clnucOffset="538" clucLength="200" clucOffset="1076" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
            </Header> 
            <body> 
             <xsl:attribute name="rowCounter"><xsl:value-of select="count(a:SyncMaterialLot/oag:ApplicationArea)"/></xsl:attribute> 
             <tr> 
              <Item/> 
              <Item/> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/oag:ApplicationArea/oag:Sender/oag:Task"/> 
              </Item> 
              <Item/> 
              <Item/> 
              <Item/> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/oag:ApplicationArea/oag:CreationDateTime"/> 
              </Item> 
              <Item/> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/oag:ApplicationArea/oag:BODId"/> 
              </Item> 
              <Item/> 
             </tr> 
            </body> 
           </Table> 
           <Table tName="T_DATAAREA" tucLength="1276" tnucLength="638"> 
            <Header> 
             <cl clName="SYNCEXPRESSION" clnucLength="50" clnucOffset="0" clucLength="100" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
             <cl clName="MATLOTID" clnucLength="38" clnucOffset="50" clucLength="76" clucOffset="100" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
             <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="88" clucLength="200" clucOffset="176" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
             <cl clName="MATDEFID" clnucLength="50" clnucOffset="188" clucLength="100" clucOffset="376" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
             <cl clName="STATUS" clnucLength="50" clnucOffset="238" clucLength="100" clucOffset="476" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
             <cl clName="EQUIPMENTID" clnucLength="50" clnucOffset="288" clucLength="100" clucOffset="576" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
             <cl clName="EQUIPMENTELEMENTLVL" clnucLength="50" clnucOffset="338" clucLength="100" clucOffset="676" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
             <cl clName="LOCATION" clnucLength="50" clnucOffset="388" clucLength="100" clucOffset="776" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
             <cl clName="STORAGELOCATION" clnucLength="50" clnucOffset="438" clucLength="100" clucOffset="876" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
             <cl clName="QUANTITY" clnucLength="50" clnucOffset="488" clucLength="100" clucOffset="976" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
             <cl clName="UM" clnucLength="50" clnucOffset="538" clucLength="100" clucOffset="1076" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="10"/> 
             <cl clName="ANYTXT" clnucLength="50" clnucOffset="588" clucLength="100" clucOffset="1176" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="11"/> 
            </Header> 
            <body> 
             <xsl:attribute name="rowCounter"><xsl:value-of select="count(a:SyncMaterialLot/a:DataArea)"/></xsl:attribute> 
             <tr> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/oag:Sync/oag:SyncCriteria/oag:SyncExpression/@action"/> 
              </Item> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:ID"/> 
              </Item> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:Description"/> 
              </Item> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:MaterialDefinitionID"/> 
              </Item> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:Status"/> 
              </Item> 
              <Item/> 
              <Item/> 
              <Item/> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:StorageLocation"/> 
              </Item> 
              <Item> 
               <xsl:value-of select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:Quantity/bml:QuantityString"/> 
              </Item> 
              <Item>ton</Item> 
              <Item/> 
             </tr> 
            </body> 
           </Table> 
           <Table tName="T_MATLOTPROP" tucLength="1052" tnucLength="526"> 
            <Header> 
             <cl clName="MATLOTID" clnucLength="38" clnucOffset="0" clucLength="76" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
             <cl clName="PROPERTYID" clnucLength="38" clnucOffset="38" clucLength="76" clucOffset="76" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
             <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="76" clucLength="200" clucOffset="152" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
             <cl clName="VALUE" clnucLength="150" clnucOffset="176" clucLength="300" clucOffset="352" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
             <cl clName="DATATYPE" clnucLength="50" clnucOffset="326" clucLength="100" clucOffset="652" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
             <cl clName="UM" clnucLength="50" clnucOffset="376" clucLength="100" clucOffset="752" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
             <cl clName="TESTSPECID" clnucLength="50" clnucOffset="426" clucLength="100" clucOffset="852" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
             <cl clName="ANYTXT" clnucLength="50" clnucOffset="476" clucLength="100" clucOffset="952" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
            </Header> 
            <body> 
             <xsl:attribute name="rowCounter"><xsl:value-of select="count(a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:MaterialLotProperty)"/></xsl:attribute> 
             <xsl:for-each select="a:SyncMaterialLot/a:DataArea/bml:MaterialLot/bml:MaterialLotProperty"> 
              <tr> 
               <Item> 
                <xsl:value-of select="../bml:ID"/> 
               </Item> 
               <Item> 
                <xsl:value-of select="bml:ID"/> 
               </Item> 
               <Item> 
                <xsl:value-of select="bml:Description"/> 
               </Item> 
               <Item> 
                <xsl:value-of select="bml:Value/bml:ValueString"/> 
               </Item> 
               <Item> 
                <xsl:value-of select="bml:Value/bml:DataType"/> 
               </Item> 
               <Item> 
                <xsl:value-of select="bml:Value/bml:UnitOfMeasure"/> 
               </Item> 
               <Item> 
                <xsl:value-of select="bml:Value/bml:Any"/> 
               </Item> 
              </tr> 
             </xsl:for-each> 
            </body> 
           </Table> 
           <Table tName="T_RETURN" tucLength="1088" tnucLength="548"> 
            <Header> 
             <cl clName="TYPE" clnucLength="1" clnucOffset="0" clucLength="2" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
             <cl clName="ID" clnucLength="20" clnucOffset="1" clucLength="40" clucOffset="2" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
             <cl clName="NUMBER" clnucLength="3" clnucOffset="21" clucLength="6" clucOffset="42" clType="6" decimal="0" sapType="RFCTYPE_NUM" seqNum="2"/> 
             <cl clName="MESSAGE" clnucLength="220" clnucOffset="24" clucLength="440" clucOffset="48" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
             <cl clName="LOG_NO" clnucLength="20" clnucOffset="244" clucLength="40" clucOffset="488" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
             <cl clName="LOG_MSG_NO" clnucLength="6" clnucOffset="264" clucLength="12" clucOffset="528" clType="6" decimal="0" sapType="RFCTYPE_NUM" seqNum="5"/> 
             <cl clName="MESSAGE_V1" clnucLength="50" clnucOffset="270" clucLength="100" clucOffset="540" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
             <cl clName="MESSAGE_V2" clnucLength="50" clnucOffset="320" clucLength="100" clucOffset="640" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
             <cl clName="MESSAGE_V3" clnucLength="50" clnucOffset="370" clucLength="100" clucOffset="740" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
             <cl clName="MESSAGE_V4" clnucLength="50" clnucOffset="420" clucLength="100" clucOffset="840" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
             <cl clName="PARAMETER" clnucLength="32" clnucOffset="470" clucLength="64" clucOffset="940" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="10"/> 
             <cl clName="ROW" clnucLength="4" clnucOffset="504" clucLength="4" clucOffset="1004" clType="8" decimal="0" sapType="RFCTYPE_INT" seqNum="11"/> 
             <cl clName="FIELD" clnucLength="30" clnucOffset="508" clucLength="60" clucOffset="1008" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="12"/> 
             <cl clName="SYSTEM" clnucLength="10" clnucOffset="538" clucLength="20" clucOffset="1068" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="13"/> 
            </Header> 
            <body rowCounter="0"/> 
           </Table> 
           <Table tName="T_SUBLOT" tucLength="952" tnucLength="476"> 
            <Header> 
             <cl clName="MATLOTID" clnucLength="38" clnucOffset="0" clucLength="76" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
             <cl clName="SUBLOTID" clnucLength="38" clnucOffset="38" clucLength="76" clucOffset="76" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
             <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="76" clucLength="200" clucOffset="152" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
             <cl clName="STATUS" clnucLength="50" clnucOffset="176" clucLength="100" clucOffset="352" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
             <cl clName="STORAGELOCATION" clnucLength="50" clnucOffset="226" clucLength="100" clucOffset="452" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
             <cl clName="QUANTITY" clnucLength="50" clnucOffset="276" clucLength="100" clucOffset="552" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
             <cl clName="UM" clnucLength="50" clnucOffset="326" clucLength="100" clucOffset="652" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
             <cl clName="MATSUBLOT" clnucLength="50" clnucOffset="376" clucLength="100" clucOffset="752" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
             <cl clName="ANYTXT" clnucLength="50" clnucOffset="426" clucLength="100" clucOffset="852" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
            </Header> 
            <body rowCounter="0"/> 
           </Table> 
           <Table tName="T_TESTRESULTS" tucLength="1028" tnucLength="514"> 
            <Header> 
             <cl clName="MATLOTID" clnucLength="38" clnucOffset="0" clucLength="76" clucOffset="0" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="0"/> 
             <cl clName="PROPERTYID" clnucLength="38" clnucOffset="38" clucLength="76" clucOffset="76" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="1"/> 
             <cl clName="TESTID" clnucLength="38" clnucOffset="76" clucLength="76" clucOffset="152" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="2"/> 
             <cl clName="DESCRIPTION" clnucLength="100" clnucOffset="114" clucLength="200" clucOffset="228" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="3"/> 
             <cl clName="TESTDATETIME" clnucLength="50" clnucOffset="214" clucLength="100" clucOffset="428" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="4"/> 
             <cl clName="RESULTVALUE" clnucLength="50" clnucOffset="264" clucLength="100" clucOffset="528" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="5"/> 
             <cl clName="RESULTDATATYPE" clnucLength="50" clnucOffset="314" clucLength="100" clucOffset="628" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="6"/> 
             <cl clName="RESULTANY" clnucLength="50" clnucOffset="364" clucLength="100" clucOffset="728" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="7"/> 
             <cl clName="EXPIRATIONTIME" clnucLength="50" clnucOffset="414" clucLength="100" clucOffset="828" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="8"/> 
             <cl clName="ANYTXT" clnucLength="50" clnucOffset="464" clucLength="100" clucOffset="928" clType="0" decimal="0" sapType="RFCTYPE_CHAR" seqNum="9"/> 
            </Header> 
            <body rowCounter="0"/> 
           </Table> 
          </RfcTables> 
         </RfcFunction> 
        </xsl:template> 
    </xsl:stylesheet>