1

我正在使用嵌入在 HTML 表单中的 javascript 将 xpath 表达式应用到 XSLT 样式表中,主要是在 anXSLT 样式表的 for each 和 value-of 部分中。我想过滤我的表格数据(在 HTML 表单的区域中显示为 HTML 表格的多个 XML 元素数据)。如果我有 dvd 标题和价格元素,那将是一个 XPATH 表达式,包括谓词,让我在一个表中显示所有 DVD 标题和价格信息(两个元素),只显示价格 > 2.00 的那些?目前,在处理谓词以过滤我的表数据和显示 2 个元素的所有行数据方面,我遇到了很多问题。我有一个 xpath 表达式,可以让我过滤并只显示一个元素,而不是两个。

感谢任何帮助。

我已经更新了 xml 文件

<?xml version="1.0"?>
<catalog>
<dvd>
<title>Gone with the wind</title><price>2.00</price>
</dvd>
<dvd>
<title>Independence Day</title><price>3.00</price>
</award>
</catalog>

如上所述,我想在我的 HTML 表中输出标题和价格输出,其中行输出是满足价格 > 2.00 的行

XML 的内容被简化了,其中包含更多的 DVD 元素。我将 XPATH 表达式作为字符串传递到 for each 中的 XSLT 模板和 XSLT 样式表的选定部分的值。

XSLT 片段如下。在javascript中,我用XPATH表达式字符串“price[.>2.00]”替换每个“*”,显示价格> 2.00。我希望能够在我的 HTML 表格中以一行的形式显示该价格的标题

<xsl:template match="/*/*">
  <tr>    
  <xsl:for-each select="*">
     <td><xsl:value-of select="."/></td>
  </xsl:for-each>
  </tr>
</xsl:template>
4

2 回答 2

0
<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
        <table>
            <tbody>
                <xsl:apply-templates select="/catalog/dvd[number(price) > 2.0]"/>
            </tbody>
        </table>
    </xsl:template>

    <xsl:template match="dvd">
        <tr>
            <td><xsl:value-of select="title"/></td>
            <td><xsl:value-of select="price"/></td>
        </tr>
    </xsl:template>

</xsl:transform>
于 2012-12-12T13:38:22.917 回答
0

使用

/*/dvd[price > 2]

这将选择任何命名dvd的元素,该元素是 XML 文档顶部元素的子元素,并且至少有一个price子元素,其字符串值转换为数字大于 2。

于 2012-12-12T13:45:15.910 回答