2

XML では、要素を再利用できますか?

具体的には、私が解決しようとしている問題は次のとおりです。elementとelementtableを含む要素を定義したいと考えています。a s が別の場所で定義された a を参照できるようにしたいと考えています。したがって、同じ に従って を定義する複数のレポートを作成できます。tableSchemadataSourcetabletableSchematabletableSchema

明確にするために、次のことができるようにしたいと思います。

<report name="Report1">
  <page>
    <table>
      <!--reference to tableSchema named "foo"-->
      <dataSource>fooData</dataSource>
    </table>
  </page>
  <page>
    <table> 
      <!--reference to tableSchema named "bar"-->
      <dataSource>barData</dataSource>
    </table>
  </page>
</report>

<report name="Report2">
  <page>
    <table>
      <!--reference to tableSchema named "foo" (same as above!)-->
      <dataSource>anotherFooData</dataSource>
    </table>
  </page>
</report>

および が別tableSchemaの場所 (おそらく同じ XML ドキュメント内) に定義されていますbarfoo

追加するために編集: ここで、tableSchema とは、別の Xml スキーマを意味するものではありません。のフィールドの定義を意味しますtable。たとえば、次のことができるようにしたいと考えています。

<tableSchema name="bar">
    <field>
      <displayName>bar1</displayName>
      <sourceName>bar1Source</sourceName>
      <format>Currency</format>
    </field>
    <field>
      <displayName>bar2</displayName>
      <sourceName>bar2Source</sourceName>
      <format>Text</format>
    </field>
</tableSchema>

<tableSchema name="foo">
    <field>
      <displayName>foo1</displayName>
      <sourceName>foo1Source</sourceName>
      <format>Percent</format>
    </field>
</tableSchema>

次に、上記で、に従ってフォーマットされた 1 つと に従ってフォーマットされたReport12 つの を含むレポートを定義し、に従ってフォーマットされた 1 つを含むレポートを定義し、そのスキーマは と同じです。tabletableSchema footableSchema barReport2tabletableSchema fooReport1

4

4 に答える 4

2

この XML の作成/解析に関するコンテキストは提供しませんでしたが、これを制御できると仮定すると、次のように独自の規則を定義できます。

<tableSchema ref="foo">

次に、パーサーが "foo" の ID を持つ要素を探して、tableSchema 情報を取得します。

于 2009-05-06T17:28:13.747 に答える
0

(私はまだ質問を理解していないかもしれませんが...)tableSchemaのテキスト値を文字通り使用したいと仮定すると、それは実際には処理コード次第です。XMLは、データの単なる表現です。したがって、次のように独自の形式を作成できます。

<tableSchema ref="foo"/>

次に、ツールはドキュメント全体を読み取り、fooとbarの定義を(テーブルに)記憶します。次に、レポートの処理を開始します。Report1を使用する場合、上記のfooへの参照を確認すると、ハッシュテーブルでfooを検索し、それを使用します。そういう意味ですか?

もしそうなら、IDとIDREFタグを使用してこれをもう少しサポートするので、これがあります:

<tableSchema myidref="foo"/>

<tableSchema myid="foo">
    <field>
      <displayName>foo1</displayName>
      <sourceName>foo1Source</sourceName>
      <format>Percent</format>
    </field>
</tableSchema>

次に、(私が思うに)解析ツールがテーブルにデータを入力して検索します。スキーマ/DTDでタイプIDREFおよびIDとしてmyidrefおよびmyidを定義する必要があるため、パーサーはそれらを特別に処理することを認識しています。(myidrefを表示するだけ)のようなもの:

<element name="tableSchema">
  <complexType>
    <xsd:attribute name="myidref" type="xsd:IDREF" use="required"/>
  </complexType>
</element>
于 2009-05-06T21:39:58.200 に答える
0

必要なことを行うには、XSL スタイルシート変換を使用する必要がある場合があります。最終的に、完全で解決された XML になります。

于 2009-05-06T17:23:40.250 に答える