【发布时间】:2017-07-07 20:23:52
【问题描述】:
我尝试转换的 XML 如下所示。我无法发布实际文件,因为它包含敏感信息。
<?xml version="1.0" encoding="utf-16"?>
<TimesheetDetails>
<timeAllocations>
<TimeAllocationEntryDetails>
<activity>
<displayText> Value </displayText>
</activity>
</TimeAllocationEntryDetails>
<TimeAllocationEntryDetails>
<activity>
<displayText> Value </displayText>
</activity>
</TimeAllocationEntryDetails>
<TimeAllocationEntryDetails>
<activity>
<displayText> Value </displayText>
</activity>
</TimeAllocationEntryDetails>
<TimeAllocationEntryDetails>
<activity>
<displayText> Value </displayText>
</activity>
</TimeAllocationEntryDetails>
</timeAllocations>
</TimesheetDetais>
这是我编写的一个简单的 XSLT 样式表,用于从子节点中提取数据。它按预期工作,但是它只返回来自 TimesheetEntryDetails 之一的数据
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/TimeSheetDetails">
<xsl:apply-templates select="timeAllocations"/>
</xsl:template>
<xsl:template match="timeAllocations">
<xsl:for-each select="TimeAllocationEntryDetails">
<xsl:for-each select=".">
<DisplayText>
<xsl:value-of select="displayText"/>
</DisplayText>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我的预期输出应该类似于
<DisplayText>
SomeData
</DisplayText>
timeheetAllocations 下的每个 TimeSheetAllocationEntryDetails 节点都有一个。
任何帮助表示赞赏。我是 XSLT 的新手,我感觉我没有正确使用 xsl:for-each 构造。
我得到的输出看起来像(只有一个元素......第一个)
<DisplayText>
SomeData
</DisplayText>
【问题讨论】:
-
没有更多节点而不是“..一些子节点”,很难猜测应该将什么转换为什么......
-
我将添加一些实际的节点名称。