无法为XML生成正确的XSD,包含带键的Map,值结构

时间:2018-02-11 09:44:39

标签: xml xslt xsd xslt-1.0

下面是XML.I尝试了在线转换,但没有得到正确的。 对于密钥“地址”,所有字段都生成完美但其他三个字段甚至不生成条目。

<map>
<entry key="address" id="1345365ugj57656">
    <addressline1>addressline1</addressline1>
    <addressline2>addressline2</addressline2>
</entry>
<entry key="userCode">1400004811</entry>
<entry key="coupons"/>
<entry key="assistagent">
    <null/>
</entry>
</map>

获得以下生成的XSD。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="map">
<xs:complexType>
  <xs:sequence>
    <xs:element name="entry" maxOccurs="unbounded" minOccurs="0">
      <xs:complexType mixed="true">
        <xs:sequence>
          <xs:element type="xs:string" name="addressline1" minOccurs="0"/>
          <xs:element type="xs:string" name="addressline2" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute type="xs:string" name="key" use="optional"/>
        <xs:attribute type="xs:string" name="id" use="optional"/>
      </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

请告知如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

你正在努力实现不应该以这种方式完成的事情。基本上,您正在以不同的方式强制设置为同一命名空间(空白)中使用的相同元素(键)。要么为每个“键”使用不同的命名空间,要么使用所有可能类型的键的编译,并将每个元素标记为可选或执行某些继承,例如。 xsi的键:输入“xxx”和xsi的其他键:输入“yyy” - 这可能是你想要的方式......