Мне было поручено превратить слово 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>
Я пытаюсь создать что-то похожее на боковую панель здесь
Справка будет здорово!