XSLT: цикл for-each дает только первую алинею - PullRequest
0 голосов
/ 06 января 2019

Мне нужно преобразовать XML-файл в HTML-файл, используя XSLT. Сейчас я попробовал все, но это не похоже на работу. Я хочу создать белую линию после каждой алинеи.

XML-код:

<alinea>
Willen wij daadkrachtig het economisch herstel vorm kunnen geven, dan 
is stabiel bestuur gewenst. Intensief wordt sinds de
<organisatie> Tweede Kamer</organisatie>
-verkiezingen van
<datum>9 juni</datum>
gewerkt aan de totstandkoming van een nieuw kabinet. Lopende de 
kabinetsformatie past het huidige kabinet terughoudendheid bij het doen 
van beleidsvoorstellen voor het komende jaar.
</alinea>

и много других тегов.

XSLT код:

<xsl:template match="troonrede">
<xsl:for-each select="troonrede/alinea">
    <xsl:value-of select="troonrede/alinea"/><br/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:template>

Надеюсь, вы мне поможете!

1 Ответ

0 голосов
/ 06 января 2019

Вы не показали элемент troonrede в своем XML, но предполагая, что это родительский элемент alinea, ваш шаблон должен выглядеть следующим образом ...

<xsl:template match="troonrede">
  <xsl:for-each select="alinea">
    <xsl:value-of select="."/>
    <br/>
  </xsl:for-each>
</xsl:template>

Это связано с тем, что в шаблоне, соответствующем troonrede, вы будете расположены на этом элементе, и поэтому ваш xsl:for-each может быть относительно этого текущего узла. Аналогичным образом, в xsl:for-each текущий узел равен alinea, поэтому . получает значение текущего узла. (Выполнение <xsl:value-of select="alinea"/> будет искать дочерний узел того же узла, который не существует.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...