2015-09-13 4 views
0

Я пытаюсь показать главу & стихотворную запись для собственных существительных, найденных в некоторых стихах Библии. Это значительно сократит время по сравнению с редактированием файлов HTML. Вот почему я начал использовать XML в первую очередь.XSLT - петля для каждого дочернего узла (размер изменяемого узла)

У меня есть он до такой степени, что он зациклирует правильное количество раз за вхождение, но я не могу правильно его перечислить XML-данные.

Для элемента DOM из pn_book/pn_chptr/token_occurrence у меня есть элементы стиха & verse_path для создания ссылок на соответствующие файлы веб-страниц.

Вот пример один глава файла данных & Кодекса XSLT для отображения страницы:

<pn_book> 
<pn_chptr> 
    <bookname>2 John </bookname> 
    <chptr>1</chptr> 
    <token_occurrence> 
     <pn_token>Christ</pn_token> 
     <verse_path>2JO1.HTM#3</verse_path> 
     <verse>3</verse> 
     <verse_path>2JO1.HTM#7</verse_path> 
     <verse>7</verse> 
     <verse_path>2JO1.HTM#9</verse_path> 
     <verse>9</verse> 
    </token_occurrence> 

<xsl:for-each select="pn_book/pn_chptr"> 
    <h2><xsl:value-of select="bookname"/> Chapter <xsl:value-of select="chptr"/></h2> 
    <xsl:for-each select="token_occurrence"> 
     <xsl:value-of select="pn_token" /> - <xsl:value-of select="../bookname"/> 
     <xsl:for-each select="verse"> 
      <a href="{verse_path}"><xsl:value-of select="../../chptr" />:<xsl:value-of select="../verse" /></a>; 
     </xsl:for-each><br /> 
    </xsl:for-each> 
</xsl:for-each> 

Результат отображает только первую запись, а не каждого из них. Мне кажется, мне нужен какой-то счетчик, чтобы отобразить правильный элемент массива в стихах() & verse_path().

Я пытаюсь использовать XSLT вместо JavaScript. Любые предложения?

ответ

0

Попробуйте это так?

... 
<xsl:for-each select="verse"> 
    <a href="{preceding-sibling::verse_path[1]}"><xsl:value-of select="../../chptr" />:<xsl:value-of select="." /></a>; 
</xsl:for-each> 
... 

Или, возможно, немного более эффективно:

<xsl:template match="pn_book"> 
    <xsl:for-each select="pn_chptr"> 
     <xsl:variable name="bookname" select="bookname" /> 
     <xsl:variable name="chptr" select="chptr" /> 
     <h2><xsl:value-of select="$bookname"/> Chapter <xsl:value-of select="$chptr"/></h2> 
     <xsl:for-each select="token_occurrence"> 
      <xsl:value-of select="pn_token" /> - <xsl:value-of select="$bookname"/> 
      <xsl:for-each select="verse"> 
       <a href="{preceding-sibling::verse_path[1]}"><xsl:value-of select="$chptr" />:<xsl:value-of select="." /></a>; 
      </xsl:for-each> 
      <br/> 
     </xsl:for-each> 
    </xsl:for-each> 
</xsl:template> 
+0

Я получил ошибку синтаксического анализа, даже после тонкой настройки, что я думал, что будет работать. Я буду очень рад, если мы сможем заставить его работать. Спасибо хоть. –

+0

Он работает с кодом, который вы опубликовали (после закрытия открытых тегов) - см .: http://xsltransform.net/94hvTAn –

Смежные вопросы