3

パラメータを XPath 式に渡したい。

(//a/b/c[x=?],myParamForXAttribute)

XPath 1.0 でこれを行うことはできますか? (試してみstring-joinましたが、XPath 1.0にはありません)

では、どうすればこれを行うことができますか?

私のXMLは次のようになります

<a>
 <b>
  <c>
   <x>val1</x>
   <y>abc</y>
  </c>
  <c>
   <x>val2</x>
   <y>abcd</y>
  </c>
</b>
</a>

<y>x要素の値がどこにある要素の値を取得したいval1

試してみ//a/b/c[x='val1']/yましたが、うまくいきませんでした。

4

2 に答える 2

5

XPath を使用している言語によって異なります。

XSLT の場合:

 "//a/b/c[x=$myParamForXAttribute]"

上記のアプローチとは異なり、以下の 3 つはXPath インジェクション攻撃に対して無防備であり、制御されていない、または信頼されていない入力では決して使用しないでください。これを回避するには、言語またはライブラリによって提供されるメカニズムを使用して、帯域外で変数を渡します。 [クレジット:チャールズ・ダフィー]

C# の場合:

String.Format("//a/b/c[x={0}]", myParamForXAttribute);

Java の場合:

String.format("//a/b/c[x=%s]", myParamForXAttribute);

Python の場合:

 "//a/b/c[x={}]".format(myParamForXAttribute)
于 2015-05-20T14:56:22.547 に答える