XML / XSLT ALink Меню в CHM, соединяющее параметры в обратном порядке - PullRequest
1 голос
/ 19 июля 2011

Последние несколько дней я пытался выяснить эту проблему XSLT / XML (это код, который я с удовольствием пытаюсь исправить). Используя XSLT, я беру то, что в тегах XML «видеть», и пытаюсь создать меню ссылки «также» (или связанные файлы) в файле справки Windows с тегами. $ Filename - это глобальная переменная, так что, скажем, это somefile.xml, $ filename будет somefile.xml.

Реальная проблема заключается в том, что я пытаюсь связать файл вместе, чтобы создать ALink. ({$ filename} _SEE_ALSO связывается с node () _ SEE_ALSO}, файлы do связываются ... но переворачиваются. Итак, у вас есть функция X, вы хотите, чтобы она отображала функцию Y в "See Также ". Как правило, вы должны поместить <see>Function Y</see> в файл функции X (так что функция X-> функция Y). Однако в приведенном ниже коде она показывает функцию X в функции Y (функция X <-функция Y) - наоборот, поэтому, когда вы нажимаете на «См. также» функции X, вы получаете пустое всплывающее окно, в то время как в функции Y оно всплывает с «функцией X». </p>

Это теги 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>

Любая / вся помощь очень ценится, это было проклятием моего существования в последние несколько дней.

1 Ответ

0 голосов
/ 20 июля 2011

Я не знаю, поможет ли это кому-нибудь еще, но я придумала решение.Я переключился с 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>
...