使用XSLT转换内联XML元素

时间:2013-04-14 11:55:33

标签: xml xslt

有谁知道用什么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'变成'span',带有'x'类,我将提供
  3. 每个范围的内容将是相应“b”
  4. 的“c”属性

    我可以迭代我文件中的每个'line',我可以遍历每一行中的每个'b',但是在输出中输出'line'的整个文本内容然后在文本后面附加属性。这是我正在使用的代码。我理解为什么以下代码不能满足我的要求。我只是不知道如何编写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> 
    

1 个答案:

答案 0 :(得分: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>

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