올바른 제목을 어떻게 넣을지 모르겠습니다. 요소를 그룹화하는 데 핵심 기능을 사용하고 있습니다. BnkAcct/BBANID 및 XSeq/Seq의 모든 고유 값에 대해 <Acct>
태그를 만들어야합니다. 그러나 다른 요소 내에 있으면 요소의 특정 값을 가져올 수 없습니다.xslt v2.0.0에서 키 기능을 사용하는 방법
<XMLFile>
<Hdr>
<DctID>
<ID>2017-02-20ZTenantID</ID>
</DctID>
<Dscpt>Slovenska</Dscpt>
</Hdr>
<Acct>
<LNo>1</LNo>
<XSeq>
<Seq>111</Seq>
</XSeq>
<Prd>
<SDT>21.03.2016</SDT>
<EDT>21.03.2016</EDT>
</Prd>
<BnkAcct>
<BBANID>AAA111</BBANID>
</BnkAcct>
<Entry>
<Amt>4.42</Amt>
<Dtl>
<No>1</No>
<Amt>122.43</Amt>
</Dtl>
</Entry>
</Acct>
<Acct>
<LNo>1</LNo>
<XSeq>
<Seq>444</Seq>
</XSeq>
<Prd>
<SDT>21.06.2016</SDT>
<EDT>21.06.2016</EDT>
</Prd>
<BnkAcct>
<BBANID>DDD444</BBANID>
</BnkAcct>
<Entry>
<Amt>94.32</Amt>
<Dtl>
<No>4</No>
<Amt>852.11</Amt>
</Dtl>
</Entry>
</Acct>
<Acct>
<LNo>1</LNo>
<XSeq>
<Seq>444</Seq>
</XSeq>
<Prd>
<SDT>21.06.1999</SDT>
<EDT>21.06.2001</EDT>
</Prd>
<BnkAcct>
<BBANID>DDD444</BBANID>
</BnkAcct>
<Entry>
<Amt>2332.353</Amt>
<Dtl>
<No>5</No>
<Amt>23422.31</Amt>
</Dtl>
</Entry>
</Acct>
</XMLFile>
내 XSLT :
이<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="Header2" match="Acct" use="concat(BBANID, '|', Seq)"/>
<xsl:template match="/XMLFile">
<xsl:copy>
<xsl:copy-of select="Hdr"/>
<xsl:apply-templates select="Acct[generate-id() = generate-id(key('Header2', concat(BBANID, '|', Seq))[1])]" mode="Header2"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Acct" mode="Header2">
<BankStatementAccount>
<xsl:copy-of select="LNo|Seq|Prd|ID"/>
<xsl:apply-templates select="key('Header2', concat(BBANID, '|', Seq))"/>
</BankStatementAccount>
</xsl:template>
<xsl:template match="Acct">
<xsl:copy-of select="Entry"/>
</xsl:template>
</xsl:stylesheet>
이
예상 출력 : XSLT 어쩌면 때문에 쓸모가 작동하지 않는
<XMLFile>
<Hdr>
<DctID>
<ID>2017-02-20ZTenantID</ID>
</DctID>
<Dscpt>Slovenska</Dscpt>
</Hdr>
<Acct>
<LNo>1</LNo>
<XSeq>
<Seq>111</Seq>
</XSeq>
<Prd>
<SDT>21.03.2016</SDT>
<EDT>21.03.2016</EDT>
</Prd>
<BnkAcct>
<BBANID>AAA111</BBANID>
</BnkAcct>
<Entry>
<Amt>4.42</Amt>
<Dtl>
<No>1</No>
<Amt>122.43</Amt>
</Dtl>
</Entry>
</Acct>
<Acct>
<LNo>1</LNo>
<XSeq>
<Seq>444</Seq>
</XSeq>
<Prd>
<SDT>21.06.2016</SDT>
<EDT>21.06.2016</EDT>
</Prd>
<BnkAcct>
<BBANID>DDD444</BBANID>
</BnkAcct>
<Entry>
<Amt>94.32</Amt>
<Dtl>
<No>4</No>
<Amt>852.11</Amt>
</Dtl>
</Entry>
<Entry>
<Amt>2332.353</Amt>
<Dtl>
<No>5</No>
<Amt>23422.31</Amt>
</Dtl>
</Entry>
</Acct>
</XMLFile>
내가 사용하는 속성이 내 XML 파일입니다? BBANID는 <BnkAcct>
이고 Seq는 <XSeq>
입니다. 다른 요소 내에있는 경우 use 속성의 특정 요소를 어떻게 사용합니까?
그런데 <BnkAcct>
태그와 <XSeq>
태그를 제거하면 XSLT가 작동하지만 잘못되었습니다.
감사합니다.
XSLT 2.0을 사용한다면'xsl : for-each-group' 명령으로 그룹화하지 않는 이유는 무엇입니까? –
@ michael.hor247k : 오오! 미안하지만 잘 모르겠습니다. 나는 te web에서 본 아이디어를 그대로 복사하고있다. – pinkpanther