使用XSLT为内联XML标记设置样式

时间:2015-02-09 00:09:41

标签: html css xml xslt

这是与Style inline text along with nested tags with XSLT类似的问题,但我无法发表评论以澄清问题,因此我将在此详细说明我的具体情况。我基本上有一个XML文档,其结构如下:

<book>
    <chapter>
        <para>This is some text about <place>New York</place></para>
    </chapter>
</book>

我正在使用XSLT从我的XML文件输出XHTML,并且我希望能够在上面的示例中的place标记中放置span标记或内容。目的是让我可以用CSS设置这些文本片段的样式。按照上面引用的示例,我添加了这个:

<xsl:template match="book/chapter/para/place">
    <span class="place">
        <xsl:apply-templates/>
    </span>
</xsl:template>

当我在浏览器中加载XML文档时,我收到错误:&#34;加载样式表时出错:解析XSLT样式表失败。&#34; (在添加此部件之前样式表正在正确加载)

我假设我对如何使用xsl:apply-templates缺乏基本的了解。如果有人能指出我想出这个问题,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

比赛:

<xsl:template match="book/chapter/para/">

将模板应用于place元素的所有,而不是place本身。

select中使用apply-templates代替:

<xsl:template match="/">
  <xsl:apply-templates select="book/chapter/para/place"/>
</xsl:template>
  

如果没有select属性,xsl:apply-templates指令将处理当前节点的所有子节点,包括文本节点。

     

select属性可用于处理由表达式选择的节点,而不是处理所有子节点。 select属性的值是一个表达式。表达式必须求值为节点集。

<强>参考