0

作成した XSL ファイルにハイパーリンクを追加する必要があります。このハイパーリンクは、ユーザーのクリック イベントを通じて XML ファイルを開く必要があります。これらのファイル XML は、ローカル ファイル システム上にあり、現在のディレクトリにあります。

XML ドキュメントの一部

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

私のドキュメントのこの部分では、作業ディレクトリに 2 つのファイル XML があります。つまり、'Jdk from Sun.XML' と 'Maven plugin 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」ファイルにリンクします。あなたの助けはとても貴重です。少し早いですがお礼を

4

2 に答える 2

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
  • 適切な形式の URL を作成するために必要なencode-for-uri()( docs ) の使用
于 2013-06-30T12:16:28.550 に答える