XSLT-преобразование вложенного цикла нескольких дочерних элементов - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в XSLT-преобразовании.Я застрял в цикличном вопросе и мне нужно направление от группы.

Это мой XML:

<OUTPUT>
    <VECTOR ID="6">
        <ELEMENT ID="1">
            <CLASS ID="12345">
                <OWNR_EMP>EMP1</OWNR_EMP>
                <OWNR_EMP_NUM>XXXX</OWNR_EMP_NUM>
            </CLASS>
        </ELEMENT>
        <ELEMENT ID="2">
            <CLASS ID="12345">
                <OWNR_EMP>EMP2</OWNR_EMP>
                <OWNR_EMP_NUM>YYYY</OWNR_EMP_NUM>
            </CLASS>
        </ELEMENT>
    </VECTOR>
    <VECTOR ID="6">
        <ELEMENT ID="1">
            <CLASS ID="54321">
                <EMP_ID>EMP1</EMP_ID>
                <EMP_DTLS>DTLS1</EMP_DTLS>
            </CLASS>
        </ELEMENT>
        <ELEMENT ID="2">
            <CLASS ID="54321">
                <EMP_ID>EMP2</EMP_ID>
                <EMP_DTLS>DTLS2</EMP_DTLS>
            </CLASS>
        </ELEMENT>
    </VECTOR>
</OUTPUT> 

Вот XSLT, который я пробовал:

<xsl:for-each select="/OUTPUT/VECTOR/ELEMENT">

<xsl:variable name="empid_1"  select="CLASS/OWNR_EMP" />

<xsl:for-each select="CLASS">

<xsl:variable name="classid_2"  select="@ID" />

<xsl:if test="string($classid_2) = '12345' ">

<xsl:variable name="empid_2" select="OWNR_EMP" />

<xsl:if test="string($empid_2) = string($empid_1) ">

<EMP>

<OWNR_EMP><xsl:value-of select="OWNR_EMP" /></OWNR_EMP>

<OWNR_EMP_NUM><xsl:value-of select="OWNR_EMP_NUM" /></OWNR_EMP_NUM>

</EMP>

</xsl:if>

</xsl:if>

 <xsl:if test="string($classid_2) = '54321' ">

<xsl:variable name="empid_3" select="EMP_ID" />

<xsl:if test="string($empid_3) = string($empid_1) ">

<EMP_DETAIL>

<EMP_ID><xsl:value-of select="EMP_ID" /></EMP_ID>

<EMP_DTLS><xsl:value-of select="EMP_DTLS" /></EMP_DTLS>

</EMP_DETAIL>

</xsl:if>

</xsl:if>

</xsl:for-each>

</xsl:for-each>

Мой желаемый вывод:

<OUTPUT>
    <EMPLOYEE>
        <EMP>
            <OWNR_EMP>EMP1</OWNR_EMP>
            <OWNR_EMP_NUM>XXXX</OWNR_EMP_NUM>
        </EMP>
        <EMP_DETAIL>
            <EMP_ID>EMP1</EMP_ID>
            <EMP_DTLS>DTLS1</EMP_DTLS>
        </EMP_DETAIL>
    </EMPLOYEE>
    <EMPLOYEE>
        <EMP>
            <OWNR_EMP>EMP2</OWNR_EMP>
            <OWNR_EMP_NUM>YYYY</OWNR_EMP_NUM>
        </EMP>
        <EMP_DETAIL>
            <EMP_ID>EMP2</EMP_ID> 
            <EMP_DTLS>DTLS2</EMP_DTLS>
        </EMP_DETAIL>
    </EMPLOYEE>
</OUTPUT>

VECTOR TAG содержит несколько узлов CLASS «12345» и «54321».

ЭЛЕМЕНТ 1 первого КЛАССА должен совмещаться с ЭЛЕМЕНТОМ 1 второго КЛАССА.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...