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

Convert local element in global element declaration

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

像这样:

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

有谁知道实现此目的的方法或工具吗? 感谢您的帮助。

您可以将 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>