私はグループ化、ソート、および複数の変換の実行に必要なかなり大きい(270mb)XMLファイルを持っています。XSLT 1.0のxsl:keyの値に基づいて出力を変更します。
入力XML:
<!-- language: lang-xml -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<EligibilityRecords xmlns="http://Eligibility_LSDD">
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID></PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>VALLE</PT_LST_NM>
<PT_FRST_NM>FRANKIE</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012017</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012017</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID></DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID></DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP></DP_RELATIONSHIP>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>123456</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>BULLOCK</PT_LST_NM>
<PT_FRST_NM>SANDRA</PT_FRST_NM>
<EN_PLAN_NAME></EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012017</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012017</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID></DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID></DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP></DP_RELATIONSHIP>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>553739837</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>DOE</PT_LST_NM>
<PT_FRST_NM>JANE</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012017</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012017</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID></DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID></DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP></DP_RELATIONSHIP>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>610051908</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>JACKSON</PT_LST_NM>
<PT_FRST_NM>MICHAEL</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012017</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012017</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID>610051908</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110015202761</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Spouse</DP_RELATIONSHIP>
<DP_LST_NM>JACKSON</DP_LST_NM>
<DP_FRST_NM>MELISSA</DP_FRST_NM>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>561859010</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>MCLEOD</PT_LST_NM>
<PT_FRST_NM>CONOR</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID>561859010</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>SC000018241906</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>MCLEOD</DP_LST_NM>
<DP_FRST_NM>DUNCAN</DP_FRST_NM>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>573794953</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>GABRIEL</PT_LST_NM>
<PT_FRST_NM>PETER</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID></DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID></DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP></DP_RELATIONSHIP>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>553739837</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>DOE</PT_LST_NM>
<PT_FRST_NM>JANE</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID>553739837</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110012077673</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Spouse</DP_RELATIONSHIP>
<DP_LST_NM>DOE</DP_LST_NM>
<DP_FRST_NM>JOHN</DP_FRST_NM>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>553739837</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>DOE</PT_LST_NM>
<PT_FRST_NM>JANE</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID>553739837</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110012077680</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>DOE</DP_LST_NM>
<DP_FRST_NM>JIMMY</DP_FRST_NM>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>553739837</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>DOE</PT_LST_NM>
<PT_FRST_NM>JANE</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<DP_PARTICIPANT_FILE_IMP_ID>553739837</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110012077681</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>DOE</DP_LST_NM>
<DP_FRST_NM>JESSICA</DP_FRST_NM>
</Eligibility_Detail_Record>
</EligibilityRecords>
私は、次の要件があります
- ストリップを空白PT_PARTICIPANT_FILE_IMP_IDとEN_PLAN_NAMEノードを持つすべてのEligibility_Detail_Recordsは "健康償還アレンジメント" ではありませんか"健康管理勘定"
- 子Recorである新しいDependent_Recordを作成する
- 「インディアナ」何の扶養家族が見つからない場合は ":読み込み「健康償還アレンジメント」のEN_PLAN_NAMEを持っている各レコードのEN_PLAN_TYPEフィールドを追加しますPT_PARTICIPANT_FILE_IMP_ID
- に一致する各DP_PARTICIPANT_FILE_IMP_IDについてEligibility_Detail_RecordのD IndSpouse」もし配偶者の
- DP_RELATIONSHIPを持ち、唯一の依存 『IndChildを』 IF依存
- のDP_RELATIONSHIPあり、唯一の依存 『』家族の場合、複数の依存
- 読み取る「医療貯蓄口座」のEN_PLAN_NAME備わっている各レコードのEN_HDHP_COVERAGE_LEVELフィールドを追加します。
- を「インディアナ」は、一つ以上の扶養家族が発見された場合は何も扶養家族が
- 「家族」を見つからない場合XML出力期待
:
<!-- language: lang-xml -->
<?xml version="1.0" encoding="UTF-8"?>
<EligibilityRecords xmlns="http://Eligibility_LSDD">
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>553739837</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>DOE</PT_LST_NM>
<PT_FRST_NM>JANE</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_PLAN_TYPE>Family</EN_PLAN_TYPE>
<EN_MBRSHP_EFF_STRT_DT>01012017</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012017</EN_PLAN_YEAR_STRT_DT>
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>553739837</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110012077673</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Spouse</DP_RELATIONSHIP>
<DP_LST_NM>DOE</DP_LST_NM>
<DP_FRST_NM>JOHN</DP_FRST_NM>
</Dependent_Record>
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>553739837</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110012077680</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>DOE</DP_LST_NM>
<DP_FRST_NM>JIMMY</DP_FRST_NM>
</Dependent_Record>
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>553739837</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110012077681</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>DOE</DP_LST_NM>
<DP_FRST_NM>JESSICA</DP_FRST_NM>
</Dependent_Record>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>610051908</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>JACKSON</PT_LST_NM>
<PT_FRST_NM>MICHAEL</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_PLAN_TYPE>IndSpouse</EN_PLAN_TYPE>
<EN_MBRSHP_EFF_STRT_DT>01012017</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012017</EN_PLAN_YEAR_STRT_DT>
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>610051908</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>NC110015202761</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Spouse</DP_RELATIONSHIP>
<DP_LST_NM>JACKSON</DP_LST_NM>
<DP_FRST_NM>MELISSA</DP_FRST_NM>
</Dependent_Record>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>561859010</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>MCLEOD</PT_LST_NM>
<PT_FRST_NM>CONOR</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_PLAN_TYPE>IndChild</EN_PLAN_TYPE>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>561859010</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>SC000018241906</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>MCLEOD</DP_LST_NM>
<DP_FRST_NM>DUNCAN</DP_FRST_NM>
</Dependent_Record>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>573794953</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>GABRIEL</PT_LST_NM>
<PT_FRST_NM>PETER</PT_FRST_NM>
<EN_PLAN_NAME>Health Reimbursement Arrangement</EN_PLAN_NAME>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<EN_PLAN_TYPE>Ind</EN_PLAN_TYPE>
</Eligibility_Detail_Record>
<Eligibility_Detail_Record xmlns="">
<PT_PARTICIPANT_FILE_IMP_ID>561859457</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>BUGLE</PT_LST_NM>
<PT_FRST_NM>MAN</PT_FRST_NM>
<EN_PLAN_NAME>Health Savings Account</EN_PLAN_NAME>
<EN_HDHP_COVERAGE_LEVEL>Family</EN_HDHP_COVERAGE_LEVEL>
<EN_MBRSHP_EFF_STRT_DT>01012016</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT></EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>01012016</EN_PLAN_YEAR_STRT_DT>
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>561859457</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>SC000018241906</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>Dependent</DP_RELATIONSHIP>
<DP_LST_NM>BUGLE</DP_LST_NM>
<DP_FRST_NM>BOY</DP_FRST_NM>
</Dependent_Record>
</Eligibility_Detail_Record>
</EligibilityRecords>
XSLT:
<!-- language: lang-xml -->
<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" exclude-result-prefixes="msxsl var" version="1.0" xmlns:ns0="http://Eligibility_LSDD" xmlns:set="http://exslt.org/sets">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:key name="ParticipantGroup" match="Eligibility_Detail_Record" use="PT_PARTICIPANT_FILE_IMP_ID" />
<xsl:key name="DependentSearch" match="Eligibility_Detail_Record" use="DP_PARTICIPANT_FILE_IMP_ID" />
<xsl:template match="/">
<xsl:apply-templates select="/ns0:EligibilityRecords" />
</xsl:template>
<xsl:template match="/ns0:EligibilityRecords">
<ns0:EligibilityRecords>
<xsl:for-each select="set:distinct(Eligibility_Detail_Record/PT_PARTICIPANT_FILE_IMP_ID)/..">
<xsl:if test="PT_PARTICIPANT_FILE_IMP_ID != '' and (EN_PLAN_NAME = 'Health Reimbursement Arrangement' or EN_PLAN_NAME = 'Health Savings Account')">
<Eligibility_Detail_Record>
<PT_PARTICIPANT_FILE_IMP_ID>
<xsl:value-of select="PT_PARTICIPANT_FILE_IMP_ID/text()" />
</PT_PARTICIPANT_FILE_IMP_ID>
<PT_LST_NM>
<xsl:value-of select="PT_LST_NM/text()" />
</PT_LST_NM>
<PT_FRST_NM>
<xsl:value-of select="PT_FRST_NM/text()" />
</PT_FRST_NM>
<EN_PLAN_NAME>
<xsl:value-of select="EN_PLAN_NAME/text()" />
</EN_PLAN_NAME>
<xsl:choose>
<xsl:when test="EN_PLAN_NAME = 'Health Reimbursement Arrangement'">
<xsl:choose>
<xsl:when test="key('DependentSearch',DP_PARTICIPANT_FILE_IMP_ID) != ''">
<xsl:choose>
<xsl:when test="count(key('DependentSearch',DP_PARTICIPANT_FILE_IMP_ID)) > 1">
<EN_PLAN_TYPE>Family</EN_PLAN_TYPE>
</xsl:when>
<xsl:when test="count(key('DependentSearch',DP_PARTICIPANT_FILE_IMP_ID)) = 1">
<xsl:choose>
<xsl:when test="DP_RELATIONSHIP = 'Spouse'">
<EN_PLAN_TYPE>IndSpouse</EN_PLAN_TYPE>
</xsl:when>
<xsl:otherwise>
<EN_PLAN_TYPE>IndChild</EN_PLAN_TYPE>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<EN_PLAN_TYPE>Ind</EN_PLAN_TYPE>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="EN_PLAN_NAME = 'Health Savings Account'">
<xsl:choose>
<xsl:when test="count(key('DependentSearch',DP_PARTICIPANT_FILE_IMP_ID)) > 0">
<EN_HDHP_COVERAGE_LEVEL>Family</EN_HDHP_COVERAGE_LEVEL>
</xsl:when>
<xsl:otherwise>
<EN_HDHP_COVERAGE_LEVEL>Single</EN_HDHP_COVERAGE_LEVEL>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<EN_MBRSHP_EFF_STRT_DT>
<xsl:value-of select="EN_MBRSHP_EFF_STRT_DT/text()" />
</EN_MBRSHP_EFF_STRT_DT>
<EN_MBRSHP_EFF_END_DT>
<xsl:value-of select="EN_MBRSHP_EFF_END_DT/text()" />
</EN_MBRSHP_EFF_END_DT>
<EN_PLAN_YEAR_STRT_DT>
<xsl:value-of select="EN_PLAN_YEAR_STRT_DT/text()" />
</EN_PLAN_YEAR_STRT_DT>
<xsl:for-each select="key('ParticipantGroup',PT_PARTICIPANT_FILE_IMP_ID)">
<xsl:if test="DP_DEPENDENT_FILE_IMP_ID/text()">
<Dependent_Record>
<DP_PARTICIPANT_FILE_IMP_ID>
<xsl:value-of select="DP_PARTICIPANT_FILE_IMP_ID/text()" />
</DP_PARTICIPANT_FILE_IMP_ID>
<DP_DEPENDENT_FILE_IMP_ID>
<xsl:value-of select="DP_DEPENDENT_FILE_IMP_ID/text()" />
</DP_DEPENDENT_FILE_IMP_ID>
<DP_RELATIONSHIP>
<xsl:value-of select="DP_RELATIONSHIP/text()" />
</DP_RELATIONSHIP>
<DP_LST_NM>
<xsl:value-of select="DP_LST_NM/text()" />
</DP_LST_NM>
<DP_FRST_NM>
<xsl:value-of select="DP_FRST_NM/text()" />
</DP_FRST_NM>
</Dependent_Record>
</xsl:if>
</xsl:for-each>
</Eligibility_Detail_Record>
</xsl:if>
</xsl:for-each>
</ns0:EligibilityRecords>
</xsl:template>
</xsl:stylesheet>
私はXMLでかなり緑ですが、私は、適切な親レコードの下に従属グループを作成するMuenchianのグループ化を使用していますし、その後のための別のキーを作成するためのアイデアを持っていましたDP_PARTICIPANT_FILE_IMP_IDを入力してから、そのキーが何回出現したかをカウントして、何が存在するかを判断してください。EN_PLAN_TYPEまたはEN_HDHP_COVERAGE_LEVEL。
私の要件はすべて満たされており、すべてEN_PLAN_TYPEコードを除いて動作しています。それでもほとんど正常に動作します。
それはまだEN_PLAN_TYPEノードで家族を出力し、特定の親レコードには扶養家族が存在しない場合には、これらの基準が満たされたときに正しくIndSpouse、IndChild、そして家族を出力しますが。
xsl:keyを作成すると、それぞれのキーと値のペアに空の値が設定され、正しくテストされているようですが、明らかに私はそうではないと思います。
私は、このコードをより読みやすく/効率的にする方法について、アドバイスをしています。テンプレートを使用して、xsl:ifを使用するのではなく、結果セットから不要なノードを削除するなど。しかし、私が今直面している大きな懸念は、EN_PLAN_TYPEノードに正しい出力が得られていることです。
私が使用しているエンジンは、実際のBizTalk 2010マッパーであると私は(私はすでにMuenchianグループ化のための使用を作っています)ESXLTへのアクセス権を持っている
TL、DR。 「大きな懸念」がある場合は、それに集中し、サンプルコードをデモンストレーションするために必要なものだけを最小限に抑えてください - [mcve]を参照してください。その他の質問は別途ご相談ください。 –
簡潔に編集されました。おかげで@ michael.hor257k – Ritley572
質問を巻き戻したので、受け入れられた答えは将来の訪問者にとってより意味があります。 –