Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在xslt之后保留HTML标记_Html_Xml_Parsing_Xslt - Fatal编程技术网

在xslt之后保留HTML标记

在xslt之后保留HTML标记,html,xml,parsing,xslt,Html,Xml,Parsing,Xslt,我有以下xslt解析树 <xsl:template match="div[@class='tr-summaryinfo']"> <ul> <xsl:apply-templates/> </ul> </xsl:template> <xsl:template match="p[@class='tr-summaryitem']"> <li> <xsl:apply-templates

我有以下xslt解析树

<xsl:template match="div[@class='tr-summaryinfo']"> 
    <ul>
  <xsl:apply-templates/>
  </ul>
  </xsl:template>
 <xsl:template match="p[@class='tr-summaryitem']">
   <li>
 <xsl:apply-templates/> 
  </li>
 </xsl:template>
 <xsl:template match="body">
   <div id="storybodycontent">
      <span class="storycontent">
       <xsl:copy-of select="node()"/>
     </span>
   </div>
  </xsl:template>

  • 输入为:

    <html test="http://www.w3.org/1999/xhtml">
    <head>
    <title>US STOCKS-PepsiCo, oil help extend Wall St rally; S&amp;P at 4-month high</title>
    </head>
    <body>
    <div class="tr-summaryinfo">
    <p class="tr-summaryitem">Energy shares jump as oil gains on supply disruptions </p>
    <p class="tr-summaryitem">PepsiCo's best day in 7 yrs on strong Q2</p>
    <p class="tr-summaryitem">Nordstrom down on disappointing forecast</p>
    <p class="tr-summaryitem">S&amp;P 500 Q2 earnings growth seen at 21 pct -TR I/B/E/S</p>
    <p class="tr-summaryitem">Tesla gains on plans to open new plant in Shanghai</p>
    <p class="tr-summaryitem">Indexes up: Dow 0.56 pct, S&amp;P 0.30 pct, Nasdaq 0.14 pct</p>
    </div>
    <p class="tr-advisory">Changes comment, adds details, updates prices</p><p class="tr-by">By Amy Caren Daniel</p><p class="tr-story-p1"><span class="tr-dateline">July 10 (Reuters)</span><span class="tr-dl-sep"> - </span>
    
    
    美股百事可乐、石油助力华尔街延续涨势;标准普尔;P处于4个月高点
    

    随着石油供应中断而上涨,能源股大幅上涨

    百事可乐在强劲的第二季度迎来7年来最好的一天

    诺德斯特罗姆的预测令人失望

    S&;P 500第二季度盈利增长率为21%-TR I/B/E/S

    特斯拉在上海开设新工厂的计划获益

    指数上涨:道指0.56%,标准普尔500指数;P 0.30%,纳斯达克0.14%

    7月10日(路透社)

    修改评论、添加细节、更新价格

    我想保留一些解析后的标记。但我当前的解析返回纯文本

    按预期进行转换后,其余内容将松开以纯文本形式返回的标记

    按原样返回所有标记,但会引发转换


    请提供帮助。**

    由于您需要保留输出中的一些标记,您可以从一个
    身份转换模板开始,该模板将输入复制为输出

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
    </xsl:template>
    
    完整的XSLT如下所示

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" />
        <xsl:strip-space elements="*" />
    
        <xsl:template match="@* | node()">
            <xsl:copy>
                <xsl:apply-templates select="@* | node()" />
            </xsl:copy>
        </xsl:template>
    
        <xsl:template match="body">
            <div id="storybodycontent">
                <span class="storycontent">
                    <xsl:apply-templates />
                </span>
            </div>
        </xsl:template>
    
        <xsl:template match="div[@class='tr-summaryinfo']">
            <ul>
                <xsl:apply-templates />
            </ul>
        </xsl:template>
    
        <xsl:template match="p[@class='tr-summaryitem']">
            <li>
                <xsl:apply-templates />
            </li>
        </xsl:template>
    </xsl:stylesheet>
    
    
    
  • 这将提供所需的输出

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" />
        <xsl:strip-space elements="*" />
    
        <xsl:template match="@* | node()">
            <xsl:copy>
                <xsl:apply-templates select="@* | node()" />
            </xsl:copy>
        </xsl:template>
    
        <xsl:template match="body">
            <div id="storybodycontent">
                <span class="storycontent">
                    <xsl:apply-templates />
                </span>
            </div>
        </xsl:template>
    
        <xsl:template match="div[@class='tr-summaryinfo']">
            <ul>
                <xsl:apply-templates />
            </ul>
        </xsl:template>
    
        <xsl:template match="p[@class='tr-summaryitem']">
            <li>
                <xsl:apply-templates />
            </li>
        </xsl:template>
    </xsl:stylesheet>