XML - > XSL - >带有超链接的项目符号列表

时间:2013-03-21 18:15:05

标签: xml xslt

我真的对这个问题感到头疼。我想创建一个带有XML摘录的超链接的项目符号列表。我可以创建项目符号列表,但我无法弄清楚如何将该部分组合在一起。

这是XML:

<list>
    <listitem>1<hyperlink><url>page1.xml</url><name>Go to Page 1</name></hyperlink></listitem>
    <listitem>2<hyperlink><url>page2.xml</url><name>Go to Page 2</name></hyperlink></listitem>
    <listitem>3<hyperlink><url>page3.xml</url><name>Go to Page 3</name></hyperlink></listitem>
    <listitem>4<hyperlink><url>page4.xml</url><name>Go to Page 4</name></hyperlink></listitem>
</list>

...到目前为止的XSL。超链接组件不起作用。通过尝试使其工作,它可能看起来有点凌乱。我希望“Go to Page n”成为超链接。

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/REC-html40">


<xsl:output method="html" indent="yes"/>

<xsl:template match="list">
    <DIV>
        <UL><xsl:apply-templates /></UL>
    </DIV>
</xsl:template>

<xsl:template match="listitem">
    <DIV>
        <LI><xsl:apply-templates />  </LI>
    </DIV>
</xsl:template>

<xsl:template match="hyperlink">
        <A>
            <xsl:value-of select="hyperlink" />
        </A>
</xsl:template>

<xsl:template match="hyperlink/url">
         HREF='<xsl:value-of select="url" />'  
</xsl:template>

<xsl:template match="hyperlink/name">
         <xsl:apply-templates />
</xsl:template>

目前的结果是:

** 1。 HREF ='page1.xml'转到第1页

  1. HREF ='page2.xml'转到第2页

  2. HREF ='page3.xml'转到第3页

  3. HREF ='page4.xml'转到第4页 **

  4. 我需要的是类似于HTML的HTML:

    <A HREF='page1.xml'>Go to Page 1</A>

    任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

首先,您需要从DIV模板中取出listitem(因为LI需要直接在UL内),您可以简化所有将hyperlink内容归结为一个模板

<xsl:template match="hyperlink">
  <A href="{url}">
    <xsl:value-of select="name"/>
  </A>
</xsl:template>