私はここ数日間、この 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>
これは、過去数日間の私の存在の悩みの種でした。