我想为每个循环打印此XML部分中的所有元素:
<education>
<institution>Buckinghamshire New University</institution>
<level>BSc Computing and Web</level>
<startDate>Start date: 2016-09-01 </startDate>
<endDate>End date: 2019-06-01 </endDate>
<subject>Programming Concepts</subject>
<grade>100%</grade>
<subject>XML</subject>
<grade>50%</grade>
<institution>Grammar School</institution>
<level>Secondary School</level>
<startDate>2012-09-01 </startDate>
<endDate>2016-07-01 </endDate>
<subject>Physical education and sports</subject>
<grade>A</grade>
<subject>Philosophy</subject>
<grade>B</grade>
<subject>Math</subject>
<grade>C</grade>
<subject>English</subject>
<grade>B</grade>
<subject>Croatian</subject>
<grade>B</grade>
</education>
我试过这个:
<xsl:for-each select="education">
<xsl:value-of select="subject"/>;<br/>
<xsl:value-of select="grade"/>;<br/>
</xsl:for-each>
但它只显示出这样的第一次出现:
Programming Concepts
100%
我做错了什么?
答案 0 :(得分:2)
我做错了什么?
你在做:
education
并且输入中只出现一次<xsl:value-of select="subject"/>
。因为你显然正在使用XSLT 1.0,所以说明:
<xsl:for-each select="education/subject">
<xsl:value-of select="."/>;<br/>
<xsl:value-of select="following-sibling::grade[1]"/>;<br/>
</xsl:for-each>
仅获取第一个主题的值。你可能想做类似的事情:
new Handler().postDelayed(()->myButton.setVisibility(View.VISIBLE),2000);
但由于你没有发布预期的结果,所以只不过是一个猜测。
答案 1 :(得分:0)
在XSLT 1.0中,有一个关于value-of
如何运作的细节,
关于哪些人不记得:
即使select
返回了多个项目,value-of
仅提供第一个
他们和其他人(显然)&#34;消失了#34;。
在XSLT 2.0中,它以两种方式进行了更改:
value-of
提供所有返回的项目(更直观的解决方案)。separator
属性,说明了什么
插入相邻的项目之间。但假设您要保留1.0版本。
如果您要打印所有 subject
和grade
元素
文件顺序,你可以这样做:
<xsl:template match="/">
<xsl:for-each select="education/subject | education/grade">
<xsl:value-of select="."/>;<br/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
我在循环中添加<xsl:text>
</xsl:text>
以保留
生成的HTML代码中的单独行中的每个项目,
不仅仅是在浏览器中看到的内容。