在过去的几天里,我一直试图找出这个 XSLT/XML 问题(这是我很高兴尝试修复的代码)。使用 XSLT,我正在获取 XML 标记“see”中的内容,并尝试在 Windows 帮助文件中创建带有标记的“see also”(或相关文件)ALink 菜单。$filename 是一个全局变量,所以假设这是 somefile.xml,$filename 就是 somefile.xml。
实际问题在于我尝试将文件链接在一起以创建 ALink。( {$filename}_SEE_ALSO 链接到 node()_SEE_ALSO},文件确实链接了......但相反。所以假设你有函数 X,你希望它在“另见”中显示函数 Y。通常,你将放入<see>Function Y</see>
函数 X 的文件(所以函数 X-> 函数 Y)。但是,在下面的代码中,它所做的是在函数 Y 中显示函数 X(函数 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>
非常感谢任何/所有帮助,这是过去几天我存在的祸根。