如何使用XSL更改XML文件的某个部分。

时间:2013-06-13 16:29:22

标签: jquery xml xslt xml-parsing rss

拥有RSS feed xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
        <item>
            <title>news title 1</title>
            <link>http://URL</link>
            <description>
                <div><b>Article_Title:</b> AAAAA</div>
                <div><b>Article_Summary:</b> AAAAAA</div>
                <div><b>Article_Date:</b> 05/08/2013</div>
            </description>
            <author>QWERT</author>
            <pubDate>Mon, 27 May 2013 16:13:50 GMT</pubDate>
            <guid isPermaLink="true">http://URL</guid>
        </item>
        <item>
            <title>news title 2</title>
            <link>http://URL</link>
            <description>
                <div><b>Article_Title:</b>BBB</div>
                <div><b>Article_Summary:</b>BBB</div>
                <div><b>Article_Date:</b> 05/10/2013</div>
            </description>
            <author>ASDF</author>
            <pubDate>Tue, 28 May 2013 09:50:51 GMT</pubDate>
            <guid isPermaLink="true">http://URL</guid>
        </item>
    </channel>
</rss>

此RSS Feed XML文件驻留在服务器上。我正在获取此XML并希望使用XSL对<description>标记进行一些更改。

这一切都应该发生在客户端。所以我想在客户端对原始RSS提要文件进行更改。

是否可以使用XSL更改原始文件。

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用importStylesheet获取.xsl文件以及XSLTProcessor JavaScript API的transformToFragment方法:

function transform()
  {
  var nameOfPage = var value=RegExp("nameOfPage[^&]+").exec(window.location.search)[0].replace(/[^=]+./,"");

  with (new XSLTProcessor)
     {
     setParameter(null, "nameOfPage", nameOfPage);
     importStylesheet("foo.xsl");
     transform.result = transformToFragment(this, document);
     transform.root = transform.result.xml;
     document.getElementById(appendTo).appendChild(transform.root);
     }
  }

其中foo.xsl是这样的:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" version="" indent="yes" standalone="no" media-type="text/html" omit-xml-declaration="no" doctype-system="about:legacy-compat" />

<xsl:template match='//channel'>
 <page>
  <content>
   <module>
    <header layout="simple">
     <layout-items>
      <block class="title">YDN Widget</block>
     </layout-items>
    </header>
   </module>
   <xsl:apply-templates select="item" />
  </content>
 </page>
</xsl:template>

</xsl:stylesheet>

应用XSLT并将转换后的结果附加到您的文档中。

<强>参考