1

有谁知道使用什么 XSLT 将以下内联 XML 元素转换为相应的 HTML?

XML:

<line><b c="foo1" /> bar <b c="foo2" /> bar <b c="foo3" /> bar</line>

HTML:

<p><span class="x">foo1</span> bar <span class="x">foo2</span> bar <span class="x">foo3</span> bar </p>
  1. 'line' 变成 'p'
  2. 每个“b”都变成一个“跨度”,我将提供一个“x”类
  3. 每个 span 的内容将是相应 'b' 的 'c' 属性

我可以遍历文件中的每个“行”,并且可以遍历每行中的每个“b”,但是在输出中输出“行”的整个文本内容,然后将属性附加在文本之后。这是我正在使用的代码。我明白为什么下面的代码不能做我想要的。我只是不知道如何编写 XSLT 来做我想做的事。

<xsl:for-each select=".../line">
  <p>
    <xsl:value-of select="text"/>
    <xsl:for-each select="text/b">
      <span class="x">
        <xsl:value-of select="@c"/>
      </span>
    </xsl:for-each>
  </p>
</xsl:for-each> 
4

1 回答 1

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

<xsl:template match="b[@c]">
  <span class="x">
    <xsl:value-of select="@c"/>
  </span>
</xsl:template>

应该足够了(因为文本节点由内置模板复制)。

于 2013-04-14T12:00:41.430 回答