【发布时间】:2020-04-13 14:12:31
【问题描述】:
尝试使用 XSLT 将下面提到的 XML 文件解析为 CSV。下面提到的使用 XSL 解析的 .CSV 文件中的 XML 文件的预期结果
下面提到了示例 XML 文件
<SCHOOLS>
<SCHOOL_DATA>
<SCHOOL>
<SCHOOL_NAME>Convent International</SCHOOL_NAME>
<SCHOOL_ADDRESS>Near x-Street</SCHOOL_ADDRESS>
</SCHOOL>
<STUDENT_DTLS>
<STUDENT>
<STUDENT_NAME>Maria</STUDENT_NAME>
<STUDENT_CLASS>10</STUDENT_CLASS>
</STUDENT>
<STUDENT>
<STUDENT_NAME>John</STUDENT_NAME>
<STUDENT_CLASS>12</STUDENT_CLASS>
</STUDENT>
</STUDENT_DTLS>
<SCHOOL_AWARDS>
<AWARDS>
<AWARD_NAME>A1</AWARD_NAME>
<AWARD_DATE>D1</AWARD_DATE>
</AWARDS>
<AWARDS>
<AWARD_NAME>A2</AWARD_NAME>
<AWARD_DATE>D2</AWARD_DATE>
</AWARDS>
<AWARDS>
<AWARD_NAME>A3</AWARD_NAME>
<AWARD_DATE>D3</AWARD_DATE>
</AWARDS>
<AWARDS>
<AWARD_NAME>A4</AWARD_NAME>
<AWARD_DATE>D4</AWARD_DATE>
</AWARDS>
</SCHOOL_AWARDS>
</SCHOOL_DATA>
</SCHOOLS>
使用 Xsl 解析和上述示例数据在 .csv 中的预期输出
SCHOOL_NAME,SCHOOL_ADDRESS,STUDENT_NAME,STUDENT_CLASS,AWARD_NAME,AWARD_DATE
Convent International,Near x-Street,Maria,10,A1,D1
,,John,12,A2,D2
,,,,A3,D3
,,,,A4,D4
开始解析xml文件
SCHOOL_NAME,SCHOOL_ADDRESS,STUDENT_NAME,STUDENT_CLASS,AWARD_NAME,AWARD_DATE
Convent International,Near x-Street
,,Maria,10
,,John,12
,,,,A1,D1
,,,,A2,D2
,,,,A3,D3
,,,,A4,D4
Xslt 文件
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
SCHOOL_NAME,SCHOOL_ADDRESS,STUDENT_NAME,STUDENT_CLASS,AWARD_NAME,AWARD_DATE
<xsl:for-each select="SCHOOLS/SCHOOL_DATA">
<xsl:for-each select="SCHOOL">
<xsl:value-of select="concat(SCHOOL_NAME,',',SCHOOL_ADDRESS,'
')"/>
</xsl:for-each>
<xsl:for-each select="STUDENT_DTLS/STUDENT">
<xsl:value-of select="concat('',',','',',',STUDENT_NAME,',',STUDENT_CLASS,'
')"/>
</xsl:for-each>
<xsl:for-each select="SCHOOL_AWARDS/AWARDS">
<xsl:value-of
select="concat('',',','',',','',',','',',',AWARD_NAME,',',AWARD_DATE,'
')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
【问题讨论】:
-
您的预期输出将一等奖与一等学生相关联,二等奖与二等学生相关联。我在源 XML 中没有看到这样的关联。请澄清这里需要应用的逻辑。
标签: xml csv xslt xml-parsing xslt-1.0