2 つの XML があり、1 つには条件が含まれ、もう 1 つの XML には、条件の評価に基づいて結果の XML に割り当てられる必要があるエラー コードのリストが含まれています。
条件.xml
<Validations>
<Condition-1>UPDATE-IND!=A</Condition-1>
<Condition-2>DUP-OVERRIDE=B</Condition-2>
<Condition-3>TYPE-RECORD!=R</Condition-3>
</Validations>
ErrorList.xml
<ErrorList>
<error>
<errorcode>1</errorcode>
<errordescription>UPDATE INDICATOR.</errordescription>
</error>
<error>
<errorcode>2</errorcode>
<errordescription>SHOULD NOT BE BLANK.</errordescription>
</error>
<error>
<errorcode>3</errorcode>
<errordescription>NOT IN LIST</errordescription>
</error>
<error>
<errorcode>4</errorcode>
<errordescription>PARSE ERROR.</errordescription>
</error>
入力 XML:
<a>
<c>
<UPDATE-IND>A</UPDATE-IND>
<DUP-OVERRIDE>B</DUP-OVERRIDE>
<TYPE-RECORD>R</TYPE-RECORD>
</c>
</a>
XSLT では、結果の xml は次のようになります。
条件 1 が真の場合 (Conditions.xml から) ErrorList.xml からのエラー コードの最初のセットが、結果の xml に表示されます。同様に、満たされたすべての条件について、関連するエラーノードが最終的な xml に表示されます。
このための XSLT の書き方 document() 関数を使用しようとしましたが、すべての条件とエラー コードを同時に反復して最終的な XML を形成する方法がわかりませんでした。
注:変換エンジンとしてSaxon-B XSLT 2.0を使用して、Tibco BWでこれを試しています。
新しいロジック:
2 つの XML を組み合わせる代わりに、条件とエラー コードの両方を含む 1 つの XML を使用しようとしています。
入力 XML は同じままです。
条件 XML:
<ns0:root xmlns:ns0 = "http://www.tibco.com/schemas/Validation.xsd">
<ns0:subElement1 ID = "id">
<ns0:subElement2 ID = "id">
<ns0:subElement3 ID = "id">
<ns0:subElement4 ID = "id">
<ns0:subElement5 cond = "1">
<ns0:conditions>1=1</ns0:conditions>
<ns0:errorcode>001</ns0:errorcode>
</ns0:subElement5>
<ns0:subElement5 cond = "2">
<ns0:conditions>2=2</ns0:conditions>
<ns0:errorcode>002</ns0:errorcode>
</ns0:subElement5>
<ns0:subElement5 cond = "3">
<ns0:conditions>3!=3</ns0:conditions>
<ns0:errorcode>003</ns0:errorcode>
</ns0:subElement5>
</ns0:subElement4>
</ns0:subElement3>
</ns0:subElement2>
</ns0:subElement1>
今、私は条件を取得して評価し、同じxmlから関連するエラーコードを取得しようとしています.
注: conditions.xml は入力パラメーターとして XSLT に渡されます。