У меня есть XML в следующем формате, который я хочу, чтобы переформатировать:XSLT/Xpath: Выбор предыдущего комментария
<blocks>
<!-- === apples === -->
<block name="block1">
...
</block>
<!-- === bananas === -->
<block name="block2">
...
</block>
<!-- === oranges === -->
<block name="block3">
...
</block>
</blocks>
Моя проблема, я не могу понять, как выбрать комментарии выше каждого блока метки. У меня есть следующий XSL:
<xsl:template match="//blocks">
<xsl:apply-templates select="block" />
</xsl:template>
<xsl:template match="block">
<xsl:apply-templates select="../comment()[following-sibling::block[@name = ./@name]]" />
<xsl:value-of select="./@name" />
</xsl:template>
<xsl:template match="comment()[following-sibling::block]">
<xsl:value-of select="."></xsl:value-of>
</xsl:template>
Вывод, который я пытаюсь для это:
=== яблоки ===
block1
=== бананы ===
block2
=== апельсины ===
block3
но лучшее, что я могу получить это:
=== яблоки ===
=== бананы ===
=== апельсины ===
block1
=== яблоки ===
=== бананы ===
=== апельсины ===
block2
=== яблоки ===
=== бананы ===
=== апельсины ===
block3
I A m, используя PHP, если это имеет значение.
Спасибо, я предпочитаю вашу версию, которая кажется более простой. Прекрасно работает. –