0

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

任何想法将不胜感激。

4

2 回答 2

1

在 for-each 中,

<xsl:value-of select="description//div[@id='prize']" />
于 2013-04-26T20:38:04.377 回答
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>

where<document>被假定为您的 xml 文件的根元素。

编辑:如果你有 3 个<item>并且 div 有不同的值,比如<div id="prize">Prize here 1</div>and<div id="prize">Prize here 2</div>然后<div id="prize">Prize here 3</div>它会打印Prize here 1 Prize here 2 Prize here 3 这里我给出了一个通用的解决方案来遍历<item>元素,如果有很多。如果你有一个或多个相同的将相应地工作。

于 2013-04-27T08:16:20.610 回答