1

私はここ数日間、この XSLT/XML の問題を解明しようと試みてきました (このコードは喜んで修正しようとしています)。XSLT を使用して、XML タグ「参照」の内容を取得し、タグを使用して Windows ヘルプ ファイルに「参照」(または関連ファイル) ALink メニューを作成しようとしています。$filename はグローバル変数なので、これが somefile.xml だとすると、$filename は somefile.xml になります。

実際の問題は、ファイルをリンクして ALink を作成しようとしたときに発生します。( {$filename}_SEE_ALSO は node()_SEE_ALSO にリンクされます。ファイルリンクされますが、逆になります。つまり、関数 X があるとします。関数 Y を「関連項目」に表示したいとします。通常、関数Xのファイルに入れ<see>Function Y</see>ます(つまり、関数X->関数Y)しかし、以下のコードでは、関数Xを関数Yに表示します(関数X<-関数Y)-逆です。機能 X の「こちらも参照」では空白のポップアップが表示されますが、機能 Y では「機能 X」が表示されます。

XML タグは次のとおりです。

<function>
 <showSeeAlso>
   <see>Tag1</see>
   <see>Tag2</see>
   <see>Tag3</see>
 </showSeeAlso>
</function>

これは XSLT です。

<xsl:template match="showSeeAlso">
 <object id="seeAlso" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="HHCTRL.ocx#Version=4,72,8252,0">
    <param name="Command" value="ALink, MENU"/>
    <param name="Text" value="Text:See Also"/>
    <param name="Font" value="Arial,8pt,,,underline"/>
    <param name="Flags" value="1"/>
    <param name="Item1" value=""/>
    <param name="Item2" value="{$filename}_SEE_ALSO"/>
  </object>

<xsl:apply-templates select="see"/>
</xsl:template>

 <xsl:template match="see">
 <xsl:param name="name" select="."/>
  <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
  <param name="ALink Name" value="{concat(node(),'_SEE_ALSO')}"/>
 </object>

</xsl:template>

これは、過去数日間の私の存在の悩みの種でした。

4

1 に答える 1

0

これが他の誰かを助けるかどうかはわかりませんが、私は解決策を半ば考え出しました。ALinksから関連トピックに切り替えて、コードを修正しました。結果は次のとおりです。

XML:

<showSeeAlso/>
<see>tag1</see> 
<see>tag2</see>
<see>tag3</see>

XSLT:

  <xsl:if test="showSeeAlso">
    <object id="hhctrl" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="hhctrl.ocx#Version=6,1,7600,16385">
    <param name="Command" value="Related Topics, DIALOG"/>
    <param name="Text" value="Text:See Also"/>
    <xsl:apply-templates select="see"/>
   </object>
  </xsl:if>

  <xsl:template match="see">
    <xsl:variable name="tag" select="."/>
     <xsl:variable name="count">
  <xsl:number/>
 </xsl:variable>

 <param name="Item{$count}" value="{$tag};{$tag}.html"/>

 </xsl:template>
于 2011-07-19T23:30:44.370 に答える