私はXSLTの新機能であり、教授が毎年持っていた出版物数のCSVを作成しようとしています。各エントリは dm:INTELLCONT
dm:DTY_PUB
と表示されています。私が年をハードコーディングしないと、これを正しく行う方法を考え出すのに問題があります。私は何かを出版した毎年毎回ループでこれをやりたいのです。私の現在のXMLファイルには、次のとおりです。変数/未知の値を数えるXSLT
<?xml version="1.0" encoding="UTF-8"?>
<Data xmlns="http://www.digitalmeasures.com/schema/data" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata" dmd:date="2017-10-16">
<INTELLCONT id="151370213376" dmd:originalSource="MANAGE_DATA" dmd:lastModified="2017-10-03T11:41:47" dmd:startDate="2016-04-15" dmd:endDate="2016-04-15">
<REFEREED>Yes</REFEREED>
<CONTYPE>Abstract</CONTYPE>
<CONTYPEOTHER/>
<STATUS>Published</STATUS>
<TITLE>Sample Title</TITLE>
<TITLE_SECONDARY/>
<DTM_PUB>April (2nd Quarter/Spring)</DTM_PUB>
<DTD_PUB>15</DTD_PUB>
<DTY_PUB>2016</DTY_PUB>
<PUB_START>2016-04-15</PUB_START>
<PUB_END>2016-04-15</PUB_END>
<USER_REFERENCE_CREATOR>Yes</USER_REFERENCE_CREATOR>
</INTELLCONT>
<INTELLCONT id="151368284160" dmd:originalSource="MANAGE_DATA" dmd:lastModified="2017-10-03T10:44:48" dmd:startDate="2017-01-01" dmd:endDate="2017-12-31">
<REFEREED>Yes</REFEREED>
<CONTYPE>Journal Article</CONTYPE>
<CONTYPEOTHER/>
<STATUS>Published</STATUS>
<TITLE>Sample Title</TITLE>
<TITLE_SECONDARY/>
<INTELLCONT_AUTH id="151368284163">
<FACULTY_NAME/>
<FNAME>FN</FNAME>
<MNAME/>
<LNAME>LN</LNAME>
<INSTITUTION/>
<ROLE>Author</ROLE>
<STUDENT_LEVEL/>
</INTELLCONT_AUTH>
<INTELLCONT_AUTH id="151368284161">
<FACULTY_NAME>1898739</FACULTY_NAME>
<FNAME>FN</FNAME>
<MNAME>MN</MNAME>
<LNAME>LN</LNAME>
<INSTITUTION/>
<ROLE>Author</ROLE>
<STUDENT_LEVEL/>
</INTELLCONT_AUTH>
<PUBLISHER>Public Health</PUBLISHER>
<PUBCTYST/>
<PUBCNTRY/>
<VOLUME>14</VOLUME>
<ISSUE>3</ISSUE>
<PAGENUM>265</PAGENUM>
<DTY_PUB>2017</DTY_PUB>
<PUB_START>2017-01-01</PUB_START>
<PUB_END>2017-12-31</PUB_END>
<USER_REFERENCE_CREATOR>Yes</USER_REFERENCE_CREATOR>
</INTELLCONT>
<INTELLCONT id="151368284160" dmd:originalSource="MANAGE_DATA" dmd:lastModified="2017-10-03T10:44:48" dmd:startDate="2017-01-01" dmd:endDate="2017-12-31">
<REFEREED>Yes</REFEREED>
<CONTYPE>Journal Article</CONTYPE>
<CONTYPEOTHER/>
<STATUS>Published</STATUS>
<TITLE>Sample Title</TITLE>
<TITLE_SECONDARY/>
<INTELLCONT_AUTH id="151368284163">
<FACULTY_NAME/>
<FNAME>FN</FNAME>
<MNAME/>
<LNAME>LN</LNAME>
<INSTITUTION/>
<ROLE>Author</ROLE>
<STUDENT_LEVEL/>
</INTELLCONT_AUTH>
<PUBLISHER>Public Health</PUBLISHER>
<PUBCTYST/>
<PUBCNTRY/>
<VOLUME>14</VOLUME>
<ISSUE>3</ISSUE>
<PAGENUM>265</PAGENUM>
<DTY_PUB>2017</DTY_PUB>
<PUB_START>2017-01-01</PUB_START>
<PUB_END>2017-12-31</PUB_END>
<USER_REFERENCE_CREATOR>Yes</USER_REFERENCE_CREATOR>
</INTELLCONT>
</Data>
私の現在のXSLファイルは次のとおりです。あなたは私が数えるしようとしている部分を見ることができるように
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csv="csv:csv"
\t xmlns="http://www.w3.org/1999/xhtml" xmlns:dm="http://www.digitalmeasures.com/schema/data"
\t xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata"
\t xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
\t xmlns:math="http://www.w3.org/2005/xpath-functions/math"
\t xmlns:array="http://www.w3.org/2005/xpath-functions/array"
\t xmlns:map="http://www.w3.org/2005/xpath-functions/map"
\t xmlns:xhtml="http://www.w3.org/1999/xhtml" exclude-result-prefixes="array fn map math xhtml xs">
\t
\t <xsl:output method="text" encoding="utf-8"/>
\t <xsl:variable name="delimiter" select="','"/>
\t <!-- xmlns:dm is the xmlns attribute in Data.-->
\t
\t <!-- define an array containing the fields we are interested in -->
\t <xsl:variable name="fieldArray">
\t \t <field>Journal Articles</field>
\t \t <field>Books</field>
\t \t <field>Book Chapters</field>
\t \t <field>Conference Proceeedings</field>
\t \t <field>Others</field>
\t </xsl:variable>
\t <xsl:param name="fields" select="document('')/*/xsl:variable[@name='fieldArray']/*" />
\t
\t <xsl:key name="Year-Published" match="dm:INTELLCONT" use="dm:DTY_PUB"/>
\t <xsl:template match="/dm:Data">
\t \t <!--key("Year-Published", '2017')-->
\t \t <!--<xsl:text>Journal Articles</xsl:text>
\t \t <xsl:value-of select="$delimiter" />
\t \t <xsl:text>Books</xsl:text>
\t \t <xsl:value-of select="$delimiter" />
\t \t <xsl:text>Book Chapters</xsl:text>
\t \t <xsl:value-of select="$delimiter" />
\t \t <xsl:text>Conference Proceedings</xsl:text>
\t \t <xsl:value-of select="$delimiter" />
\t \t <xsl:text>Others</xsl:text>
\t \t -->
\t \t
\t \t
\t \t <xsl:text>Year,</xsl:text>
\t \t <!-- tabulating Years as columns -->
\t \t <xsl:for-each select="dm:Record/dm:INTELLCONT[generate-id()=generate-id(key('Year-Published', dm:DTY_PUB)[1])]">
\t \t \t <xsl:sort select="(dm:DTY_PUB)" order="ascending"/>
\t \t \t <xsl:value-of select="(dm:DTY_PUB)"/> <xsl:text>,</xsl:text>
\t \t </xsl:for-each>
\t \t <xsl:text>
</xsl:text>
\t \t
\t \t
\t \t
\t \t <!-- Tabulating Published Papers Per Year-->
\t \t <xsl:for-each select="dm:Record/dm:INTELLCONT[generate-id()=generate-id(key('Year-Published', dm:DTY_PUB)[1])]">
\t \t \t <xsl:sort select="(dm:DTY_PUB)" order="ascending"/>
\t \t \t <xsl:value-of select="count(dm:Record/dm:INTELLCONT[dm:CONTYPE='Journal Article'][dm:STATUS='Published'][dm:DTY_PUB=key('Year-Published', dm:DTY_PUB)[1])][dm:USER_REFERENCE_CREATOR!='No'])"/>
\t \t \t <xsl:value-of select="$delimiter" />
\t \t </xsl:for-each>
\t \t <xsl:text>
</xsl:text>
\t \t
\t \t
\t \t
\t \t
\t \t
\t \t <!-- output newline -->
\t \t <xsl:text>
</xsl:text>
\t </xsl:template>
\t
</xsl:stylesheet>
年ごとの各出版物にはコメントが掲載されています。毎年のアペール
私は毎年彼らが出版し、その年に何冊の出版物が存在するかを数えたいと思っています。どんな助けもありがとうございます。
私は具体的に私がバージョン2を使用することを許さなかったと言われました。これをありがとう、私はそれに試してみましょう – mks
これらの決定を下した人々だけが、生産性の低下でコストを知っていたら... –