これは、XSL 変換に関連するものです。入力.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/x/transform.xsl"?>
<!-- input file root node-->
<message>
<header>
<!--Many descendents will be there -->
</header>
<body>
<!-- some other several elements will be there-->
<TaskList>
<TaskItem>
<DataPoint>
<Name>software.prog_name</Name>
<Target>JAVA</Target>
</DataPoint>
<DataPoint>
<Name>software.prog_rev</Name>
<Target>1</Target>
</DataPoint>
<DataPoint>
<Name>software.sw_product_id</Name>
<Target>1000</Target>
</DataPoint>
<DataPoint>
<Name>software.limits_file_name</Name>
<Target>limits.txt</Target>
</DataPoint>
<DataPoint>
<Name>software.limits_file_rev</Name>
<Target>2</Target>
</DataPoint>
<DataPoint>
<Name>hw_exp.class</Name>
<Target>Car</Target>
</DataPoint>
<DataPoint>
<Name>hw_exp.type</Name>
<Target>B</Target>
</DataPoint>
<DataPoint>
<Name>hw_exp.rev</Name>
<Target>32</Target>
</DataPoint>
<DataPoint>
<Name>prompt_id</Name>
<Target>100</Target>
</DataPoint>
</TaskItem>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>1</SubGroup>
<Name>software.prog_name</Name>
<Value>JAVA</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>1</SubGroup>
<Name>software.sw_product_id</Name>
<Value>1000</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>2</SubGroup>
<Name>hw_exp.class</Name>
<Value>Animal</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>2</SubGroup>
<Name>hw_exp.type</Name>
<Value>B</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>3</SubGroup>
<Name>hw_exp.class</Name>
<Value>Flight</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>3</SubGroup>
<Name>hw_exp.type</Name>
<Value>E</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 1</Profile>
<SubGroup>3</SubGroup>
<Name>hw_exp.rev</Name>
<Value>1</Value>
</AutomationParam>
<AutomationParam>
<Profile>Profile 2</Profile>
<SubGroup>1</SubGroup>
<Name>software.sw_product_id</Name>
<Value>1000</Value>
</AutomationParam>
</TaskList>
</body>
</message>
input.xml に XSL 変換を適用すると、生成されるファイルは output.xml output.xml になります (このようになるはずです)。
<?xml version="1.0" encoding="utf-8"?>
<!-- output file root node-->
<text>
<header>
<!--All descendents will/should be copied as it is-->
</header>
<body>
<sub_body>
<!-- All such several elements from input.xml will/should be there-->
<test_profile>
<software>
<prog_name>JAVA</prog_name>
<prog_rev>1</prog_rev>
<sw_product_id>1000</sw_product_id>
<limits_file_name>limits.txt</limits_file_name>
<limits_file_rev>2</limits_file_rev>
</software>
<hw_exp>
<class>Car</class>
<type>B</type>
<rev>32</rev>
</hw_exp>
<prompt_id>100</prompt_id>
</test_profile>
<test_profile>
<software>
<prog_name>JAVA</prog_name>
<sw_product_id>1000</sw_product_id>
</software>
<hw_exp>
<class>Animal</class>
<type>B</type>
</hw_exp>
<hw_exp>
<class>Flight</class>
<type>E</type>
<rev>1</rev>
</hw_exp>
</test_profile>
<test_profile>
<software>
<sw_product_id>1000</sw_product_id>
</software>
</test_profile>
</sub_body>
</body>
誰かがこれを達成するのを手伝ってください。それは大きな助けになるでしょう。XSL 1.0 (2.x + ではない) コードが必要です。
マッピング ルール: a) output.xml の 1 つの< test_profile >レコードは、input.xml の TaskList.TaskItem 全体にマップする必要があります>プロファイル 1 およびプロファイル 2 としての input.xml 内の要素の値 [つまり、プロファイル 1 関連のものはすべて 1 つの異なる<test_profile>に入り、プロファイル 2 関連のものはすべて別の異なる<test_profile>に入る必要があります。c) <header>要素とそのコンテンツ全体 (複数の子孫である可能性があります) をそのままコピーする必要があります。d) <DataPoint>および<AutomationParams>は要素数が固定されていません。これらは 0 [どちらでもない] から無限大 [多数] まで可能です。これは、すべてが動的に実行される必要があることを意味し、さらに 0 から多数のプロファイル [つまり、プロファイル 1、プロファイル 2、プロファイル 3、..ジャック、ジルなど..、] AutomationParams
注: この input.xml ファイルは、データベース内のレコードに基づいて動的に入力されていると考えてください。