0
以下私はイベントのリストを持つXMLファイルを持っています。 私が達成したいのは、ニューヨークと常にリストの上にある都市とそれらをグループ化することです。 他の都市は名前でソートされ、次に日付でソートされます。 私は他の都市を分類するだけでなく、すべてを(ハックで)行うことができます。XSLグループと特定の項目を上にソート
<Events>
<Event id="1">
<Title>Concert1</Title>
<Date>2017-01-05 12:00</Date>
<City>Seattle</City>
</Event>
<Event id="2">
<Title>Concert2</Title>
<Date>2017-01-05 11:00</Date>
<City>Los Angeles</City>
</Event>
<Event id="3">
<Title>Concert3</Title>
<Date>2017-01-05 14:00</Date>
<City>New York</City>
</Event>
<Event id="4">
<Title>Concert4</Title>
<Date>2017-01-05 19:00</Date>
<City>Austin</City>
</Event>
<Event id="5">
<Title>Concert5</Title>
<Date>2017-01-05 15:00</Date>
<City>New York</City>
</Event>
<Event id="6">
<Title>Concert6</Title>
<Date>2017-01-05 12:00</Date>
<City>Austin</City>
</Event>
</Events>
ムンキアングループを使用してイベントを都市別にグループ化するXLS(1.0)ファイル。 はまた、リストの一番上にニューヨークを抽出するために、私がfor-eachループ別々の2を作った:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:key name="groups" match="City" use="."/>
<xsl:template match="/Events">
<xsl:apply-templates select="Event/City[generate-id() = generate-id(key('groups', .)[1])]"/>
</xsl:template>
<!-- NEW YORK -->
<xsl:template match="City[text()='New York']">
<xsl:variable name="currentGroup" select="."/>
<b><xsl:value-of select="$currentGroup"/></b><br/>
<xsl:for-each select="key('groups', $currentGroup)">
<xsl:sort select="../Date"/>
<i>+ <xsl:value-of select="../Date"/> <xsl:value-of select="../Title"/></i><br/>
</xsl:for-each>
</xsl:template>
<!-- OTHER CITIES -->
<xsl:template match="City[text()!='New York']">
<xsl:variable name="currentGroup" select="."/>
<b><xsl:value-of select="$currentGroup"/></b><br/>
<xsl:for-each select="key('groups', $currentGroup)">
<xsl:sort select="../Date"/>
<i>+ <xsl:value-of select="../Date"/> <xsl:value-of select="../Title"/></i><br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
現在、「他の都市は、」入力順です。私はグループとソート上記のXML HTMLの結果は次のようになりますように、どのように:あなたの投稿コードが出力「ニューヨーク」のイベントが最初にそれをして簡単にする必要がありますなぜ
New York
+ 14:00 Concert3
+ 15:00 Concert5
Austin
+ 12:00 Concert6
+ 19:00 Concert4
Los Angeles
+ 11:00 Concert2
Seattle
+ 12:00 Concert1
はい!これはまさに私が ''タグを探していたフィルタリング構文です。ありがとうございました。私のコードは、ニューヨークなどのために、2つのループを持つ醜い解決策を持っていたので、まずニューヨークを出力しました。 –
yosh