XSLT заменяет HTML в узле - PullRequest
0 голосов
/ 05 июня 2018

Я не знаю, как перевести guiLabel в strong в выводе html Я пытаюсь получить следующий вывод html

:

<p>lorem 1</p>
<p>lorem ipsum <strong>dolore</strong> amet</p>
<p>lorem 3</p>

из следующего xml:

<para>1</para>
<para>lorem ipsum <guiLabel>dolore</guiLabel> amet</para>
<para>3</para>

мой xsl-файл:

<xsl:for-each select="./*">
    <xsl:choose>
        <xsl:when test=". instance of element(para)">
            <p><xsl:value-of select="."/></p>
        </xsl:when>
    </xsl:choose>
</xsl:for-each>

1 Ответ

0 голосов
/ 05 июня 2018

Вместо xsl:for-each вы должны использовать шаблонный подход с xsl:apply-templates, а затем отдельный шаблон для элементов, которые вы хотите изменить.

Попробуйте это XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="para">
    <p>
      <xsl:apply-templates />
    </p>
  </xsl:template>

  <xsl:template match="guiLabel">
    <strong>
      <xsl:apply-templates />
    </strong>
  </xsl:template>  
</xsl:stylesheet>
...