在全局元素声明中转换局部元素

时间:2015-04-21 22:23:12

标签: xsd

我希望自动化一个方法来替换全局元素声明中的本地元素声明。

像这样:

<xs:schema>
  ...
  <xs:element name="aaa">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="bbb">
           ....content bbb ...
        <xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ccc">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="bbb">
           ....content bbb' ...
        <xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  ...
 <xs:schema>

<xs:schema>
  ...
  <xs:element name="aaa">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="bbb"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ccc">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="bbb"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="bbb">
    <xs:complexType>
      .... Valide for bbb and bbb' ...
    </xs:complexType>
  </xs:element>
  ...
 <xs:schema>

有没有人知道实现此目的的方法或工具? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将ref用于现有的全局元素,然后您可以定义您的元素bbb,例如它对bbb和bbb'案例都有效:

<xs:schema>
  ...
  <xs:element name="aaa">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="bbb"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ccc">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="bbb"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="bbb">
    <xs:complexType>
      .... Valide for bbb and bbb' ...
    </xs:complexType>
  </xs:element>
  ...
 <xs:schema>