XSLT Bold无法正常工作

时间:2011-06-09 18:42:54

标签: xml xslt xslt-1.0

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet   
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:fo="http://www.w3.org/1999/XSL/Format" 
type="text/xsl" href="helpxslt.xsl" ?>

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="helpschema.xsd" >


    <line>
   This is a paragraph <b> of text</b> I only want some of it bold.
</line>

所以这是XML

    <xsl:for-each select="page/line">
        <p class="bodytext">
            <xsl:value-of select="."/>
            <xsl:call-template name="Newline"/>
        </p>
    </xsl:for-each>
    <xsl:for-each select="page/line/b">
        <b>
            <xsl:value-of select="."/>          
        </b>
    </xsl:for-each>
</xsl:template>

这是XLST。

为什么它不起作用?它只是粘贴文本两次。 :(

2 个答案:

答案 0 :(得分:1)

<xsl:for-each select="page/line">
    <p class="bodytext">
        <xsl:copy-of select="node()"/>
        <xsl:call-template name="Newline"/>
    </p>
</xsl:for-each>

答案 1 :(得分:1)

xsl:value-of指令提取您选择的原始文本,丢弃所有标记。你想要xsl:copy-of

更具体地说,尝试学习编写这种“XSLT方式”,使用xsl:apply-templates和模板规则进行基于规则的递归下降。与使用xsl:for-each和xsl:choose等准过程结构相比,这是处理混合内容的更合适的方法。