ageCode
以下のxmlから属性を取得しようとしています。xsltを使用し<Adults>3</Adults>
て、ageCode
=10または<Children>0</Children>
`ageCode=8の場合に入力します。サンプルxmlは次のとおりです。
<Root>
<Reservations>
<Reservation>
<Rooms>
<Room>
<Guests>
<Guest ageCode="10" count="3" />
<Guest ageCode="8" count="0" />
</Guests>
</Room>
</Rooms>
</Reservation>
</Reservations>
</Root>
私はそれを次のように変換しようとしています:
<Reservation>
<Rooms>
<Room>
<Adults>3</Adults>
<Children>0</Children>
</Room>
</Rooms>
</Reservation>
次のXSLTを使用しますが、動作させることができません(XSLTはまったく使用していません)。
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:element name="Reservation">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="Root/Reservations/Reservation/Rooms/Room/Guests">
<xsl:for-each select="Guest">
<xsl:if test="@ageCode = '10'">
<xsl:element name="Adults">
<xsl:value-of select="@count"/>
</xsl:element>
</xsl:if>
<xsl:if test="@ageCode = '8'">
<xsl:element name="Children">
<xsl:value-of select="@count"/>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XSLTはどのように機能しますか?これは、テンプレートを適用する上から下に行くという意味ですか?3つのテンプレートが必要だとおっしゃっていたので、それぞれを適用して、新しい変換を行いました。
最初と2番目のテンプレートは実際に何をしますか?最初の適用後にXMLを表示し、次に2番目のXMLを表示する方法はありますか?ここでXSLTを正しく理解していますか?
より深いテンプレートを適用するとはどういう意味ですか?
多くのXSLTを作成する必要がある場合、MapForceのようなツールは役に立ちますか?