【发布时间】:2018-03-23 08:56:15
【问题描述】:
我对 XSLT 很陌生。我正在尝试使用 XSLT 将 XML 转换为 CSV。我查看了各种可用的在线示例,并尝试自己弄清楚,但是我一直在努力获得所需的结果。任何帮助,将不胜感激。
现在是问题陈述。 我有以下要转换为 CSV 的 XML。这里的问题是我只想从选择节点及其子节点复制数据,而忽略其余节点。
<Employees>
<Employee>
<WorkInfo>
<Skill>Java</Skill>
<Experience>10</Experience>
<PreviousCompany>XYZ</PreviousCompany>
</workInfo>
<PersonalInfo>
<Name>John</Name>
<LastName> Trevor</LastName>
<Age>35</Age>
</PersonalInfo>
</Employee>
</Employees>
我只想打印节点 WorkInfo 及其子节点下的数据,而不打印 PersonalInfo 及其子节点。
我正在使用下面的 xslt
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates select="workInfo"/>
<xsl:apply-templates select="PersonalInfo"/>
</xsl:template>
<xsl:template match="workInfo">
<xsl:copy-of select="."/>
<xsl:if test="not(position()=last())">,</xsl:if>
</xsl:template>
<xsl:template match="PersonalInfo">
</xsl:stylesheet>
但是我没有得到预期的输出,即
Java,10,XYZ
但最终得到一个空结果。请有人能帮我理解我哪里出错了。
谢谢, 零担
【问题讨论】:
-
如果您有
WorkInfo元素,那么您需要匹配并选择该名称而不是workInfo。还有更多问题,例如输出子逗号分隔并确保WorkInfo选择了正确的路径(它不是文档节点的子节点)。