<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foo="blogschema.xsd"
exclude-result-prefixes="foo">
<xsl:output method ="html" indent ="no"/>
<xsl:template match="/">
<html>
<link rel ="stylesheet" type="text/css" href="blogStyle.css"/>
<body>
<ul class="menu">
<li><a href="#" class ="Part 1"><xsl:value-of select="//foo:Heading[1]"/> </a></li>
<li><a href="#" class ="Part 2"><xsl:value-of select="//foo:Heading[2]"/></a></li>
</ul>
<div id="heading">
<xsl:for-each select="//foo:Entry">
<!--<xsl:sort select="Heading"/> -->
<div class ="topNavigation"><a href="#home"><h3><xsl:value-of select="foo:Heading"/></h3></a></div>
</xsl:for-each>
<div class ="panes">
</div>
</div>
<div id ="blogpicture">
<div class="picture">
<div id="headerTitle"><h2><xsl:value-of select="//foo:Title"/></h2></div>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:transform>
我试图获得一个菜单,但我现在所有的东西都是菜单的第1部分,在for循环中我可以得到第2部分。另一种选择可能是坚持使用循环,并且因为我正在循环变化在循环期间以某种方式的类(包含类id) 我的博客
<Entry>
<Heading id="101">Part 1</Heading>
<body>
<text>something interesting</text>
<pictures>pictures in the body</pictures>
<videos>Videos in the body</videos>
</body>
<labels>Seperate labels with commas</labels>
<date> 20121119</date>
<location>The location the blog was published</location>
</Entry>
<Entry>
<Heading id="102">Part 2</Heading>
<body>
<text>something</text>
<pictures>pictures in the body</pictures>
<videos>Videos in the body</videos>
</body>
<labels>Seperate labels with commas</labels>
<date> 2012-11-26Z</date>
<location>The location the blog was published</location>
</Entry>
<author>me</author>
我希望这是有道理的 当前进入菜单u的输出是第1部分,然后是“”,其中我的意思是第2部分。然而,xsl中的每个循环都会带来第1部分和第2部分标题
答案 0 :(得分:3)
这个怎么样:
<li><a href="#" class ="Part 1"><xsl:value-of select="//foo:Entry[1]/foo:Heading"/> </a></li>
<li><a href="#" class ="Part 2"><xsl:value-of select="//foo:Entry[2]/foo:Heading"/></a></li>
或者,这也应该有效:
<li><a href="#" class ="Part 1"><xsl:value-of select="(//foo:Heading)[1]"/> </a></li>
<li><a href="#" class ="Part 2"><xsl:value-of select="(//foo:Heading)[2]"/></a></li>
来自全能的XPath spec:
//
是/descendant-or-self::node()/
的缩写。例如,//para
是/descendant-or-self::node()/child::para
的缩写,因此将选择文档中的任何para元素(因为文档元素节点,因此//para
将选择作为文档元素的para元素是根节点的子节点);div//para
是div/descendant-or-self::node()/child::para
的缩写,因此会选择div子的所有para后代。注意:位置路径
//para[1]
不与位置路径/descendant::para[1]
的含义相同。后者选择第一个后代para元素;前者选择所有后代的para元素,这些元素是他们父母的第一个孩子。