0

次のような XML があるとします。

<root xmlns="default" xmlns:add="additional">
    <element foo="fromDefault" />
    <add:element foo="fromDefault" add:bar="fromAdditional" />
</root>

私がやりたいことはelement、次のように、重複を避けるために 2 つの定義をマージすることです。

<root xmlns="default" xmlns:add="additional">
    <element foo="fromDefault" add:bar="fromAdditional" />
</root>

しかし、これが可能かどうかさえわかりません。

ルート要素に次のような同様の表記法を使用しているため、実行可能かもしれないと感じています。

<root xmlns:xsi="..."
         xsi:schemaLocation="...">

残念ながら、この問題に関するドキュメント/リファレンス/チュートリアル/何かを見つけることができませんでした。誰かが私がやりたいことが可能かどうか (または不可能か) を明確にし、いくつかのリンクを共有してくれませんか?

前もって感謝します!

4

1 に答える 1

1

私はあなたがこのようなものを探していると思います:

追加.xsd

<xs:schema 
  targetNamespace="additional"
  elementFormDefault="qualified"
  xmlns="additional"
  xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:attribute name="bar" type="xs:string"/>

</xs:schema>

デフォルト.xsd

<xs:schema 
  targetNamespace="default"
  elementFormDefault="qualified"
  xmlns="default"
  xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:add="additional">

  <xs:import namespace="additional" schemaLocation="additional.xsd"/>

  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="element" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:attribute name="foo" type="xs:string"/>
            <xs:attribute ref="add:bar"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

最初のスキーマは「追加」のもの (この例では属性のみ) のみを定義し、2 番目のスキーマはそれをインポートして他のすべてを定義し、必要に応じて追加のものを参照します。

于 2012-10-02T23:22:25.337 に答える