我是xslt的新手,让所有chidren节点显示的唯一方法是在xslt的开头为每个节点做一个。但是现在没有孩子的父母失踪了。请注意xml应该是一个扁平的csv并且工作正常,除了跳过父母的地方""节点不存在。
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 :(得分:0)
除了这一部分之外,你的问题很难理解:
让所有chidren节点显示的唯一方法是为每个节点做一个 在xslt的开头。但是现在没有孩子的父母是 丢失。
这根本不是真的。请考虑以下输入:
<强> 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>
应用以下样式表:
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> </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> </xsl:text>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
将导致:
101,101-A
101,101-B
102
103,103-A
即。每个孩子以及每个没有孩子的父母都有一排。