BizTalk - 将命名空间放在属性上?

BizTalk - Putting a namespace on an attribute?

参考这个使用 "json:Array" 的例子:Converting between JSON and XML

我想要 BizTalk 架构来构建这样的 XML 元素:

  <role json:Array='true'>Admin</role>

我尝试向我的项目添加一个名为 FakeJSONArraySchema.xsd 的模式,然后在我的主模式上,我做了一个 "imports"。使用 "imports" 的正常方法是创建 "child record",然后将其更改为 "Data Structure Type"。但是将 "child record" 设置为引用模式的根元素。我只需要一个属性。

在上面的示例中,元素 "role" 需要位于主架构的命名空间中。

如果一切都失败了,我会尝试直接编辑 .XSD。我希望这可以使用 Visual Studio 图形界面来完成。

参见相关问题:Details about the json:Array feature of Newtonsoft.JSON XML to JSON converter

正如 Sprotty 在他的评论中所说,将 Attribute FormDefault 或 Attribute Field Form 设置为 Qualified 以获得属性的命名空间前缀。

设置了 FormDefault 的示例架构。

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://james.newtonking.com/projects/json" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="qualified" targetNamespace="http://james.newtonking.com/projects/json" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Role">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="Array" type="xs:boolean" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

但是它不会生成命名空间前缀 JSON,而只是默认的 NS0。但是,只要它引用正确的命名空间,这应该无关紧要。

<ns0:Root xmlns:ns0="http://james.newtonking.com/projects/json">
  <Role ns0:Array="true">Role_0</Role>
</ns0:Root>