我有以下XML:
<item>
<title>Testing WebForm</title>
<link>http://linkurlhere.com</link>
<description>
<div class="field field-name-body field-type-text-with-summary
field-label-hidden"><div class="field-items"><div class="field-item even"
property="content:encoded"><div style="background-color: white; width: 100%;">
<div id="prize" style="background-color: yellow; color: #660000; font-weight:
bold; width: 200px;">Prize here</div>
</div>
<div id="startDate">Start Date: January 1, 2013</div>
<div id="endDate">End Date: January 1, 2014</div>
<p></p>
<p>Thanks for playing please take the survey - mock intro</p>
</div></div></div></description>
</item>
我需要显示<description>
节点的div id = prize。
有没有办法通过xsl:value-of?
访问它将会有n个这样的项目,所以我想将它们放在xsl:for-each
中所以看起来会产生这种影响:
<xsl:for-each select="item">
display value of <description><div id="prize">content</div></description>
</xsl:for-each>
任何想法都会受到最高的赞赏。
答案 0 :(得分:1)
在for-each中,
<xsl:value-of select="description//div[@id='prize']" />
答案 1 :(得分:0)
你的XSL应该这样写。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates select="document">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="document" name="document">
<xsl:apply-templates select="item">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="item" name="item">
<xsl:apply-templates select="description">
</xsl:apply-templates>
</xsl:template>
<xsl:template match="description" name="description">
<xsl:value-of select=".//div[@id='prize']" />
</xsl:template>
</xsl:stylesheet>
其中<document>
被假定为xml文件的根元素。
修改:如果您有三个<item>
且div有不同的值,例如<div id="prize">Prize here 1</div>
和<div id="prize">Prize here 2</div>
以及<div id="prize">Prize here 3</div>
,则会在此处打印 奖品1奖这里2奖3 这里我给出了一个通用的解决方案来遍历<item>
元素,如果有很多。如果您有一个或多个相同的工作将相应。