需要将xsi添加到命名空间

时间:2018-05-01 09:12:39

标签: xslt biztalk

我将此作为输入

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
  <CstmrPmtStsRpt>
    <GrpHdr>
      <MsgId></MsgId>
      <CreDtTm></CreDtTm>
      <InitgPty>
        <Id>
          <OrgId>
            <BICOrBEI></BICOrBEI>
          </OrgId>
        </Id>
      </InitgPty>
    </GrpHdr>
    <OrgnlGrpInfAndSts>
      <OrgnlMsgId></OrgnlMsgId>
      <OrgnlMsgNmId></OrgnlMsgNmId>
      <OrgnlNbOfTxs></OrgnlNbOfTxs>
      <OrgnlCtrlSum></OrgnlCtrlSum>
      <GrpSts></GrpSts>
    </OrgnlGrpInfAndSts>
  </CstmrPmtStsRpt>
</Document>

我需要在下面提供xsi的详细信息以及

<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
<CstmrPmtStsRpt>
        <GrpHdr>
          <MsgId></MsgId>
          <CreDtTm></CreDtTm>
          <InitgPty>
            <Id>
              <OrgId>
                <BICOrBEI></BICOrBEI>
              </OrgId>
            </Id>
          </InitgPty>
        </GrpHdr>
        <OrgnlGrpInfAndSts>
          <OrgnlMsgId></OrgnlMsgId>
          <OrgnlMsgNmId></OrgnlMsgNmId>
          <OrgnlNbOfTxs></OrgnlNbOfTxs>
          <OrgnlCtrlSum></OrgnlCtrlSum>
          <GrpSts></GrpSts>
        </OrgnlGrpInfAndSts>
      </CstmrPmtStsRpt>
    </Document>
  

我目前正在使用xslt,我正在尝试使用它进行推送   命名空间和xsi,但因为我不能在我的接收端口上使用它   我需要使用传递管道的事实

*<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:template match="@*|text()|comment()|processing-instruction()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/Document">
        <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
             <xsl:apply-templates select="@*|node()"/>           
        </Document>
    </xsl:template>

    <xsl:template match="*">
        <xsl:element name="{local-name()}" namespace="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

*

需要相同的帮助

2 个答案:

答案 0 :(得分:0)

您的匹配器<xsl:template match="/Document">从未被调用,因为它缺少命名空间。

使用任何别名将命名空间添加到XSL,并将别名添加到匹配器。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:iso="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
...
<xsl:template match="/iso:Document">

答案 1 :(得分:0)

在自定义管道中使用了反汇编程序,它运行良好。