1

xml ファイル:

<faculty>
<student name="a a" group="5">
    <subject date="2013-02-01" name="science">124</subject>
</student>

<student name="q q" group="9">
    <subject date="2013-02-01" name="my">124</subject>
</student>

<student name="z z" group="2">
</student>

<student name="v v" group="9">
    <subject date="2013-02-01" name="tro">tro</subject>
</student>
</faculty>

必要性: 科目が 2 つ以下の項目の数を数える方法。

これらすべての項目と被験者の数を表示する方法は知っていますが、被験者の総数を数える方法はわかりません。

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

<xsl:key name="name" match="subject" use="@name" />

<xsl:template match="subject">
    <xsl:if test="count(key('name', @name)) &lt; 2">
        subject: <xsl:value-of select="@name" />
        count: <xsl:value-of select="count(key('name', @name))" />
    </xsl:if>
</xsl:template>

前もって感謝します

4

3 に答える 3

2

以下は、要素の子studentが 2 つ未満の要素に一致します。subject

student[count(subject) &lt; 2]

subjectドキュメント内の要素の総数が必要な場合は、次を使用します。

count(/faculty/student/subject)

要素@nameからの個別の値のリストの数が必要な場合:subject

count(/faculty/student/subject[generate-id()=generate-id(key('name', @name)[1])])
于 2013-06-05T01:06:11.777 に答える
0

subject一度だけ発生する要素を表示する必要がある場合は、次のand count(key('subject-name', @name)) = 1部分に注意してください。

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:key name="subject-name" match="subject" use="@name" />
    <xsl:template match="faculty">
        <xsl:for-each select=".//subject[count(. | key('subject-name', @name)[1]) = 1 and count(key('subject-name', @name)) = 1]">
            <xsl:sort select="@name" />
            <xsl:value-of select="@name" />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
于 2013-06-05T01:19:04.787 に答える