【问题标题】:BizTalk - adding namespace to xmlBizTalk - 将命名空间添加到 xml
【发布时间】:2017-09-21 16:45:57
【问题描述】:

我是 BizTalk 新手,在向输出文件添加命名空间时遇到问题。

我需要得到以下输出,命名空间位于根级别:

<?xml version="1.0" encoding="utf-8"?>
<TestExternalPO xmlns="http://Test.EDI.TestExternalPO.Schemas">
 <Routing/>
 <POHeader/>
</TestExternalPO>

我的xsd是:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:b="http://schemas.microsoft.com/BizTalk/2003" 
           elementFormDefault="qualified" version="1.0">
<xs:annotation>
<xs:appinfo>
     <b:schemaInfo BizTalkServerEditorTool_Version="1.5"     root_reference="TestExternalPO"
      displayroot_reference="TestExternalPO" standard="XML"
    targetNamespace="http://Test.EDI.TestExternalPO.Schemas"
   xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
</xs:appinfo>
</xs:annotation>

我的 xslt 是:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates select="TestExternalPO"/>
</xsl:template>

<xsl:template match="TestExternalPO">
<TestExternalPO xmlns="http://Test.EDI.TestExternalPO.Schemas">
  <Routing>....

非常感谢任何帮助,

马格斯

4 月 25 日更新。 感谢所有的cmets。 上面的设置有效,但没有给我我想要的,即根级别的命名空间。

我确实在 xslt 中测试了命名空间,但在 BizTalk 上出现错误。

<xsl:template match="TestExternalPO">
      <TestExternalPO xmlns="http://Test.EDI.TestExternalPO.Schemas">
        <Routing>
          <xsl:attribute name="SendPartner">

BizTalk 错误 - 按消息类型“http://Test.EDI.TestExternalPO.Schemas”查找文档规范失败。验证正确部署的架构。

下面是输入文件的结构:

<TestExternalPO>
  <POHeader>    
  </POHeader>
  <TradingPartnersList>
    <TradingPartners>   
    </TradingPartners>
  </TradingPartnersList>
  <Contract>   
  </Contract>
  <ItemsList>
    <Items>
    </Items>
  </ItemsList>
</TestExternalPO>

问题在于我对“xmlns”的声明。 如果我添加“targetNamespace”,则输出在根元素处具有 targetNamespace。

这行得通:

<xsl:template match="TestExternalPO">
      <TestExternalPO targetNamespace="http://Test.EDI.TestExternalPO.Schemas">
        <Routing>
          <xsl:attribute name="SendPartner">

再次感谢您的帮助。 马格斯

【问题讨论】:

  • 请发布输入示例和完整样式表 - 请参阅:minimal reproducible example
  • 你真的需要命名空间吗?如果您拥有架构,我的建议是不要使用。
  • 这将有助于至少向我们提供输入文件以及它为什么会导致您出现问题。从您的 XSLT 来看,您正在尝试映射 MessageType #TestExternalPO(= 没有任何命名空间)?
  • 添加了一些额外的细节

标签: xslt xsd biztalk xml-namespaces


【解决方案1】:

这是您的 xslt 的外观。您想排除命名空间,因此将前缀添加到 exclude-result-prefixes

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                exclude-result-prefixes="ns0"
                xmlns:ns0="http://Test.EDI.TestExternalPO.Schemas">

<xsl:template match="/">
<xsl:apply-templates select="TestExternalPO"/>
</xsl:template>

<xsl:template match="TestExternalPO">
<ns0:TestExternalPO> 
  <Routing>....     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    相关资源
    最近更新 更多