访问xml中的html div,使用xsl进行转换

时间:2013-04-26 20:23:15

标签: html xml xslt

我有以下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>

任何想法都会受到最高的赞赏。

2 个答案:

答案 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>元素,如果有很多。如果您有一个或多个相同的工作将相应。