2016-05-02 3 views
0

Ich bin neu zu xslt und der einzige Weg, alle chidren Knoten zu zeigen, ist die tun a für jeden am Anfang der xslt. Jetzt fehlen jedoch Eltern ohne Kinder. Bitte beachten Sie, dass die XML-Datei eine flache CSV-Datei sein sollte und gut funktioniert, außer dass Eltern übersprungen werden, deren Knoten nicht vorhanden ist.Die "für jede" Logik auf dem Kindknoten überspringt Elternknoten ohne Kinder

xlst: 
<wd:Report_Data xmlns:wd="urn:com.workday.report/Report"> 
<wd:Report_Entry> 
    <wd:Employee_ID>100099999</wd:Employee_ID> 
    <wd:ADDRESS>Any Street</wd:ADDRESS> 
    <wd:CITY>Any City</wd:CITY> 
    <wd:PTIN>45-9999999</wd:PTIN> 
    <wd:Part_3_-_Employer_provided_self-insured_coverage>1</wd:Part_3_-_Employer_provided_self-insured_coverage> 
    <wd:Part_3_-_Covered_Individuals> 
     <wd:NAME>Jane</wd:NAME> 
     <wd:NAME2>Doe</wd:NAME2> 
     <wd:TIN>999999998</wd:TIN> 
    </wd:Part_3_-_Covered_Individuals> 
    <wd:Part_3_-_Covered_Individuals> 
     <wd:Covered_Individual_Name>Jaelyn Polanco</wd:Covered_Individual_Name> 
     <wd:NAME>Jean</wd:NAME> 
     <wd:NAME2>Doe</wd:NAME2> 
     <wd:TIN>999999999</wd:TIN> 
    </wd:Part_3_-_Covered_Individuals> 
</wd:Report_Entry> 
<wd:Report_Entry> 
    <wd:Employee_ID>100099998</wd:Employee_ID> 
    <wd:ADDRESS>Any Street</wd:ADDRESS> 
    <wd:CITY>Any City</wd:CITY> 
    <wd:PTIN>45-9999999</wd:PTIN> 
    <wd:Part_3_-_Employer_provided_self-insured_coverage>0</wd:Part_3_-_Employer_provided_self-insured_coverage> 
</wd:Report_Entry> 
</wd:Report_Data> 

XSLT:

<xsl:for-each select="wd:Report_Data/wd:Report_Entry/wd:Part_3_-_Covered_Individuals"> 

       <xsl:choose> 
        <xsl:when test="../wd:Part_3_-_Employer_provided_self-insured_coverage !=1 " > 
         <xsl:value-of select="$quote" /><xsl:value-of select="../wd:PTIN"/><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" /> 
        </xsl:when> 
        <xsl:otherwise> 
         <xsl:value-of select="$quote" /><xsl:value-of select="../wd:PTIN"/><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" /> 
        </xsl:otherwise> 
       </xsl:choose> 

    <!-- <xsl:value-of select="$quote" /><xsl:value-of select="../wd:PTIN"/><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" />--> 

       <xsl:choose> 
        <xsl:when test="../wd:EE_SSN=wd:TIN" > 
         <xsl:value-of select="$quote" /> <xsl:text>S</xsl:text><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" /> 
        </xsl:when> 
        <xsl:otherwise> 
          <xsl:value-of select="$quote" /><xsl:text>D</xsl:text><xsl:value-of select="$quote" /><xsl:value-of select="$delimiter" /> 
       </xsl:otherwise> 
+0

Bitte bereinigen Sie Ihre Frage und fügen Sie auch das erwartete Ergebnis hinzu. –

Antwort

0

Ihre Frage ist völlig unverständlich, außer für diesen Teil:

die einzige Möglichkeit, alle chidren Knoten zu erhalten bis zu zeigen, ist die für jeweils ein tun am Anfang der xslt. Allerdings fehlen jetzt Eltern ohne Kinder .

Das stimmt einfach nicht. Betrachten Sie die folgende Eingabe:

XML

<root> 
    <parent> 
     <parent-id>101</parent-id> 
     <child> 
      <child-id>101-A</child-id> 
     </child> 
     <child> 
      <child-id>101-B</child-id> 
     </child> 
    </parent> 
    <parent> 
     <parent-id>102</parent-id> 
    </parent> 
    <parent> 
     <parent-id>103</parent-id> 
     <child> 
      <child-id>103-A</child-id> 
     </child> 
    </parent> 
</root> 

Anwendung des folgenden Sheet:

XSLT 1,0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:template match="parent[not(child)]"> 
    <xsl:value-of select="parent-id"/> 
    <xsl:text>&#10;</xsl:text> 
</xsl:template> 

<xsl:template match="child"> 
    <xsl:value-of select="../parent-id"/> 
    <xsl:text>,</xsl:text> 
    <xsl:value-of select="child-id"/> 
    <xsl:text>&#10;</xsl:text> 
</xsl:template> 

<xsl:template match="text()"/> 

</xsl:stylesheet> 

bewirkt:

101,101-A 
101,101-B 
102 
103,103-A 

eine Zeile für jedes Kind sowie für jedes kinderlose Elternteil.

Verwandte Themen