【问题标题】:Transform inline XML elements with XSLT使用 XSLT 转换内联 XML 元素
【发布时间】:2013-04-06 14:22:15
【问题描述】:

有谁知道使用什么 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> 

【问题讨论】:

    标签: xml xslt


    【解决方案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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多