Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Xml XSLT,获取最频繁的元素,而不是第一个元素_Xml_Xslt - Fatal编程技术网

Xml XSLT,获取最频繁的元素,而不是第一个元素

Xml XSLT,获取最频繁的元素,而不是第一个元素,xml,xslt,Xml,Xslt,所以我有一个XML文件,我试图找到,对于一些元素,引用中的每个属性,最常见元素的值 现在,我的理解是,下面的代码应该按值计数对值进行排序,然后选择排序节点的第一个元素。这不是出于某种原因。它只选择未排序变量的第一个子/元素值 所以,一定有什么明显的不对劲……但几个小时后,我仍然心碎,因为我可能无法弄清楚这一点 有谁能告诉我正确的方向吗 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:sty

所以我有一个XML文件,我试图找到,对于一些元素,引用中的每个属性,最常见元素的值

现在,我的理解是,下面的代码应该按值计数对值进行排序,然后选择排序节点的第一个元素。这不是出于某种原因。它只选择未排序变量的第一个子/元素值

所以,一定有什么明显的不对劲……但几个小时后,我仍然心碎,因为我可能无法弄清楚这一点

有谁能告诉我正确的方向吗

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
                <h1>bgy summary</h1>
                <h2>jal articles</h2>
                <ul>
                    <li>Number of jal articles</li>
                    <dd>
                        <xsl:value-of select="count(bgy/reference[@refType='jal'])"/>
                    </dd>
                    <li>Most frequent jal</li>
                    <dd>
                        <xsl:for-each select="bgy/reference[@refType='jal']">
                            <xsl:sort select="count(jal)"
                                        data-type="number"
                                        order="descending"/>
                            <xsl:if test="position() = 1">
                                <xsl:value-of select="jal"/>
                            </xsl:if>
                        </xsl:for-each>
                    </dd>
                    <li>Most frequent per</li>
                    <dd>
                        <xsl:for-each select="bgy/reference[@refType='jal']">
                            <xsl:sort select="count(per)"
                                        data-type="number"
                                        order="descending"/>
                            <xsl:if test="position() = 1">
                                <xsl:value-of select="per"/>
                            </xsl:if>
                        </xsl:for-each>
                    </dd>
                </ul>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
我期望的产出:

bgy summary
jal articles

    Number of jal articles
        3
    Most frequent jal
        jal-p
    Most frequent per
        ACM

这听起来像是要按jal对元素进行分组,例如,

我们需要查看XML输入的模式或一个小但有代表性的示例,以判断XPath表达式是否有意义。这对@MartinHonnen有帮助吗?听起来你好像知道什么了。然而,在网上w3schools资源上尝试上述内容进行快速测试,却没有得到回应。意思是有些东西偏离了标准。@Uvar,如果问题的代码是
xsl:stylesheet version=“2.0”
,我肯定会在答案中使用XSLT 2。如果你告诉我你希望w3schools运行XSLT 2代码,很抱歉,但是使用XSLT 2处理器,比如Saxon 9或10,或者Saxon JS 2,或者像xsltransform.net或xsltfiddle.liberty-development.net,来测试和运行XSLT 2。这只是为了说明我在这里的深度有多深。如果您也有耐心介绍XSLT 1解决方案,我将非常感激,但我意识到,如果我的声明和我能够验证的内容不匹配,那么这个问题就不合适了;如果我想在合适的环境下做任何事情,我需要更多的教育。非常感谢你的帮助,马丁!
bgy summary
jal articles

    Number of jal articles
        3
    Most frequent jal
        jal-q
    Most frequent per
        Springer
bgy summary
jal articles

    Number of jal articles
        3
    Most frequent jal
        jal-p
    Most frequent per
        ACM