在 .CSV 文件中为 XML 解析创建 XSL
XSL Creation for XML Parsing in .CSV File
使用 XSL 解析的 .CSV 文件中以下提到的 XML 文件的预期结果
样本XML文件
<SCHOLARSHIP>
<SCHOLARSHIP_DTL>
<SCHOLARSHIP_NAME>Sports SCHOLARSHIP</SCHOLARSHIP_NAME>
<ISSUE_DATE>21/12/2019</ISSUE_DATE>
<AMOUNT>40000</AMOUNT>
<STUDENTS>
<STUDENT>
<STUDENT_NAME>Alex</STUDENT_NAME>
<SCHOOL_NAME>Monten</SCHOOL_NAME>
</STUDENT>
<STUDENT>
<STUDENT_NAME>Lena</STUDENT_NAME>
<SCHOOL_NAME>Convent</SCHOOL_NAME>
</STUDENT>
</STUDENTS>
</SCHOLARSHIP_DTL>
</SCHOLARSHIP>
使用 Xsl 解析上述示例数据的 .csv 格式的预期输出
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
Sports SCHOLARSHIP,21/12/2019,40000,Alex,Monten
Sports SCHOLARSHIP,21/12/2019,40000,Lena,Convent
下面提到的 xsl 没有得到多个学生
<xsl:template match="/">
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
<xsl:for-each select="SCHOLARSHIP/SCHOLARSHIP_DTL">
<xsl:value-of select="concat(SCHOLARSHIP_NAME,',',ISSUE_DATE,',',AMOUNT,',',STUDENTS/STUDENT/STUDENT_NAME,',',STUDENTS/STUDENT/SCHOOL_NAME,'
')"/>
不处理带引号的字符串的简单方法是以下 XSLT-1.0 样式表:
<xsl:template match="/">
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
<xsl:for-each select="SCHOLARSHIP/SCHOLARSHIP_DTL">
<xsl:for-each select="STUDENTS/STUDENT">
<xsl:value-of select="concat(../../SCHOLARSHIP_NAME,',',../../ISSUE_DATE,',',../../AMOUNT,',',STUDENT_NAME,',',SCHOOL_NAME,'
')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
它的输出是:
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
Sports SCHOLARSHIP,21/12/2019,40000,Alex,Monten
Sports SCHOLARSHIP,21/12/2019,40000,Lena,Convent
指定为顶级元素(xsl:stylesheet
的子元素)的首选输出方法应该是 "text",如下所示:
<xsl:output method="text" />
使用 XSL 解析的 .CSV 文件中以下提到的 XML 文件的预期结果
样本XML文件
<SCHOLARSHIP>
<SCHOLARSHIP_DTL>
<SCHOLARSHIP_NAME>Sports SCHOLARSHIP</SCHOLARSHIP_NAME>
<ISSUE_DATE>21/12/2019</ISSUE_DATE>
<AMOUNT>40000</AMOUNT>
<STUDENTS>
<STUDENT>
<STUDENT_NAME>Alex</STUDENT_NAME>
<SCHOOL_NAME>Monten</SCHOOL_NAME>
</STUDENT>
<STUDENT>
<STUDENT_NAME>Lena</STUDENT_NAME>
<SCHOOL_NAME>Convent</SCHOOL_NAME>
</STUDENT>
</STUDENTS>
</SCHOLARSHIP_DTL>
</SCHOLARSHIP>
使用 Xsl 解析上述示例数据的 .csv 格式的预期输出
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
Sports SCHOLARSHIP,21/12/2019,40000,Alex,Monten
Sports SCHOLARSHIP,21/12/2019,40000,Lena,Convent
下面提到的 xsl 没有得到多个学生
<xsl:template match="/">
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
<xsl:for-each select="SCHOLARSHIP/SCHOLARSHIP_DTL">
<xsl:value-of select="concat(SCHOLARSHIP_NAME,',',ISSUE_DATE,',',AMOUNT,',',STUDENTS/STUDENT/STUDENT_NAME,',',STUDENTS/STUDENT/SCHOOL_NAME,'
')"/>
不处理带引号的字符串的简单方法是以下 XSLT-1.0 样式表:
<xsl:template match="/">
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
<xsl:for-each select="SCHOLARSHIP/SCHOLARSHIP_DTL">
<xsl:for-each select="STUDENTS/STUDENT">
<xsl:value-of select="concat(../../SCHOLARSHIP_NAME,',',../../ISSUE_DATE,',',../../AMOUNT,',',STUDENT_NAME,',',SCHOOL_NAME,'
')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
它的输出是:
SCHOLARSHIP_NAME,ISSUE_DATE,AMOUNT,STUDENT_NAME,SCHOOL_NAME
Sports SCHOLARSHIP,21/12/2019,40000,Alex,Monten
Sports SCHOLARSHIP,21/12/2019,40000,Lena,Convent
指定为顶级元素(xsl:stylesheet
的子元素)的首选输出方法应该是 "text",如下所示:
<xsl:output method="text" />