Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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模板在for-each游标中用于映射最后一个元素_Xslt - Fatal编程技术网

XSLT模板在for-each游标中用于映射最后一个元素

XSLT模板在for-each游标中用于映射最后一个元素,xslt,Xslt,以下是所具有的示例文件: 在xslt中使用position()时,我们需要一些xslt转换方面的帮助 输入: AAA BBB CCC 123 9999 8889 0000 9696 XSD: XSLT: 答复: 123 AAA 9999 BBB 8889 CCC 0000 9696 在这里,由于cusor结束,Bate变空了。我需要将'RecordA'的最后一个值应用于此Bate。如果可能,使用模板您的XSD和XSLT似乎建议ElementTwo节点包含一个子RecordB节

以下是所具有的示例文件: 在xslt中使用position()时,我们需要一些xslt转换方面的帮助

输入:

AAA
BBB
CCC
123
9999
8889
0000
9696
XSD:

XSLT:

答复:

123
AAA
9999
BBB
8889
CCC
0000
9696


在这里,由于cusor结束,Bate变空了。我需要将'RecordA'的最后一个值应用于此Bate。如果可能,使用模板

您的XSD和XSLT似乎建议ElementTwo节点包含一个子RecordB节点,但XML中没有这样的节点。此外,XSLT引用了名称空间前缀imp1,但XML中没有名称空间的迹象(可能是因为您忘记显示HeaderElement。请更正此问题好吗?谢谢。作为一个快速而肮脏的回答,您可以使用此xpath表达式而不是您的表达式来输出Bate:if(../imp1:ElementOne[$cur]/imp1:RecordA)然后(../imp1:ElementOne[$cur]/imp1:RecordA)else../imp1:ElementOne[last()]/imp1:recordawelcomme to SO。请至少用必要的代码更新问题,以复制您的问题:有效且格式良好的XML,这对于您的三个代码段中的任何一个都不是真的。要帮助我们,请阅读。
 <ElementOne> 
 <RecordA>AAA</RecordA>
  </ElementOne>
<ElementOne>
 <RecordA>BBB</RecordA>
</ElementOne>
 <ElementOne> 
  <RecordA>CCC</RecordA>
</ElementOne>
<ElementTwo> 
  <DfiAccttNumber>123</DfiAccttNumber>
</ElementTwo>
 <ElementTwo> 
  <DfiAccttNumber>9999</DfiAccttNumber>
 </ElementTwo>
  <ElementTwo>
  <DfiAccttNumber>8889</DfiAccttNumber>
 </ElementTwo>
 <ElementTwo>
  <DfiAccttNumber>0000</DfiAccttNumber>
 </ElementTwo>
  <ElementTwo>
  <DfiAccttNumber>9696</DfiAccttNumber>
 </ElementTwo>
<xsd:element name="HeaderElement">
    <xsd:element name="ElementOne" nxsd:style="array" nxsd:cellSeparatedBy="${eol}" nxsd:conditionValue="1">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="RecordA" type="xsd:string" nxsd:style="fixedLength" nxsd:length="2" />
           </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
    <xsd:element name="ElementTwo" nxsd:style="array" nxsd:cellSeparatedBy="${eol}" nxsd:conditionValue="6">
      <xsd:complexType>
        <xsd:sequence>
         <xsd:element name="RecordB" type="xsd:string" nxsd:style="fixedLength" nxsd:length="17" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
     </xsd:element>
<xsl:template match="/">
<xsl:variable name="cur"/>
<ebo:CreateReturnedItemListEBM>
  <DataArea>
    <xsl:for-each select="/imp1:HeaderElement/imp1:ElementTwo">
      <xsl:variable name="cur" select="position()"/>
      <ebo:CreateReturnedItemList>
        <ebo:BankDetail>
           <ebo:AccountNumber>
            <ebo:Old>
              <xsl:value-of select="/imp1:HeaderElement/imp1:ElementTwo[$cur]/imp1:RecordB"/>
            </ebo:Old>
          </ebo:AccountNumber>
        </ebo:BankDetail>
        <ebo:Payment>
          <ebo:Bate>
        <xsl:value-of select="../imp1:ElementOne[$cur]/imp1:RecordA"/>
          </ebo:Bate>
        </ebo:Payment>
      </ebo:CreateReturnedItemList>
    </xsl:for-each>
  </DataArea>
</ebo:CreateReturnedItemListEBM>
     <ebo:CreateReturnedItemList>
     <ebo:BankDetail>
        <ebo:AccountNumber>
            <ebo:Old>123</ebo:Old>
         </ebo:AccountNumber>
      </ebo:BankDetail>
      <ebo:Payment>
        <ebo:Bate>AAA</ebo:Bate>
      </ebo:Payment>
   </ebo:CreateReturnedItemList>
   <ebo:CreateReturnedItemList>
     <ebo:BankDetail>
        <ebo:AccountNumber>
           <ebo:Old>9999</ebo:Old>
        </ebo:AccountNumber>
     </ebo:BankDetail>
     <ebo:Payment>
        <ebo:Bate>BBB</ebo:Bate>
     </ebo:Payment>
  </ebo:CreateReturnedItemList>
  <ebo:CreateReturnedItemList>
     <ebo:BankDetail>
        <ebo:AccountNumber>
           <ebo:Old>8889</ebo:Old>
        </ebo:AccountNumber>
     </ebo:BankDetail>
     <ebo:Payment>
        <ebo:Bate>CCC</ebo:Bate>
     </ebo:Payment>
  </ebo:CreateReturnedItemList>
  <ebo:CreateReturnedItemList>
     <ebo:BankDetail>
        <ebo:AccountNumber>
           <ebo:Old>0000</ebo:Old>
        </ebo:AccountNumber>
     </ebo:BankDetail>
     <ebo:Payment>
        <ebo:Bate/>
     </ebo:Payment>
  </ebo:CreateReturnedItemList>
  <ebo:CreateReturnedItemList>
     <ebo:BankDetail>
        <ebo:AccountNumber>
           <ebo:Old>9696</ebo:Old>
        </ebo:AccountNumber>
     </ebo:BankDetail>
     <ebo:Payment>
        <ebo:Bate/>  
     </ebo:Payment>
  </ebo:CreateReturnedItemList>