xslt 计数相同内容的不同内容 [英] xslt counting different content of the same content

查看:25
本文介绍了xslt 计数相同内容的不同内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

刚开始学习xslt.只是想知道如何计算国际玩家的数量?还有就是国际球员的平均身高?

just started studying xslt.just want to know how would count the number of international based players? Another thing is the average height of he international players?

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="soccer.xslt"?>

    <footballclub>
        <player>
            <based>international</based>
            <height>5.5</height >
            <build>medium</build>
            <age>24</age>
        </player>
        <player>
            <based>local</based>
            <height>5.5</height >
            <build>medium</build>
            <age>24</age>
        </player>
        <player>
            <based>international</based>
            <height>5.5</height >
            <build>medium</build>
            <age>24</age>
        </player>
        <player>
            <based>local</based>
            <height>5.5</height >
            <build>medium</build>
            <age>24</age>
        </player>
    </footballclub>

尝试了以下方法;

count(//football/player/based[not(following::based='international')]) xslt:

count(//football/player/based[not(following::based='international')]) xslt:

<?xml version='1.0' encoding="utf-8"?>
<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" />

<xsl:template match="/">
 <html>
 <head >
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>bombers FC</title>
</head>
<body>
NUMBER OF INTERNATIONAL PLAYERS IS:<xsl:value-of select="count(//football/player/based[not(following::based='international')])"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

结果应该是:国际球员的数量是:2

the results should read : NUMBER OF INTERNATIONAL PLAYERS IS: 2

推荐答案

您的 XPath 需要稍作更改...

Your XPath needs to change a little...

XML 输入(更正为格式正确)

<footballclub>
    <player>
        <based>international</based>
        <height>5.5</height>
        <build>medium</build>
        <age>24</age>
    </player>
    <player>
        <based>local</based>
        <height>5.5</height>
        <build>medium</build>
        <age>24</age>
    </player>
    <player>
        <based>international</based>
        <height>5.5</height>
        <build>medium</build>
        <age>24</age>
    </player>
    <player>
        <based>local</based>
        <height>5.5</height>
        <build>medium</build>
        <age>24</age>
    </player>
</footballclub>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="4.0"/>

    <xsl:template match="/">
        <html>
            <head>
                <title>bombers FC</title>
            </head>
            <body>
                <p>
                    <xsl:text>NUMBER OF INTERNATIONAL PLAYERS IS: </xsl:text>
                    <xsl:value-of select="count(footballclub/player[based='international'])"/>
                </p>
                <p>
                    <xsl:text>AVERAGE HEIGHT OF INTERNATIONAL PLAYERS IS: </xsl:text>
                    <xsl:value-of select="sum(footballclub/player[based='international']/height) div count(footballclub/player[based='international'])"/>
                </p>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

输出

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

      <title>bombers FC</title>
   </head>
   <body>
      <p>NUMBER OF INTERNATIONAL PLAYERS IS: 2</p>
      <p>AVERAGE HEIGHT OF INTERNATIONAL PLAYERS IS: 5.375</p>
   </body>
</html>

这篇关于xslt 计数相同内容的不同内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆