这是我的xslt代码
<?xml version="1.0" encoding="UTF-8"?>
<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="xslTutorial">
<xsl:apply-templates select="xslTutorial"/>
</xsl:template>
<xsl:template match="xslTutorial">
<p>
SUMMERY:<xsl:value-of select="SECTION/SUMMARY"/>
<br>
<xsl:choose>
<xsl:when test="position()=2">
DATA:<xsl:value-of select="SECTION/DATA"/>
</xsl:when>
</xsl:choose>
</br>
</p>
</xsl:template>
</xsl:stylesheet>
这是xml代码:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="C:\Users\Semsema\Desktop\Day 3-XML\ex2.xslt"?>
<xslTutorial>
<SECTION>
<SUMMARY>I need a pen and some paper</SUMMARY>
<DATA>I need a pen.</DATA>
<DATA>I need some paper.</DATA>
</SECTION>
<SECTION>
<DATA>I need bread.</DATA>
<DATA>I need butter.</DATA>
</SECTION>
</xslTutorial>
我希望输出为:
SUMMARY: I need a pen and some paper
DATA: I need bread.
DATA: I need butter.
我该怎么做? (xslt代码有什么问题?)
答案 0 :(得分:1)
你没有在SECTION上做一个apply-templates,因此任何测试“position()= 2”的尝试都不会给你你想要的东西。
然后,我不确定这是否是您所追求的输出。
<xsl:template match="xslTutorial">
<xsl:apply-templates select="xslTutorial/SECTION"/>
</xsl:template>
<xsl:template match="xslTutorial/SECTION">
<p>
<xsl:if test="SUMMARY">
SUMMERY:<xsl:value-of select="SUMMARY"/>
</xsl:if>
<br/>
<xsl:choose>
<xsl:when test="position()=2">
<xsl:foreach select="DATA">
DATA:<xsl:value-of select="."/>
</xsl:foreach>
</xsl:when>
</xsl:choose>
<br/>
</p>
</xsl:template>