我正在调用模板:
<table>
<xsl:apply-templates select="data/pics/row"/>
</table>
模板是
<xsl:template match="row">
<tr>
<xsl:for-each select="td">
<td border="0">
<a href="{@referencddePage}">
<img src="{pic/@src}" width="{pic/@width}" height="{pic/@height}"/>
</a>
</td>
</xsl:for-each>
</tr>
</xsl:template>
我的XML是:
<?xml version="1.0" encoding="iso-8859-8"?>
<?xml-stylesheet type="text/xsl" href="xslFiles\smallPageBuilder.xsl"?>
<data pageNo="3" referencePage="xxxxxxxxxxxxxxx.xml">
<pics>
<row no="0">
<td col="0">
<pic src="A.jpg" width="150" height="120"></pic>
</td>
</row>
</pics>
</data>
我希望行:a h r e f="{@referencddePage}"
从中获取输入
根,:a h r e f= "{@referencddePage}"...
,但我已经在<td level>
。
答案 0 :(得分:2)
我想要这条线:一条路 f =“{@ referencddePage}”获得 从根输入:a h r e f = “{@referencddePage}”......但我是 已经在
<td level>
如果规则@referencePage
属性始终是top元素的属性,则始终可以按以下方式访问:
/*/@referencePage
因此,在您的代码中,您将拥有:
<a href="{/*/@referencePage}">
我建议不要使用<xsl:for-each>
并仅使用and
`。通过这种方式,生成的XSLT代码更容易理解,将来可以更容易地修改:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="row">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="td">
<td border="0">
<a href="{/*/@referencePage}">
<xsl:apply-templates/>
</a>
</td>
</xsl:template>
<xsl:template match="pic">
<img src="{@src}" width="{@width}" height="{@height}"/>
</xsl:template>
</xsl:stylesheet>
在提供的XML文档上应用此转换时,
<data pageNo="3" referencePage="xxxxxxxxxxxxxxx.xml">
<pics>
<row no="0">
<td col="0">
<pic src="A.jpg" width="150" height="120"></pic>
</td>
</row>
</pics>
</data>
生成所需的输出:
<tr>
<td border="0">
<a href="xxxxxxxxxxxxxxx.xml">
<img src="A.jpg" width="150" height="120"/>
</a>
</td>
</tr>
了解每个模板是如此简单。此外,代码进一步简化。
现在,而不是:
<img src="{pic/@src}" width="{pic/@width}" height="{pic/@height}"/>
我们只有:
<img src="{@src}" width="{@width}" height="{@height}"/>
答案 1 :(得分:0)
使用带有前导斜线“跳转”到文档顶部的XPATH,然后沿着树向下走:
/data/@referencePage
将其应用于样式表:
<xsl:template match="row">
<tr>
<xsl:for-each select="td">
<td border="0">
<a href="{/data/@referencePage}">
<img src="{pic/@src}" width="{pic/@width}" height="{pic/@height}"/>
</a>
</td>
</xsl:for-each>
</tr>
</xsl:template>