XSL学习心得-制作图像超链接

本文介绍如何在XML文件中正确地使用XSLT进行图像超链接转换。通过具体实例展示了如何利用<xsl:element>和<xsl:attribute>实现图像与超链接的有效结合。
这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址放到<a>的href属性中去,可是这就是在标签中套标签,是不可以的,查了《Web编程实做教程》,才知道正确的解决方案,现在与大家分享。


此段代码运行需要两张图片:a.gif和b.gif。

my.xml
以下内容为程序代码:

<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="mystyle.xsl"?>
<Books>
<Book ID="a001">
<Name>网络指南</Name>
<Photo>a.gif</Photo>
<Homepage>http://www.a.com</Homepage>
</Book>
<Book ID="a002">
<Name>局域网技术</Name>
<Photo>b.gif</Photo>
<Homepage>http://www.b.com</Homepage>
</Book>
</Books>



mystyle.xsl
以下内容为程序代码:

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Books/Book">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="./Homepage"/>
</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="./Photo"/>
</xsl:attribute>
</xsl:element>
</xsl:element>
<br/>
</xsl:template>
</xsl:stylesheet>



在浏览器上的显示结果:
竖向平列显示两个图片。

说明:
使用超链接,需要借助<xsl:element>和<xsl:attribute>两个标签,基本使用方法就可以参照上边的例子,在深奥一点的,如果你想出来了,记得要和大家分享哟。


长见识,嘿嘿,这个可是真是第一次看见。
{Homepage}
<xsl:value-of select="Homepage"/>
两个在任何时候都是等价的吧?


你上边的代码和我原来的效果有点小差别,我帮你完善一下:
mystyle.xsl
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Books/Book">
<a href="{Homepage}">
<img src="{Photo}"/>
</a>
</xsl:template>
</xsl:stylesheet>
### 使用 XSLT 中的 `<xsl:apply-templates>` 指令 在 XSLT 中,`<xsl:apply-templates>` 是一个核心指令,用于选择 XML 文档中的节点并应用相应的模板规则进行转换。该指令通过匹配 XML 节点与 XSLT 模板中的 `match` 属性来实现数据转换。 #### 1. 基本功能 `<xsl:apply-templates>` 的主要作用是根据当前上下文节点,选择子节点或特定节点,并调用最匹配的模板规则进行处理。如果没有指定 `select` 属性,则默认选择当前节点的所有子节点[^1]。 #### 2. 示例代码 以下是一个简单的 XSLT 示例,展示了如何使用 `<xsl:apply-templates>` 进行模板匹配和数据转换: ```xml <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 匹配根节点 --> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <!-- 应用所有子节点的模板 --> <xsl:apply-templates/> </body> </html> </xsl:template> <!-- 匹配 cd 元素 --> <xsl:template match="cd"> <p> <!-- 应用 title 和 artist 子节点的模板 --> <xsl:apply-templates select="title"/> <xsl:apply-templates select="artist"/> </p> </xsl:template> <!-- 匹配 title 元素 --> <xsl:template match="title"> Title: <span style="color:#ff0000"><xsl:value-of select="."/></span><br /> </xsl:template> <!-- 匹配 artist 元素 --> <xsl:template match="artist"> Artist: <span style="color:#00ff00"><xsl:value-of select="."/></span><br /> </xsl:template> </xsl:stylesheet> ``` #### 3. 关键点解析 - **上下文节点**:`<xsl:apply-templates>` 会更改当前上下文节点,使其移动到由 `select` 属性指定的节点集合[^3]。 - **模板匹配**:XSLT 处理器会根据 `select` 属性选出的节点集合,查找最匹配的模板规则(即具有相应 `match` 属性的 `<xsl:template>`)[^4]。 - **默认行为**:如果没有指定 `select` 属性,则默认选择当前节点的所有子节点。 #### 4. 注意事项 - `<xsl:apply-templates>` 的作用域与上下文节点密切相关,因此需要确保 `select` 属性正确指向目标节点集合[^4]。 - 如果需要对同一节点应用不同的模板规则,可以使用 `mode` 属性区分模板[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值