2013-03-21 42 views
0

我真的用这个抓我的头。我想创建一个带有XML摘录超链接的项目符号列表。我可以创建项目符号列表,但我无法弄清楚如何将部分组合在一起。XML - > XSL - >带有超链接的项目符号列表

这里是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。超链接组件不起作用。它可能看起来有点不整齐,通过我的努力使其工作。我希望“转到第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 **

我需要的是HTML类似于此:

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

任何帮助表示赞赏!

回答

0

首先,你需要采取DIVlistitem模板(因为LI需要直接落得UL内),并且可以简化所有hyperlink东西到一个模板

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