0

私は XSLT を初めて使用するので、初心者の質問でしたらすみません。

この XML ドキュメント (2 つの private_rates を持つ 1 つの hotel 要素) があるとします。

<hotel>
  <private_rates>
    <private_rate>
      <id>1</id>
    </private_rate>
    <private_rate>
      <id>2</id>
    </private_rate>
  </private_rates>
</hotel>

XSLT を使用して、それぞれ 1 つのプライベート レートを持つ 2 つのホテル要素に変換する方法はありますか?

<hotel>
  <private_rates>
    <private_rate>
      <id>1</id>
    </private_rate>
  </private_rates>
</hotel>
<hotel>
  <private_rates>
    <private_rate>
      <id>2</id>
    </private_rate>
  </private_rates>
</hotel>

そのための XSLT はどのようになりますか? どんな助けでも大歓迎です!ありがとう。

4

2 に答える 2

2

Jollymorphicのソリューションの代替として、私の好みは

<xsl:template match="private_rates">
      <hotel>
         <xsl:copy-of select="."/>
      </hotel>
</xsl:template>
于 2013-03-13T08:17:21.893 に答える
0

合法的な XML ドキュメントには、単一のドキュメント要素が含まれている必要があるため、この一連のホテルは何かの中に入っていると思います。そうは言っても、これはどうですか:

<xsl:template match="hotel">
   <xsl:for-each select="private_rates/private_rate">
      <hotel>
         <private_rates>
            <xsl:copy>
               <xsl:apply-templates />
            </xsl:copy>
         </private_rates>
      </hotel>
   </xsl:for-each>
</xsl:template>

ここでの使用法は、スタイルシートにアイデンティティ テンプレートもあり、他のテンプレート (このようなもの) とは厳密には一致しないソース コンテンツをコピーするapply-templatesことを前提としています。

ちなみに、要素名と属性名ではアンダースコアは嫌われます。

于 2013-03-13T04:15:23.147 に答える