xsl:count()里面的值

时间:2012-11-14 18:56:13

标签: xml xslt

我有关于xsl语法的问题: 这是我的xsl:

<xsl:stylesheet version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:html="http://www.w3.org/Profiles/XHTML-transitional"     exclude-result-prefixes="html">
 <xsl:output method="xml" omit-xml-declaration="yes" indent="no"        encoding="utf-8" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"     doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
  <xsl:param name="objectDoc" />
 <xsl:template match="/">


                <xsl:for-each select="/articolo/foto-group/fg-foto">
                <div class="Image_container">
                      <div class="EM_Story_Image_{position()}"></div>
                </div>
                <div class="Caption"><xsl:value-of select="/articolo/foto-group[position()]/foto-dida"/></div>
                </xsl:for-each>

    </xsl:template>

</xsl:stylesheet>

这是我的xml:

<articolo>
    <foto-group id="U50253517593AED">
        <fg-foto id="kYjG"/>
        <foto-dida class="dida" id="kSo">
            <p>Heloooooooooooo </p>
        </foto-dida>
    </foto-group>
    <foto-group id="U50253517593c0E">
        <fg-foto id="kNTF"/>
    </foto-group>
    <foto-group id="U50253517593h4B">
        <fg-foto id="kRtH"/>
    </foto-group>
</articolo>

我拥有的是这个xml:

<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<div class="Image_container">
    <div class="EM_Story_Image_1"/></div>
<div class="Caption">Heloooooooo</div>
<div class="Image_container">
    <div class="EM_Story_Image_2"/></div>
<div class="Caption">Heloooooooo </div>
<div class="Image_container">
    <div class="EM_Story_Image_3"/></div>
<div class="Caption">Heloooooooo </div>

但我期待的是:

<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<div class="Image_container">
    <div class="EM_Story_Image_1"/></div>
<div class="Caption">Heloooooooo</div>
<div class="Image_container">
    <div class="EM_Story_Image_2"/></div>
<div class="Caption"> </div>
<div class="Image_container">
    <div class="EM_Story_Image_3"/></div>
<div class="Caption"> </div>

所以基本上没有正常工作的指令就是这个:

<xsl:value-of select="/articolo/foto-group[position()]/foto-dida"/>

因为它与

一起使用而不是postion我会期待一个数字(1,2,3)
<div class="EM_Story_Image_{position()}"></div>

相反,我总是获得节点一个“Helooooooo”的结果,好像没有索引。 我可以看到我想念{}周围的位置()但是如果我添加它们我得到这个xsl错误: 无效的XPath表达式 意外的标记 - “{position()}] / foto-dida” 选择= “/ DOC / articolo /照片组[{位置()}] /照片-迪达”

有谁知道我想念的或者我应该改变什么?非常感谢

3 个答案:

答案 0 :(得分:3)

没有理由在您的选择中以root身份开始。上下文已经fg-foto,因此只需获取其父级的foto-dida子级。您应该将xsl:value-of更改为:

<xsl:value-of select="../foto-dida/p"/>

答案 1 :(得分:2)

在评估<xsl:value-of>时,当前上下文节点是fg-foto元素,所以

<xsl:value-of select="../foto-dida" />

应该为您提供兄弟foto-dida元素的字符串值。

答案 2 :(得分:1)

而不是

 <xsl:value-of select="/articolo/foto-group[position()]/foto-dida"/>

试试这个

<xsl:value-of select="current()/foto-dida"/>