这是与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缺乏基本的了解。如果有人能指出我想出这个问题,我将不胜感激。
谢谢!
答案 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属性的值是一个表达式。表达式必须求值为节点集。
<强>参考强>