2

問題

ウェブサイトに価格が表示されている個別の通貨の数を数えようとしています。

Webサイトのホームページでは、ユーザーはドロップダウンリストから通貨を選択できます。

ドロップダウンリストで個別の通貨をカウントするXPath式を見つけようとしています。

リストは次のようになります。

ここに画像の説明を入力してください

リストの最初の4つの通貨は、ユーザーが最も頻繁に選択する通貨です。

通貨コード順に並べられた通貨の完全なリストも表示されます。完全なリストには、最初の4つの通貨の重複が含まれています。

「人気のある」リストと「完全な」リストは、ドロップダウンリストに無効な空白のオプションを配置することで視覚的に分離されます。

リストを作成するためのホームページのHTMLは、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>

<select id="selCurrency" tabindex="122">
  <option value="GBP" selected="selected">Select your currency</option>
  <option value="GBP">GBP - £</option>
  <option value="EUR">EUR - €&lt;/option>
  <option value="PLN">PLN - zł</option>
  <option value="USD">USD - $</option>
  <option value="" disabled="disabled"/>
  <option value="AED">AED - د.إ.‏&lt;/option>
  <option value="AFN">AFN</option>
  <option value="ARS">ARS - $</option>
  <option value="AUD">AUD - $</option>
  <option value="BDT">BDT</option>
  <option value="BGN">BGN - лв.</option>
  <option value="BOB">BOB - Bs.</option>
  <!-- ... -->
</select>

簡潔にするために、スクリーンショットに表示されていない要素を削除しました。

試みられた解決策

私の解決策のアイデアは、空白の区切り文字の後にあるすべてのノードだけを選択し、それらをカウントアップすることです。

このXPath式は、区切り文字のみを選択します。

//*[@id="selCurrency"]/option[@value=""]

XPath軸のw3schoolsページによると、次の兄弟軸を使用して、現在のノードの後のすべての兄弟を選択できます。

例に従って、次の式を試しました。

//*[@id="selCurrency"]/following-sibling::option[@value=""]

しかし、これは何も返さないか、不正な構文です。どちらかわかりません。

完全な通貨リストのすべてのノードを選択してからカウントするにはどうすればよいですか?

4

2 に答える 2

3

適切なアイテムを取得するには、2 つの試行を組み合わせる必要があります。

//*[@id="selCurrency"]/option[@value=""]/following-sibling::option

XPath を使用してこれらをカウントする場合は、次の式でカウントします。

count(//*[@id="selCurrency"]/option[@value=""]/following-sibling::option)
于 2013-01-31T16:34:30.507 に答える