XSLT-如何将段落的第一个单词显示为BOLD

时间:2011-10-14 05:10:57

标签: html xml xslt

我无法做到这一点。我正在使用XML文件,它将使用XSLT转换为HTML。 示例XML文件就像这样......

<name>ABC</name>
<dob>09-Jan-1973</dob>
..
..
<info>My name is ABC. I am working with XYZ Ltd.

I have an experience of 5 years.

I have been working on Java platform since 5 years.
</info>

info标签包含段落形式的信息。我想要第一个字粗体。 以下是HTML输出,仅用于信息标签..

<b>My</b> name is ABC. I am working with XYZ Ltd.

<b>I</b> have an...

<b>I</b> have been working....

祝你有个愉快的一天 约翰

3 个答案:

答案 0 :(得分:0)

尝试在css中使用Pseudo-Element属性

p:first-letter
{
font-weight: bold;
}

答案 1 :(得分:0)

我会使用子串方法.., 像这样的东西

<xsl:template match="info" mode="parapgrah">
  <b><xsl:value-of select="substring-before(text(), ' ')" /></b><xsl:value-of select="substring-after(text(), ' ')" />
</xsl:template>

ups - 这只会取代第一次出现..你需要为每个'段落'添加一个foreach

答案 2 :(得分:0)

此转换(XSLT 2.0):

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="info">
  <xsl:variable name="vParas" select="tokenize(.,'&#xA;')[normalize-space()]"/>

   <xsl:for-each select="$vParas">
    <xsl:variable name="vHead" select=
        "tokenize(., '[\s.?!,;:\-]+')[.][1]"/>
    <b>
      <xsl:sequence select="$vHead"/>
    </b>
    <xsl:sequence select="substring-after(., $vHead)"/>
    <xsl:sequence select="'&#xA;&#xA;'"/>
     </xsl:for-each>
 </xsl:template>

 <xsl:template match="text()"/>
</xsl:stylesheet>

应用于提供的输入(按摩到格式良好的XML文档中):

<t>
    <name>ABC</name>
    <dob>09-Jan-1973</dob> .. .. 
    <info>My name is ABC.

    I am working with XYZ Ltd.

    I have an experience of 5 years.

    I have been working on Java platform since 5 years. </info>
</t>

生成想要的正确结果

<b>My</b> name is ABC. 

<b>I</b> am working with XYZ Ltd. 

<b>I</b> have an experience of 5 years. 

<b>I</b> have been working on Java platform since 5 years.

这将按预期在浏览器中显示:


我的名称是ABC。

正在与XYZ有限公司合作

有5年的经验。

5年来一直在Java平台上工作。


XSLT 1.0解决方案也是可行的,而且有点复杂。

解释:使用标准XPath 2.0函数 tokenize() 以及标准XPath函数 normalize-space() 和的 substring-after()