这段代码有什么问题(xslt代码)

时间:2010-02-06 12:47:38

标签: xslt

这是我的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代码有什么问题?)

1 个答案:

答案 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>