1

HTMLフォームに埋め込まれたjavascriptを使用して、主にXSLTスタイルシートのfor eachおよびvalue-ofセクションで、xpath式をXSLTスタイルシートに適用しています。テーブル データ (HTML フォームの領域に HTML テーブルとして表示されている複数の XML 要素データ) をフィルター処理したいと考えています。DVD のタイトルと価格の要素がある場合、すべての DVD のタイトルと価格の情報 (両方の要素) を、価格が 2.00 を超えるものだけを示す表に表示できる述語を含む XPATH 式は何でしょうか? 現時点では、述語を処理してテーブル データをフィルター処理し、2 つの要素のすべての行データを表示することに関して、多くの問題が発生しています。2 つではなく 1 つの要素のみをフィルター処理して表示できる 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 スタイルシートの select 部分の値を渡しています。

XSLT スニペットを以下に示します。JavaScript では、for each の "*" を、価格 > 2.00 を示す XPATH 式文字列 "price[.>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]

これにより、XML ドキュメントの最上位要素の子であり、数値に変換された文字列値が 2 より大きい子dvdを少なくとも 1 つ持つ、という名前の要素が選択されます。price

于 2012-12-12T13:45:15.910 に答える