Comment obtenir les données du nœud racine dans la boucle enfant dans le codage xsl Pouvez-vous s'il vous plaît nous éclairer sur la façon d'obtenir les données du nœud racine dans ma boucle enfant. Ou y a-t-il une autre façon de le faire que ci-dessous ? apprécier ton aide. Mon XML

<wd:Report_Data xmlns:wd="urn:com.workday.report/INT_Outbound">
    <wd:Report_Entry>
        <wd:Employee_ID>12345</wd:Employee_ID>
        <wd:LastName>Raj</wd:LastName>
        <wd:FirstName>Kiran</wd:FirstName>
        <wd:Dependents>
            <wd:Dependent_ID>D1245</wd:Dependent_ID>
            <wd:Dep_FirstName>Mahi</wd:Dep_FirstName>
            <wd:Spouse_LastName>Raj</wd:Spouse_LastName>
        </wd:Dependents>
        <wd:Dependents>
            <wd:Dependent_ID>D1256</wd:Dependent_ID>
            <wd:Dep_FirstName>Praveen</wd:Dep_FirstName>
            <wd:Spouse_LastName>Raj</wd:Spouse_LastName>
        </wd:Dependents>
        <wd:Benefits>
            <wd:Coverage>EE + Family</wd:Coverage>
        </wd:Benefits>
    </wd:Report_Entry>
</wd:Report_Data>

Mon CODE XSL

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:wd="urn:com.workday.report/INT_Outbound" version="2.0">

    <xsl:output method="text" indent="no"/> 
    <xsl:strip-space elements="*"/>

        <xsl:variable name="NEWLINE" select="'&#xa;'"/>
        <xsl:variable name="COMMA" select="','"/>
        
    <xsl:template match="/">    

    <xsl:for-each select="wd:Report_Data/wd:Report_Entry/wd:Dependents">
    
            <xsl:value-of select="concat(wd:Report_Data/wd:Employee_ID,$COMMA)"/>           
            <xsl:value-of select="concat(wd:Report_Data/wd:LastName,$COMMA)"/>  
            <xsl:value-of select="concat(wd:Report_Data/wd:FirstName,$COMMA)"/>         
            
            <xsl:value-of select="concat(wd:Dependent_ID,$COMMA)"/> 
            <xsl:value-of select="concat(wd:Spouse_LastName,$COMMA)"/>              
            <xsl:value-of select="wd:Dep_FirstName"/>           
            
          <xsl:value-of select="$NEWLINE"/>
    
    </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Sortie actuelle:

,,,D1245,Raj,Mahi
,,,D1256,Raj,Praveen

Résultat attendu:

12345,Raj,Kiran,D1245,Raj,Mahi
12345,Raj,Kiran,D1246,Raj,Praveen
1
Pradeep 3 nov. 2020 à 19:11

1 réponse

Meilleure réponse

Votre contexte est déjà wd:Report_Data/wd:Report_Entry/wd:Dependents, vous devez donc remonter à wd:Report_Entry (avec ..) pour obtenir ces valeurs.

XSLT mis à jour...

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:wd="urn:com.workday.report/INT_Outbound" version="2.0">

    <xsl:output method="text" indent="no"/> 
    <xsl:strip-space elements="*"/>

        <xsl:variable name="NEWLINE" select="'&#xa;'"/>
        <xsl:variable name="COMMA" select="','"/>
        
    <xsl:template match="/">    

    <xsl:for-each select="wd:Report_Data/wd:Report_Entry/wd:Dependents">
    
            <xsl:value-of select="concat(../wd:Employee_ID,$COMMA)"/>           
            <xsl:value-of select="concat(../wd:LastName,$COMMA)"/>  
            <xsl:value-of select="concat(../wd:FirstName,$COMMA)"/>         
            
            <xsl:value-of select="concat(wd:Dependent_ID,$COMMA)"/> 
            <xsl:value-of select="concat(wd:Spouse_LastName,$COMMA)"/>              
            <xsl:value-of select="wd:Dep_FirstName"/>           
            
          <xsl:value-of select="$NEWLINE"/>
    
    </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Violon : http://xsltfiddle.liberty-development.net/6q1SDk2

1
Daniel Haley 3 nov. 2020 à 16:30