我正在编写一个 xsl 样式表来将 Filemaker xml 转换为 SEPA 的 Pain.008 xml。我几乎完成了,但是我有一个问题,我似乎无法找到答案。最顶层的节点是,它需要看起来像这样:
我有 2 个从顶级模板调用的模板。Document 标签在这 2 个模板调用之前打开并在之后关闭。如果我将命名空间添加到 Document 标记,则两个模板的顶级标记都包含不需要的空命名空间 xmlns""。我意识到我可能没有正确匹配模板,但我现在尝试了一些不同的方法来删除这些不需要的名称空间,但似乎没有任何效果。请参阅下面的样式表和输出。
样式表(部分):
<xsl:template match="/">
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
<CstmrDrctDbtInitn>
<xsl:call-template name="header"></xsl:call-template>
<xsl:call-template name="paymentinf"></xsl:call-template>
</CstmrDrctDbtInitn>
</Document>
</xsl:template>
<!-- Header template -->
<xsl:template name="header" >
<GrpHdr>
<MsgId>
<xsl:value-of select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW[1]/fm:COL[$MsgId]/fm:DATA"/>
</MsgId>
<CreDtTm>
<xsl:value-of select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW[1]/fm:COL[$CreDtTm]/fm:DATA"/>
</CreDtTm>
<NbOfTxs>
<xsl:value-of select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW[1]/fm:COL[$NbOfTxs]/fm:DATA"/>
</NbOfTxs>
<CtrlSum>
<xsl:value-of select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW[1]/fm:COL[$CtrlSum]/fm:DATA"/>
</CtrlSum>
<InitgPty>
<Id>
<OrgId>
<Othr>
<Id>
<xsl:value-of select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW[1]/fm:COL[$Id]/fm:DATA"/>
</Id>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
</xsl:template>
输出:(仅重要部分)
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
"xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
<CstmrDrctDbtInitn>
<GrpHdr xmlns="">
<MsgId>17</MsgId>
<CreDtTm>2013-11-04T15:43:14</CreDtTm>
<NbOfTxs>6</NbOfTxs>
<CtrlSum>6203.6</CtrlSum>
<InitgPty>
<Id>
<OrgId>
<Othr>
<Id>IE14SDD360038</Id>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<PmtInf xmlns="">
期望的输出:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
"xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
<CstmrDrctDbtInitn>
<GrpHdr>
<MsgId>17</MsgId>
<CreDtTm>2013-11-04T15:43:14</CreDtTm>
<NbOfTxs>6</NbOfTxs>
<CtrlSum>6203.6</CtrlSum>
<InitgPty>
<Id>
<OrgId>
<Othr>
<Id>IE14SDD360038</Id>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<PmtInf>