私はある構造のXMLを別の構造に変換する必要があるプロジェクトに取り組んでいます。私は別のノードの中からノードを横断するという問題に立ち往生しました。 私のプロジェクトには多くの要素と属性が含まれているため、サンプルの入出力XMLファイルを作成しました。それらは以下の通りです。XSLを使用して1つのXML構造を別のXML構造に変換する
input.xmlに:
<GENERIC_SYSTEM_PARAMETERS>
<Companies>
<Company ID="10" Name="Cmp_1"/>
<Company ID="20" Name="Cmp_2"/>
<Company ID="30" Name="Cmp_3"/>
</Companies>
<Persons>
<Person id="1">
<Company_ID>10</Company_ID>
<Age>30</Age>
</Person>
<Person id="2">
<Company_ID>10</Company_ID>
<Age>40</Age>
</Person>
<Person id="3">
<Company_ID>20</Company_ID>
<Age>50</Age>
</Person>
</Persons>
</GENERIC_SYSTEM_PARAMETERS>
のOutput.xml:
<Main>
<Companies>
<Company id="10" Name="Cmp_1">
<Employees>
<Employee id="1">
<Age>30</Age>
</Employee>
<Employee id="2">
<Age>40</Age>
</Employee>
</Employees>
</Company>
<Company id="20" Name="Cmp_2">
<Employees>
<Employee id="3">
<Age>50</Age>
</Employee>
</Employees>
</Company>
</Companies>
</Main>
は私にさらに進行するためにいくつかのアイデア/サンプルXSLファイルを教えてください。
ありがとうございます。
<xsl:template match="Company">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<Employees>
<xsl:apply-templates select="../../Persons/Person[Company_ID = current()/@ID]"/>
</Employees>
</xsl:copy>
</xsl:template>
を、必要に応じてソースにPerson
ノードからEmployee
ノードを起動するためのテンプレートを追加します。
ここで 'xsl:key'を使うと便利ですが、問題がある場合は、現在試したコードを投稿してください。ありがとうございました! –
さらに進む方法は、変換したいことを考えてから、XSLTに書き込もうとします。がんばろう! –