我输入的XML为
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02">
<BkToCstmrDbtCdtNtfctn>
<GrpHdr>
<MsgId>FRDA000003421606</MsgId>
<AddtlInf>BatchAccounting</AddtlInf>
</GrpHdr>
<Ntfctn>
<Id>AC730486180000000002</Id>
<ElctrncSeqNb>1234</ElctrncSeqNb>
<Acct>
<Svcr>
<FinInstnId>
<Othr>
<Id>40457258</Id>
</Othr>
</FinInstnId>
</Svcr>
</Acct>
<Ntry>
<Amt Ccy="EUR">126</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>BOOK</Sts>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RDDT</Cd>
<SubFmlyCd>ESDD</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Issr>SWIFT</Issr>
</Prtry>
</BkTxCd>
<AmtDtls>
<InstdAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</InstdAmt>
<TxAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</TxAmt>
<CntrValAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</CntrValAmt>
</AmtDtls>
<Chrgs>
<TtlChrgsAndTaxAmt Ccy="AAA">0</TtlChrgsAndTaxAmt>
<Amt Ccy="AAA">0</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Tp>
<Cd>COMM</Cd>
</Tp>
<Rate>0</Rate>
<Br>SLEV</Br>
<Pty>
<FinInstnId>
<BIC>AAAAAA20</BIC>
<ClrSysMmbId>
<ClrSysId>
<Cd>a</Cd>
</ClrSysId>
<MmbId>a</MmbId>
</ClrSysMmbId>
<Nm>a</Nm>
<PstlAdr>
<AdrTp>MLTO</AdrTp>
<Dept>a</Dept>
<SubDept>a</SubDept>
<StrtNm>a</StrtNm>
<BldgNb>a</BldgNb>
<PstCd>a</PstCd>
<TwnNm>a</TwnNm>
<CtrySubDvsn>a</CtrySubDvsn>
<Ctry>AA</Ctry>
<AdrLine>a</AdrLine>
</PstlAdr>
<Othr>
<Id>a</Id>
<SchmeNm>
<Cd>a</Cd>
</SchmeNm>
<Issr>a</Issr>
</Othr>
</FinInstnId>
<BrnchId>
<Id>a</Id>
<Nm>a</Nm>
<PstlAdr>
<AdrTp>ADDR</AdrTp>
<Dept>a</Dept>
<SubDept>a</SubDept>
<StrtNm>a</StrtNm>
<BldgNb>a</BldgNb>
<PstCd>a</PstCd>
<TwnNm>a</TwnNm>
<CtrySubDvsn>a</CtrySubDvsn>
<Ctry>AA</Ctry>
<AdrLine>a</AdrLine>
</PstlAdr>
</BrnchId>
</Pty>
<Tax>
<Id>a</Id>
<Rate>0</Rate>
<Amt Ccy="AAA">0</Amt>
</Tax>
</Chrgs>
<NtryDtls>
<Btch>
<MsgId>FG00000000000y88sd</MsgId>
<NbOfTxs>2</NbOfTxs>
</Btch>
<TxDtls>
<Refs>
<AcctSvcrRef>FRDA00000342</AcctSvcrRef>
<EndToEndId>E2E220161205123001</EndToEndId>
<TxId>FRDA00004341</TxId>
<MndtId>MANsecT1COR1201006</MndtId>
</Refs>
<AmtDtls/>
<Chrgs>
<TtlChrgsAndTaxAmt Ccy="BBB">0</TtlChrgsAndTaxAmt>
<Amt Ccy="BBB">0</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Tp>
<Cd>COMM</Cd>
</Tp>
<Rate>0</Rate>
<Br>SLEV</Br>
<Pty>
<FinInstnId>
<BIC>BBBBB20</BIC>
<ClrSysMmbId>
<ClrSysId>
<Cd>b</Cd>
</ClrSysId>
<MmbId>b</MmbId>
</ClrSysMmbId>
<Nm>b</Nm>
<PstlAdr>
<AdrTp>MLTO</AdrTp>
<Dept>b</Dept>
<SubDept>b</SubDept>
<StrtNm>b</StrtNm>
<BldgNb>b</BldgNb>
<PstCd>b</PstCd>
<TwnNm>b</TwnNm>
<CtrySubDvsn>b</CtrySubDvsn>
<Ctry>BB</Ctry>
<AdrLine>b</AdrLine>
</PstlAdr>
<Othr>
<Id>b</Id>
<SchmeNm>
<Cd>b</Cd>
</SchmeNm>
<Issr>b</Issr>
</Othr>
</FinInstnId>
<BrnchId>
<Id>b</Id>
<Nm>b</Nm>
<PstlAdr>
<AdrTp>bDDR</AdrTp>
<Dept>b</Dept>
<SubDept>b</SubDept>
<StrtNm>b</StrtNm>
<BldgNb>b</BldgNb>
<PstCd>b</PstCd>
<TwnNm>b</TwnNm>
<CtrySubDvsn>b</CtrySubDvsn>
<Ctry>BB</Ctry>
<AdrLine>b</AdrLine>
</PstlAdr>
</BrnchId>
</Pty>
<Tax>
<Id>b</Id>
<Rate>0</Rate>
<Amt Ccy="BBB">0</Amt>
</Tax>
</Chrgs>
<RltdPties>
<Cdtr>
<Nm>Creditor 1</Nm>
<PstlAdr>
<Ctry>PT</Ctry>
<AdrLine>TEST TEST</AdrLine>
<AdrLine>TEST TEST</AdrLine>
</PstlAdr>
<CtryOfRes>PT</CtryOfRes>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FR7630588000010050000143176</IBAN>
</Id>
</CdtrAcct>
</RltdPties>
<RltdDts>
<AccptncDtTm>2016-12-06T04:01:10</AccptncDtTm>
<IntrBkSttlmDt>2016-12-07</IntrBkSttlmDt>
</RltdDts>
<AddtlTxInf/>
</TxDtls>
<TxDtls>
<Refs>
<AcctSvcrRef>FRDA00000343</AcctSvcrRef>
<EndToEndId>E2E120161205123003</EndToEndId>
<TxId>FRDA00003343</TxId>
<MndtId>MANFRST1COR1201003</MndtId>
</Refs>
<AmtDtls/>
<RltdPties>
<Cdtr>
<Nm>Creditor 1</Nm>
<PstlAdr>
<Ctry>PT</Ctry>
<AdrLine>TEST TEST</AdrLine>
<AdrLine>TEST TEST</AdrLine>
</PstlAdr>
<CtryOfRes>PT</CtryOfRes>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FR7630588000010050000143176</IBAN>
</Id>
</CdtrAcct>
</RltdPties>
<RltdDts>
<AccptncDtTm>2016-12-06T04:01:10</AccptncDtTm>
<IntrBkSttlmDt>2016-12-07</IntrBkSttlmDt>
</RltdDts>
<AddtlTxInf/>
</TxDtls>
</NtryDtls>
<AddtlNtryInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSE</AddtlNtryInf>
</Ntry>
</Ntfctn>
</BkToCstmrDbtCdtNtfctn>
</Document>
我正在尝试从父节点TxDtls中提取子元素,其中TxDtls可以在输入XML中出现1次或多次。下面是我尝试使用的XLST
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:od="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" exclude-result-prefixes="od">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes"/>
<xsl:strip-space elements="od:*"/>
<xsl:template match="@* | node()" name="TransactionDetails">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:Refs">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:AmtDtls">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:Avlbty">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:BkTxCd">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:Chrgs">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:Intrst">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RltdPties">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RltdAgts">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:Purp">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RltdRmtInf">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RmtInf">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RltdDts">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RltdPric">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RltdQties">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:FinInstrmId">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:Tax">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:RtrInf">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:CorpActn">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:SfkpgAcct">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/od:AddtlTxInf">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
</xsl:stylesheet>
预期输出为:
<Refs xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><AcctSvcrRef>FRDA00000342</AcctSvcrRef><EndToEndId>E2E220161205123001</EndToEndId><TxId>FRDA00004341</TxId><MndtId>MANsecT1COR1201006</MndtId></Refs>TGST<AmtDtls xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"/>TGST<Chrgs xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><TtlChrgsAndTaxAmt Ccy="BBB">0</TtlChrgsAndTaxAmt><Amt Ccy="BBB">0</Amt><CdtDbtInd>DBIT</CdtDbtInd><Tp><Cd>COMM</Cd></Tp><Rate>0</Rate><Br>SLEV</Br><Pty><FinInstnId><BIC>BBBBB20</BIC><ClrSysMmbId><ClrSysId><Cd>b</Cd></ClrSysId><MmbId>b</MmbId></ClrSysMmbId><Nm>b</Nm><PstlAdr><AdrTp>MLTO</AdrTp><Dept>b</Dept><SubDept>b</SubDept><StrtNm>b</StrtNm><BldgNb>b</BldgNb><PstCd>b</PstCd><TwnNm>b</TwnNm><CtrySubDvsn>b</CtrySubDvsn><Ctry>BB</Ctry><AdrLine>b</AdrLine></PstlAdr><Othr><Id>b</Id><SchmeNm><Cd>b</Cd></SchmeNm><Issr>b</Issr></Othr></FinInstnId><BrnchId><Id>b</Id><Nm>b</Nm><PstlAdr><AdrTp>bDDR</AdrTp><Dept>b</Dept><SubDept>b</SubDept><StrtNm>b</StrtNm><BldgNb>b</BldgNb><PstCd>b</PstCd><TwnNm>b</TwnNm><CtrySubDvsn>b</CtrySubDvsn><Ctry>BB</Ctry><AdrLine>b</AdrLine></PstlAdr></BrnchId></Pty><Tax><Id>b</Id><Rate>0</Rate><Amt Ccy="BBB">0</Amt></Tax></Chrgs>TGST<RltdPties xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><Cdtr><Nm>Creditor 1</Nm><PstlAdr><Ctry>PT</Ctry><AdrLine>TEST TEST</AdrLine><AdrLine>TEST TEST</AdrLine></PstlAdr><CtryOfRes>PT</CtryOfRes></Cdtr><CdtrAcct><Id><IBAN>FR7630588000010050000143176</IBAN></Id></CdtrAcct></RltdPties>TGST<RltdDts xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><AccptncDtTm>2016-12-06T04:01:10</AccptncDtTm><IntrBkSttlmDt>2016-12-07</IntrBkSttlmDt></RltdDts>TGST<AddtlTxInf xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"/>TGST<Refs xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><AcctSvcrRef>FRDA00000343</AcctSvcrRef><EndToEndId>E2E120161205123003</EndToEndId><TxId>FRDA00003343</TxId><MndtId>MANFRST1COR1201003</MndtId></Refs>TGST<AmtDtls xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"/>TGST<RltdPties xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><Cdtr><Nm>Creditor 1</Nm><PstlAdr><Ctry>PT</Ctry><AdrLine>TEST TEST</AdrLine><AdrLine>TEST TEST</AdrLine></PstlAdr><CtryOfRes>PT</CtryOfRes></Cdtr><CdtrAcct><Id><IBAN>FR7630588000010050000143176</IBAN></Id></CdtrAcct></RltdPties>TGST<RltdDts xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"><AccptncDtTm>2016-12-06T04:01:10</AccptncDtTm><IntrBkSttlmDt>2016-12-07</IntrBkSttlmDt></RltdDts>TGST<AddtlTxInf xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02"/>TGST
我得到了预期的输出但是有了命名空间。我想删除命名空间。
需要输入构建XSLT才能获得所需的内容。
提前感谢
更新了XLST
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:od="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" exclude-result-prefixes="od">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="od:*"/>
<xsl:template match="*" priority="2">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:teqmplate>
<xsl:template match="@*|node()">
<xsl:copy-of select="."/>
<xsl:text>TGST</xsl:text>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="od:Document/od:BkToCstmrDbtCdtNtfctn/od:Ntfctn/od:Ntry/od:NtryDtls/od:TxDtls/*" />
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
您需要将文本元素放在其他位置:
<xsl:template match="*" priority="2">
<xsl:text>TGST</xsl:text>
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>