用于使用javascript过滤XML文档的XSLT

时间:2011-10-24 10:32:36

标签: jquery xml xslt filtering

我想使用某种XML过滤,使用javascript w / jQuery。我对xslt还不是很熟悉。我已经看到该文档总是有XML文档和某种样式(XSL)。然后,结果以XHTML呈现。我真的只想获取一些XML,过滤(按节点名称,某些属性等)并生成该xml的(过滤/更小)版本。你认为xslt方法是最简单的吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

  

我真的只想抓取一些XML,过滤(按节点名称,一些   属性等)并生成该xml的(过滤/更小)版本。   你认为xslt方法是最简单的吗?

XSLT是一种专为转换树形结构输入而设计的语言。这就是为什么它可能是实现此类任务的最佳和最简单的原因。

以下是一个示例

<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

我们希望从这个XML文档中生成另一个具有相同结构和元素名称/内容的文档,但只包含原始文档中的num个元素,其值为3的倍数。

以下是完成此操作的转换

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

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="num[not(. mod 3) = 0]"/>
</xsl:stylesheet>

答案 1 :(得分:1)

如果您想处理XML文档并返回另一个XML文档,那么XSLT方法可能是最好的。

如果您只想从XML中提取一些节点并显示它们,那么内置的javascript功能就足够了。

var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;

var lang = xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");