提供されたコードには、次のような最も明白なエラーがいくつかあります。
<xsl:for-each select=
"groups/elements/category/types[@name='POP']/language
| groups/elements[delivery]/category/types[@name='POP']/language">
types
要素にはName
属性があります-属性ではありませんname
。XPathでは大文字と小文字が区別され、大文字と小文字が異なる名前は異なるものとして扱われます。
2番目の論理エラー:
上記の和集合は、最初の引数と同等です。
groups/elements/category/types[@name='POP']/language
2番目の引数(ノードセット)が最初の引数(ノードセット)に含まれているためです。
たぶん、2番目の引数で別の何かを指定したいですか?
3番目の明らかなエラーは、language
要素にPostDate
orという名前の子がないことです。name
したがって、内部のコードはxsl:for-each
何も生成しません。
4番目のエラーはcategory
、の子ではないということです。elements
したがって、のselect
属性はxsl:for-each
単一のノードも選択しません。
解決策:
上記のすべてのエラーが修正されたので、私の推測では、次のようなものが必要です。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<html>
<body>
<h2>display 9 Items</h2>
<xsl:for-each select="groups/elements[.//category/types[@Name='POP']/language]">
<xsl:sort select="PostDate" order="descending"/>
<xsl:if test="not(position() > 9)">
<b><xsl:value-of select="PostDate" /></b> -
<font color='red'><xsl:value-of select="name" /></font>
<p></p>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
この変換が提供されたXMLドキュメントに適用される場合:
<groups>
<elements>
<name>//1</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="POP" />
<types Code="POP/MUSIC" Name="POP" >
<language>Italian</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2012-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//1+1</name>
<BOD></BOD>
<description/>
<delivery/>yes
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="POP" />
<types Code="POP/MUSIC" Name="POP" >
<language>Italian</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2012-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//2</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="PureMusic" />
<types Code="POP/MUSIC" Name="JAZZ" >
<language>No language</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2011-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//3</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="JAZZ/DANCE" Name="JAZZ" />
<types Code="JAZZ/MUSIC" Name="BLUES">
<language>English</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2012-05-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//4</name>
<BOD></BOD>
<description/>
<delivery/>yes
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="Blues/DANCE" Name="POP" />
<types Code="Blues/MUSIC" Name="POP" >
<language>No language</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2012-01-14</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//5</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="DANCE/DANCE" Name="POP" />
<types Code="RAP/MUSIC" Name="POP" >
<language>No language</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2010-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//6</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/HALL" Name="HALL" />
<types Code="POP/MUSIC" Name="POP" >
<language>German</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2009-10-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//7</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="JAZZ/DANCE" Name="POP" />
<types Code="BLUES/MUSIC" Name="POP" >
<language>Korean</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2001-11-05</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//8</name>
<BOD></BOD>
<description/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="POP" />
<types Code="POP/MUSIC" Name="POP" >
<language>English</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2004-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//9</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="HIPHIP" />
<types Code="POP/MUSIC" Name="POP" >
<language>Chinese</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2007-02-18</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//10</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="POP" />
<types Code="POP/MUSIC" Name="POP" >
<language>Janpanese</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2002-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//11</name>
<BOD></BOD>
<description/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/JAZZ" Name="POP" />
<types Code="POP/MUSIC" Name="JAZZ" >
<language>Spanish</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2012-03-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//12</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="POP" />
<types Code="POP/MUSIC" Name="POP">
<language>French</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2006-01-04</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//13</name>
<BOD></BOD>
<description/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="POP" />
<types Code="POP/MUSIC" Name="POP" >
<language>English</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2012-05-02</PostDate>
<trackno></trackno>
</elements>
<elements>
<name>//14</name>
<BOD></BOD>
<description/>
<delivery/>
<URL></URL>
<Hobbbies>
<Sport></Sport>
<Music>
<category>
<types Code="POP/DANCE" Name="BB" />
<types Code="POP/MUSIC" Name="DANCE" >
<language>Spanish</language>
</types>
</category>
</Music>
</Hobbbies>
<Size></Size>
<PostDate>2002-06-10</PostDate>
<trackno></trackno>
</elements>
</groups>
結果は:
<html>
<body>
<h2>display 9 Items</h2><b>2012-05-02</b> -
<font color="red">//13</font><p></p><b>2012-03-04</b> -
<font color="red">//1</font><p></p><b>2012-03-04</b> -
<font color="red">//1+1</font><p></p><b>2012-01-14</b> -
<font color="red">//4</font><p></p><b>2010-03-04</b> -
<font color="red">//5</font><p></p><b>2009-10-04</b> -
<font color="red">//6</font><p></p><b>2007-02-18</b> -
<font color="red">//9</font><p></p><b>2006-01-04</b> -
<font color="red">//12</font><p></p><b>2004-03-04</b> -
<font color="red">//8</font><p></p>
</body>
</html>
そしてそれはブラウザに次のように表示されます:
9アイテムを表示
2012-05-02 -// 13
2012-03-04 -//1
2012-03-04 -// 1 + 1
2012-01-14 -// 4
2010-03-04 -//5
2009-10-04 -//6
2007-02-18 -// 9
2006-01-04 -//12
2004-03-04 -//8