【问题标题】:Need to add xsi to the namespace需要将 xsi 添加到命名空间
【发布时间】:2018-05-01 09:12:38
【问题描述】:

我有这个作为输入

<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>

*

同样需要帮助

【问题讨论】:

  • 我在这里等待一些回复和帮助

标签: xslt biztalk


【解决方案1】:

你的匹配器&lt;xsl:template match="/Document"&gt; 永远不会被调用,因为它缺少命名空间。

使用任何别名将命名空间添加到您的 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">

【讨论】:

  • w3.org/1999/XSL/Transform" xmlns:iso="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03 ">
  • 你的意思是文档正在工作,但 XSI 命名空间没有。命名空间作为 Document 元素的一部分添加。
  • 嗨 Burki,我需要将命名空间和 xsi 都添加到文档 elsement 中。在这种情况下,命名空间存在但缺少 xsi。我需要 w3.org/2001/XMLSchema-instance">
  • 这正是转换后 Document 元素在我看来的样子(我使用 Saxon HE)。您确定文档匹配器现在可以工作吗?如果您使用最新的输入 xml、xsl 样式表、结果以及结果中未实现的内容更新您的问题,将会有所帮助。
【解决方案2】:

在自定义管道中使用了反汇编程序并且它工作正常。

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多