我有一个包含两个<video>
元素的XML文件。我的变换通过for-each
将这些元素合并为一个<videos>
元素,将结果记录为变量variableA
的值。如何在xslt中使用xsl:sort?
我可以根据原始数据中<v>
元素的值对转换后的内容进行排序吗?
这里是用我的代码 http://xsltransform.net/pNmBxZH/8
输入XML
<test>
<video graph="1" potime="1811">
<sec>
<secid>3812907</secid>
<pick>
<vdsecname>A</vdsecname>
<mediadate>24 Apr 2017, 7:45PM IST</mediadate>
<v>240420171945</v>
</pick>
<pick>
<vdsecname>D</vdsecname>
<mediadate>20 Apr 2017, 4:30PM IST</mediadate>
<v>200420171630</v>
</pick>
<pick>
<vdsecname>E</vdsecname>
<mediadate>20 Apr 2017, 3:30PM IST</mediadate>
<v>200420171530</v>
</pick>
</sec>
</video>
<video graph="1" potime="94">
<sec>
<secid>20970242</secid>
<pick>
<vdsecname>B</vdsecname>
<mediadate>23 Apr 2017, 7:30PM IST</mediadate>
<v>230420171930</v>
</pick>
<pick>
<vdsecname>C</vdsecname>
<mediadate>22 Apr 2017, 5:33PM IST</mediadate>
<v>220420171733</v>
</pick>
</sec>
</video>
</test>
xsl:sort
我想我的变量variableA
。有使用这个值我想我的排序变量v
标签值
预计产量
<videos>
<pick>
<vdsecname>A</vdsecname>
<mediadate>24 Apr 2017, 7:45PM IST</mediadate>
<v>240420171945</v>
</pick>
<pick>
<vdsecname>B</vdsecname>
<mediadate>23 Apr 2017, 7:30PM IST</mediadate>
<v>230420171930</v>
</pick>
<pick>
<vdsecname>C</vdsecname>
<mediadate>22 Apr 2017, 5:33PM IST</mediadate>
<v>220420171733</v>
</pick>
<pick>
<vdsecname>D</vdsecname>
<mediadate>20 Apr 2017, 4:30PM IST</mediadate>
<v>200420171630</v>
</pick>
<pick>
<vdsecname>E</vdsecname>
<mediadate>20 Apr 2017, 3:30PM IST</mediadate>
<v>200420171530</v>
</pick>
</videos>
我想要的<videos>
内所得<pick>
元件以在通过<v>
孩子(其从输入文档复制)降序排序,如图所示。
这里是我当前变换:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<hmtl>
<head>
<title>New Version!</title>
</head>
<xsl:variable name="variableA">
<videos>
<xsl:for-each select="test/video">
<xsl:copy-of select="sec/pick"/>
</xsl:for-each>
</videos>
</xsl:variable>
<xsl:copy-of select="$variableA"/>
</hmtl>
</xsl:template>
</xsl:transform>
这就像不清[你以前的尝试(http://stackoverflow.com/questions/43592138/how-to-assign-value-in-variable-using-xslt)。为什么你需要变量?为什么不简单地对源XML的节点进行排序并将结果直接写入输出? –
您已经提供了XSLT 2.0样式表,但已标记了[xslt-1.0]。你真的打算使用哪个版本的XSLT? –
@JohnBollinger请不要在问题中加上你自己的解释。 –