この問題について正しい方向に向けていただければ幸いです。各部門を表示するために、組織図のフィルター処理された結果を取得しようとしています。ソース xml のサンプルを以下に示します。私の要件に基づいてそれを行うためのより良い方法があれば、xml ソースを再構築できます。
ソース XML:
<OrgTree>
<employee ID="1">
<Name>John</Name>
<Department>President's Office</Department>
<employee ID="2">
<Name>Ron</Name>
<Department>President's Office</Department>
<employee ID="3">
<Name>Don</Name>
<Department>CEO</Department>
</employee>
</employee>
<employee ID="4">
<Name>Mike</Name>
<Department>Finance</Department>
<employee ID="5">
<Name>Mark</Name>
<Department>Accounting</Department>
<employee ID="6">
<Name>Marni</Name>
<Department>Accounting</Department>
</employee>
</employee>
<employee ID="7">
<Name>Mindy</Name>
<Department>Investments</Department>
</employee>
</employee>
</employee>
</OrgTree>
出力を2つの異なる形式で取得したいと思います。
- 部門でフィルター処理し、その部門と子部門からすべてのノードを取得します (財務ツリーでフィルター処理)。
出力 1:
<OrgTree>
<employee ID="4">
<Name>Mike</Name>
<Department>Finance</Department>
<employee ID="5">
<Name>Mark</Name>
<Department>Accounting</Department>
<employee ID="6">
<Name>Marni</Name>
<Department>Accounting</Department>
</employee>
</employee>
<employee ID="7">
<Name>Mindy</Name>
<Department>Investments</Department>
</employee>
</employee>
</OrgTree>
- 特定の部門で出力をフィルタリングし、その部門のノードのみを取得します
出力 2:
<OrgTree>
<employee ID="5">
<Name>Mark</Name>
<Department>Accounting</Department>
<employee ID="6">
<Name>Marni</Name>
<Department>Accounting</Department>
</employee>
</employee>
</OrgTree>
このXSLT Filter result using XSLT arrayのようなフィルタリングに関する投稿をいくつか見つけましたが、私のxml構造は十分に異なっているため、そのアプローチをうまく機能させることができません。
私はSharePointにいるので、部門のみでフィルタリングするxslを以下に示しますが、xmlには親行が1つしかないため、結果が得られません。私は、rowviewテンプレートでフィルターを実行するさまざまな方法を試しましたが、フィルター処理された結果をrowviewテンプレートに渡し、そこにあるすべてのノードを反復処理する必要はありません。子ノードのさまざまな深さを考えると、これを行う方法に途方に暮れています。
<xsl:for-each select="$Rows[Department = 'CFO']">
<xsl:call-template name="dvt_1.rowview"/>
</xsl:for-each>
ヘルプ、ガイダンスをいただければ幸いです。