XSLT模板在for-each游标中用于映射最后一个元素
以下是所具有的示例文件: 在xslt中使用position()时,我们需要一些xslt转换方面的帮助 输入: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节
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>