我试图使我的xsl文件正确,但出现了一些问题。这是我正在使用的xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<ExportedData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<StartDate>2015-02-02T00:00:00</StartDate>
<EndDate>2015-03-04T23:59:00</EndDate>
<RecordCount>4</RecordCount>
<Client />
<DocumentCount>0</DocumentCount>
</Header>
<Applicants>
<Applicant>
<ApplicantId>2176</ApplicantId>
<ModuleTypeId>1</ModuleTypeId>
<ApplicantInfo>
<Applications>
<Application>
<ApplicationId>6177</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>ManNY</FieldText>
</Field>
</Fields>
</Application>
</Applications>
</ApplicantInfo>
<ApplicantActionDocsInfo />
<ApplicantFormsInfo />
<ApplicantActionsInfo />
</Applicant>
<Applicant>
<ApplicantId>2180</ApplicantId>
<ModuleTypeId>1</ModuleTypeId>
<ApplicantInfo>
<Applications>
<Application>
<ApplicationId>6181</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>Test0701</FieldText>
</Field>
</Fields>
</Application>
</Applications>
</ApplicantInfo>
<ApplicantActionDocsInfo />
<ApplicantFormsInfo />
<ApplicantActionsInfo />
</Applicant>
<Applicant>
<ApplicantId>2193</ApplicantId>
<ModuleTypeId>1</ModuleTypeId>
<ApplicantInfo>
<Applications>
<Application>
<ApplicationId>6160</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>00 Demo</FieldText>
</Field>
</Fields>
</Application>
<Application>
<ApplicationId>6170</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>00 Demo</FieldText>
</Field>
</Fields>
</Application>
<Application>
<ApplicationId>6172</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>00 Demo</FieldText>
</Field>
</Fields>
</Application>
</Applications>
</ApplicantInfo>
<ApplicantActionDocsInfo />
<ApplicantFormsInfo />
<ApplicantActionsInfo />
</Applicant>
<Applicant>
<ApplicantId>2196</ApplicantId>
<ModuleTypeId>1</ModuleTypeId>
<ApplicantInfo>
<Applications>
<Application>
<ApplicationId>6184</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>Test0701</FieldText>
</Field>
</Fields>
</Application>
<Application>
<ApplicationId>6186</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>Test0701</FieldText>
</Field>
</Fields>
</Application>
<Application>
<ApplicationId>6188</ApplicationId>
<Fields>
<Field>
<FieldName>Action Status</FieldName>
<FieldText>Submitted</FieldText>
</Field>
<Field>
<FieldName>BGCheck Result</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Date Hired</FieldName>
<FieldText />
</Field>
<Field>
<FieldName>Location Code</FieldName>
<FieldText>Test0701</FieldText>
</Field>
</Fields>
</Application>
</Applications>
</ApplicantInfo>
<ApplicantActionDocsInfo />
<ApplicantFormsInfo />
<ApplicantActionsInfo />
</Applicant>
</Applicants>
</ExportedData>
如您所见,有4个主要申请人,但每个申请人内的ApplicantInfo中都有子元素。如何格式化多个子元素以使其与4个主要申请人相关联以适合表格?理想情况下,我希望为每个子元素增加一行,但是我对此没有足够的了解。
这是我当前拥有的xsl文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!-- match root - build html elements -->
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="ExportedData">
<xsl:apply-templates/>
</xsl:template>
<!-- Do nothing for the header -->
<xsl:template match="Header"/>
<!-- Build table for applicants -->
<xsl:template match="Applicants">
<h2>Applicants Info</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>ApplicantId</th>
<th>ModuleTypeId</th>
<th>ApplicantInfo</th>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<!-- for each applicant create a table row -->
<xsl:template match="Applicant">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>
<!-- for each Applicant/ApplicantId generate table cell -->
<xsl:template match="ApplicantId">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
<xsl:template match="ModuleTypeId">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
<xsl:template match="ApplicantInfo">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
<xsl:template match="ApplicantActionDocsInfo">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
<xsl:template match="ApplicantFormsInfo">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
<xsl:template match="ApplicantActionsInfo">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
<!-- you probably will want to add more stuff to the table, use templates to do so.-->
<!--<xsl:template match="ModuleTypeId | ApplicantInfo | ApplicantActionDocsInfo | ApplicantFormsInfo | ApplicantActionsInfo"/>-->
</xsl:stylesheet>
再次,它正确显示了4个主要ApplicantId,但是多个子元素未正确显示在表中。如何生成其他行以实现此目的?
更新:
我的输出当前是这样的:http : //i.imgur.com/vfntoV3.png
我希望它是这样的:http : //i.imgur.com/tAD88c1.png
我希望每个ApplicationId都有一行
如果是这样,您不应该为每个申请人创建一行,而是为每个应用程序创建一行。我也看不出为什么需要这样的模板林-几乎是无法管理的。
请尝试:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<h2>Applicants Info</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>ApplicantId</th>
<th>ModuleTypeId</th>
<th>ApplicantInfo</th>
</tr>
<xsl:apply-templates select="ExportedData/Applicants/Applicant/ApplicantInfo/Applications/Application"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="Application">
<tr>
<td>
<xsl:value-of select="ancestor::Applicant/ApplicantId"/>
</td>
<td>
<xsl:value-of select="ancestor::Applicant/ModuleTypeId"/>
</td>
<td>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
应用于输入的结果(呈现):
当然,标签Applicants Info
是用词不当:实际上是Application Info
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句