1

私は XML にまったく慣れていないので、私の説明が理解できることを願っています..

ファイル内に設定された 2 つのテンプレートから読み取り、HTML テキストの 2 つのセクションを含む XSL ファイルを使用しています。

最初のテキストと関連するテンプレートは表で、その中にリンクを設定しました。リンクが 2 番目の HTML テキスト/テン​​プレートの一部である画像を指すようにします。

テーブル内のリンクは、リンク、下線などで表示されるように設定されています。ただし、クリックしてもどこにも移動しません。

2 番目のセクションは、それ自体で問題なく動作します。たとえば、画像やテキストが表示されます。

しかし、私が理解できないのは、実際にリンクを機能させる方法です。私は多くのことを試しましたが、これまでのところ何もうまくいきませんでした。そして、私が非常に近く、おそらくコード行を変更する必要があるかどうかはわかりません. または、非常に異なることをする必要があるかどうか。また、エラー メッセージは表示されず、すべて正常に表示されます。機能しないのはリンク自体だけです。

 <xsl:template match="portion">
  <tr>
 <td valign="top"><xsl:value-of select="food-description"/></td>
 <td valign="top"><xsl:value-of select="food-number"/></td>
 <!--the following is the link text-->  
 <td valign="top"><a><xsl:attribute name="href">#<xsl:value-of select="portion-     photo/@file"/></xsl:attribute>
 <xsl:value-of select="portion-photo/@file"/></a><br/>
 </td>
 </tr>
 </xsl:template>


 <xsl:template match="portion-photo">
 <!--I know that this is the code that is not correct, however, believe it should      be something similar-->  
 <a><xsl:attribute name="portion-photo"><xsl:value-of select="./@file"/></xsl:attribute></a>  

 <p><xsl:value-of select="../food-description"/>
 <xsl:value-of select="./@file"/></p>

 <img>
   <xsl:attribute name="src"><xsl:value-of select="./@file"/></xsl:attribute>
   <xsl:attribute name="width"><xsl:value-of select="ceiling(./@w div v2)"/></xsl:attribute>
   <xsl:attribute name="height"><xsl:value-of select="ceiling(./@h div 2)"/></xsl:attribute>
  </img>
 </xsl:template>
4

1 に答える 1

1

次のようなものが機能するはずです。欠落しているname属性をアンカー要素に追加するだけです。

<xsl:template match="portion">
  ...
  <a href="#{portion-photo/@file}">
    <xsl:value-of select="portion-photo/@file"/>
  </a>
  ...
</xsl:template>

<xsl:template match="portion-photo">
  <a name="{@file}">
    <xsl:value-of select="@file"/>
  </a>
</xsl:template>

ただし、 が@file有効なアンカー名に評価されることを確認する必要があります。すべてのファイル属性の値が一意である場合は、次の方法で保存 ID を作成することもできますgenerate-id()

<xsl:template match="portion">
  ...
  <a href="#{generate-id(portion-photo)}">
    <xsl:value-of select="portion-photo/@file"/>
  </a>
  ...
</xsl:template>

<xsl:template match="portion-photo">
  <a name="{generate-id()}">
    <xsl:value-of select="@file"/>
  </a>
</xsl:template>
于 2012-05-03T15:16:00.563 に答える