не работает дважды в одном XSL (при создании панели навигации) - PullRequest
0 голосов
/ 13 октября 2018

Мне было поручено превратить слово doc в веб-страницу с помощью XML и XSLT, и я хочу сохранить гибкость слова doc (поместите заголовок в нужное место, текст в нужное место и т. Д.)но сделать его похожим на современный веб-сайт, такой как Confluence или википедия.

Мне удалось воссоздать эту гибкость, разделив документ на <Section>, каждый из которых имеет различные <Element> с, которые можно преобразовать в разные вещи.в зависимости от того, что внутри <Element>, вот так:

                    <xsl:for-each select="Protocol/protocolSection">
                        <section>
                            <xsl:variable name="ProSecID" select="id" />
                            <h1 id="{$ProSecID}">
                                <xsl:value-of select="Headline" />
                            <xsl:for-each select="protocolElement">
                                <div>
                                    <xsl:choose>
                                        <xsl:when text="elementType='blah'>
                                        </when>
                                    </xsl:choose>
                                </div>
                            </xsl:for-each>
                        </section>
                    </xsl:for-each>

Это прекрасно работает, но я сейчас пытаюсь создать выпадающую панель навигации, которая будет иметь список всех заголовков <Section> и ниже.им список всех <elementType> типа <subHealine>.Это не работает, даже когда я пытался поместить тот же тип логики выбора и установить его только для поиска elementType subHeadline.

Я не понимаю, почему он работает в одном месте в теле, но выиграл 'работать в другом.

Вот так выглядит подзаголовок:

<protocolElement>
    <elementType>subHeadline</elementType>
        <subHeadline>
            <id>methodology</id>
            <Text>Methodology</Text>
        </subHeadline>
</protocolElement>

А вот так работает секция в XSL:

<xsl:when test="elementType='subHeadline'">
    <xsl:variable name="subHeadID" select="subHeadline/id" />
    <h3 id="{$subHeadID}">
        <xsl:value-of select="subHeadline/Text" />
    </h3>
</xsl:when>

Что я хочусделать это:

<li>
  <xsl: variable name="sidemenusub" select="subHeadline/id" />
  <a href="#{$sidemenusub}"><xsl:value-of select="subHeadline/Text" /></a>
</li>

Я пытаюсь создать что-то похожее на боковую панель здесь

Справка будет здорово!

...