使用Jquery/javascript在客户端使用简单XSLT
我有这个:使用Jquery/javascript在客户端使用简单XSLT,javascript,jquery,xslt,jquery-plugins,google-ajax-api,Javascript,Jquery,Xslt,Jquery Plugins,Google Ajax Api,我有这个: <Item name="Alpha"> <Field name="CreationDateTime">2012-04-26</Field> <Field name="Material" readOnly="X"> Congress </Field> </Item> <Item name="Beta"> <Field name="CreationDateTime">2
<Item name="Alpha">
<Field name="CreationDateTime">2012-04-26</Field>
<Field name="Material" readOnly="X"> Congress </Field>
</Item>
<Item name="Beta">
<Field name="CreationDateTime">2012-05-26</Field>
<Field name="Material" readOnly="X"> Democracy </Field>
</Item>
.
.
.
and so on...
2012-04-26
国会
2012-05-26
民主
.
.
.
等等
我想把它转换成这样的格式:
<Item name="Alpha">
<CreationDateTime >2012-04-26</CreationDateTime>
<Material readOnly="X"> Congress </Material>
</Item>
<Item name="Beta">
<CreationDateTime >2012-05-26</CreationDateTime>
<Material readOnly="X"> Democracy </Material>
</Item>
.
.
.
and so on...
2012-04-26
国会
2012-05-26
民主
.
.
.
等等
我需要在客户端完成这项工作(即使用javascript和jQuery)。我可以使用jQuery插件(例如谷歌的AJAXSLT)。问题是——我以前从未做过XSLT(也没有用javascript做过),也不知道该怎么做
问题是——我以前从未做过XSLT(也没有用javascript做过),也不知道该怎么做
XSLT是一种用于将XML文档转换为其他(主要是XML,但也包括HTML、纯文本等)文档的语言。您需要的是一个要处理的输入XML,一个应该应用于输入以获得输出的转换,以及一个XSLT处理器
XSLT处理器可以是一个工具、一个库、框架或操作系统提供的一些功能,或者在本例中(使用JavaScript)是一个浏览器
您已经有了XML输入,因此需要一个处理器和一个转换。不幸的是,处理器是特定于浏览器的(例如Mozilla、IE等),您需要编写代码来测试您正在使用的特定浏览器(就像可以看到的那样)
幸运的是,您不必这样做,因为您提到的像Google AJAXSLT这样的javascript库隐藏了下面的细节,并公开了一个可以跨浏览器使用的统一API。因此,现在您只需要编写一个XSL文件来进行转换
根据您的样本,如果输入为:
<?xml version="1.0" encoding="UTF-8"?>
<Items>
<Item name="Alpha">
<Field name="CreationDateTime">2012-04-26</Field>
<Field name="Material" readOnly="X">Congress</Field>
</Item>
<Item name="Beta">
<Field name="CreationDateTime">2012-05-26</Field>
<Field name="Material" readOnly="X">Democracy</Field>
</Item>
</Items>
2012-04-26
国会
2012-05-26
民主
使用如下XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Items>
<xsl:apply-templates />
</Items>
</xsl:template>
<xsl:template match="Item">
<Item>
<xsl:attribute name="name">
<xsl:value-of select="@name" />
</xsl:attribute>
<xsl:apply-templates />
</Item>
</xsl:template>
<xsl:template match="Field">
<xsl:variable name="fieldName" select="@name" />
<xsl:element name="{$fieldName}">
<xsl:if test="@readOnly">
<xsl:copy-of select="@readOnly" />
</xsl:if>
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
你得到这个:
<?xml version="1.0" encoding="UTF-8"?>
<Items>
<Item name="Alpha">
<CreationDateTime>2012-04-26</CreationDateTime>
<Material readOnly="X">Congress</Material>
</Item>
<Item name="Beta">
<CreationDateTime>2012-05-26</CreationDateTime>
<Material readOnly="X">Democracy</Material>
</Item>
</Items>
2012-04-26
国会
2012-05-26
民主
希望这能让您更快地开始在javascript中使用XSLT
最后,请确保您将精力集中在XSLT1.0上,因为浏览器还不支持XSLT1.0