我是XML的新手,所以希望我的解释会有意义。
我正在使用带有2个HTML文本部分的XSL文件,从文件中设置的2个模板中读取。
第一个文本和关联的模板是一个表,我在其中设置了一个链接。我希望链接指向一个属于第二个HTML文本/模板的图片。
表格中的链接设置为链接,带下划线等。但是点击时它不会去任何地方。
第二部分可以自行处理,例如,图片和文字出现。
但我无法弄清楚如何实际获得链接。我尝试了很多东西但到目前为止还没有任何工作。而且我不确定我是否非常接近并且可能需要改变一行代码。或者我是否需要做一些非常不同的事情。此外,没有错误消息,一切都显示良好,它只是链接本身不起作用。
<xsl:template match="portion">
<tr>
<td valign="top"><xsl:value-of select="food-description"/></td>
<td valign="top"><xsl:value-of select="food-number"/></td>
<!--the following is the link text-->
<td valign="top"><a><xsl:attribute name="href">#<xsl:value-of select="portion- photo/@file"/></xsl:attribute>
<xsl:value-of select="portion-photo/@file"/></a><br/>
</td>
</tr>
</xsl:template>
<xsl:template match="portion-photo">
<!--I know that this is the code that is not correct, however, believe it should be something similar-->
<a><xsl:attribute name="portion-photo"><xsl:value-of select="./@file"/></xsl:attribute></a>
<p><xsl:value-of select="../food-description"/>
<xsl:value-of select="./@file"/></p>
<img>
<xsl:attribute name="src"><xsl:value-of select="./@file"/></xsl:attribute>
<xsl:attribute name="width"><xsl:value-of select="ceiling(./@w div v2)"/></xsl:attribute>
<xsl:attribute name="height"><xsl:value-of select="ceiling(./@h div 2)"/></xsl:attribute>
</img>
</xsl:template>
答案 0 :(得分:1)
以下内容应该有效。只需将缺少的名称属性添加到锚元素:
<xsl:template match="portion">
...
<a href="#{portion-photo/@file}">
<xsl:value-of select="portion-photo/@file"/>
</a>
...
</xsl:template>
<xsl:template match="portion-photo">
<a name="{@file}">
<xsl:value-of select="@file"/>
</a>
</xsl:template>
但是,您必须确保@file
评估为有效的锚名称。如果所有文件属性的值都是唯一的,您还可以使用generate-id()
创建保存ID:
<xsl:template match="portion">
...
<a href="#{generate-id(portion-photo)}">
<xsl:value-of select="portion-photo/@file"/>
</a>
...
</xsl:template>
<xsl:template match="portion-photo">
<a name="{generate-id()}">
<xsl:value-of select="@file"/>
</a>
</xsl:template>