使用XSLT创建超链接,在文件系统上打开xml文件

时间:2013-06-30 12:02:10

标签: xml xslt hyperlink

我需要添加我写的XSL文件的超链接。此超链接必须通过用户单击事件打开XML文件。这些文件XML在我的本地文件系统上进入我当前的目录。

XML文档的一部分

<Document>
<racine> <label>Jdk from Sun</label> </racine>
<racine> <label>Maven plugin Eclipse</label>  </racine>
</Document>

对于本文档的这一部分,工作目录中有两个XML文件,即“来自Sun.XML的Jdk”和“Maven插件Eclipse”

我写的XSL的一部分

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" cdata-section-elements="Cdata" indent="yes"/>
<xsl:template match = "/">

<html> 
  <head/>
  <Body>
   <xsl:for-each select="Document/racine">
   <html><a href="<H3><xsl:value-of select="label"/></H3>"</a></html>
   </xsl:for-each>
  </Body>
<html>

我的表达

<html><a href="<H3><xsl:value-of select="label"/></H3>"</a></html>

是胡说八道,我知道,但我不知道如何采取最佳行动。为了更精确,我使用href属性将本地文件系统链接到“来自Sun.xml的Jdk”和“来自Sun.xml的Jdk”文件。 你的帮助非常宝贵。 提前谢谢

2 个答案:

答案 0 :(得分:1)

我找到了一个关于我的问题的解决方案。我与那些能够满足这一要求的人分享。

对于以下XML文件

<Document>
 <racine> <label>Jdk from Sun</label> </racine>
 <racine> <label>Maven plugin Eclipse</label>  </racine>
</Document>

和XSL的这部分

<xsl:element name="a">
  <xsl:attribute name="href"><xsl:value-of select="label" />
  <xsl:text>.xml</xsl:text>       
  </xsl:attribute>
  <xsl:value-of select="label" />
</xsl:element>

在上面的屏幕截图中查看输出。enter image description here

全部谢谢

答案 1 :(得分:0)

我不确定<a href="<H3>...</H3>"></a>应该是什么意思,所以我假设你想要这样的东西:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="Document">
    <html> 
      <head/>
      <body>
        <xsl:apply-templates select="racine" />
      </body>
    </html>
  </xsl:template>

  <xsl:template match="racine">
    <h3>
      <a href="{encode-for-uri(label)}"><xsl:value-of select="label" /></a>
    </h3>
  </xsl:template>
</xsl:stylsheet>

注意

  • 使用模板匹配(<xsl:apply-templates> / <xsl:template>)而不是<xsl:for-each>
  • 使用属性值模板(花括号)填充href属性
  • 必要时使用encode-for-uri()docs)来创建格式正确的网址