1

特定の値を含む要素のグループを作成したいと思います。次に、このグループに名前を付けます。最後に、このグループを紹介したいと思います。このようなもの:

<catalog type="expensive">
  <powder>25</powder>
  <cream>110</cream>
</catalog>

<catalog type="normal">
  <powder>5</powder>
  <cream>45</cream>
</catalog>

<person>
  <name>Jim</name>
  <catalog type="expensive">
    <powder>25</powder>
    <cream>110</cream>
  </catalog>
</person>

すべてのperson要素で高価なカタログを繰り返す代わりに、person要素がすでに作成された高価なカタロググループを参照する方法はありますか?

4

1 に答える 1

3

簡単な答えは、あなたがあなたの例ですでにそれをしたということです-typeカタログを一意に識別する場合、あなたは次のようなものを書くことができます:

<person> 
  <name>Jim</name> 
  <catalogRef type="expensive" /> 
</person> 

これで完了です。必要な情報はすべて揃っています。一意でない場合typeは、別の一意の属性を追加して、各カタログを識別できます(通常はid)。

長い答えには、このXMLをどのように処理して使用するかについての詳細が必要になります。XSLTを使用して何らかの方法で変換する場合は、上記のアプローチで問題ありません。次のような方法で各人のカタログにアクセスできます。

<xsl:variable name="catalogType" select="catalogRef/@type" />
<xsl:variable name="catalog" select="/*/catalog[@type=$catalogType]" />

現在のノードがperson要素であり、すべてのカタログ定義がルートのすぐ下の同じXMLにあると想定します。

于 2012-04-17T11:44:17.020 に答える