最近我遇到过一种情况,我应该为每个循环应用一个并使用'and'关键字连接字符串。下面是我的xml文档的一部分。
<?xml version="1.0" encoding="utf-8"?>
<case.ref.no.group>
<case.ref.no>
<prefix>Civil Appeal</prefix>
<number>W-02-887</number>
<year>2008</year>
</case.ref.no>
<case.ref.no>
<prefix>Civil Appeal</prefix>
<number>W-02-888</number>
<year>2008</year>
</case.ref.no>
</case.ref.no.group>
我尝试了下面的xslt。
<xsl:template match="case.ref.no.group">
<xsl:variable name="pre">
<section class="sect2">
<xsl:text disable-output-escaping="yes">Court of Appeal</xsl:text>
</section>
</xsl:variable>
<xsl:variable name="tex">
<xsl:value-of select="./case.ref.no/prefix"/>
</xsl:variable>
<xsl:variable name="iter">
<xsl:value-of select="./case.ref.no/number"/>
<xsl:if test="following::case.ref.no/number">;</xsl:if>
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="./case.ref.no/year"/>
</xsl:variable>
<div class="para">
<xsl:value-of select="concat($pre,' – ',$tex,' Nos. ',$iter,'-',$year)"/>
</div>
</xsl:template>
当我尝试运行它时,它给我以下输出。
上诉法院 - 民事上诉案编号W-02-887 2008
但我希望它如下所示。
上诉法院 - 民事上诉案编号W-02-887-2008和W-02-888-2008
请让我知道如何实现这一目标。我在xslt 1.0中这样做。
由于
答案 0 :(得分:0)
我不太清楚你究竟想要做什么。您提到for-each
但是在您的代码中没有,您提到了单词and
并且您没有使用它: - )
如果我使用以下样式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:apply-templates select="case.ref.no.group" />
</output>
</xsl:template>
<xsl:template match="case.ref.no.group">
<section class="sect2">
<xsl:text>Court of Appeal</xsl:text>
</section>
<xsl:text> - </xsl:text>
<xsl:value-of select="case.ref.no[1]/prefix" />
<xsl:text> Nos. </xsl:text>
<xsl:for-each select="case.ref.no">
<xsl:value-of select="number" />
<xsl:text>-</xsl:text>
<xsl:value-of select="year" />
<xsl:if test="not(position() = last())">
<xsl:text> and </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我得到了这个结果
<?xml version="1.0" encoding="UTF-8"?>
<output xmlns:fo="http://www.w3.org/1999/XSL/Format"><section class="sect2">Court of Appeal</section> - Civil Appeal Nos. W-02-887-2008 and W-02-888-2008</output>
但正如我所说,我不确定我是否理解你的需求。例如,我不确定您是否不需要某种分组(前缀将在每个父<case.ref.no>
下的所有<case.ref.no.group>
中相同?)等。