2017-06-16 2 views
0

私は次のクエリを持っている(XPath 2.0のを):あなたが見ることができるように、私はハッシュのあるトピック/外部参照要素を見つけたい私はこのXPathクエリが正常に動作しないのはなぜですか? (他のものを除くながら、いくつかの@で要素を検索@)

//xref[contains(@href,'#') and @class='- topic/xref ' and @type!='step' and @type!='fig' and @type!='substep'] 

href属性私は、セラチンタイプの要素を除外したいと思います。

//xref[contains(@href,'#') and @outputclass='expandable'] 

はなぜ最初に、長いクエリを実行し、ないではない: 問題は、上記のクエリは、@ outputclass =「拡張可能な」

を持つ要素を表示しません、私はそれらを識別するために、別々のいずれかを実行する必要がありました、ありそれらの要素を表示しますか?また、@ class = ' - topic/xref'の代わりに(@class = ' - topic/xref)が入っていて、それが役に立たなかった。 XPath以下

+0

問題が非常に明確でないため、関連する 'XML'ソースを追加し、必要な出力を指定してください。 – Andersson

+0

@Anderssonこれは、数多くのトピックを持つ膨大なDITAマップです。 ここに私が見つけたいものの例があります: 1. 2. kukunamuniu

+0

だから、' class = " - topic/xref"と 'outputclass =" expandable "の要素が必要ですか?他の@ *と一緒にいる人を除外してどうですか?何を除外しますか? – Andersson

答えて

0

試してみてください。

//xref[@class="- topic/xref " and contains(@href, "#") and not(@type=("fig", "substep", "table") or @outputclass="expandable")] 

href属性でclass="- topic/xref "#xref要素を返しますが、値の値"fig", "substep", "table"またはoutputclass属性"expandable"

+0

私は実際には拡張可能なものが必要です。 '@ xref [@class =" - topic/xref "(@href、"# ")と@type =(" fig "、" substep " "table"、 "step"))] ' 私がする必要があることをする。私の元のクエリとは異なり、これは結果から@outputclass = expandableを持つものを省略しませんでした。 – kukunamuniu

0

あなたの避難所」でtype属性を持っていませんあなたのXMLソースを示しましたが、@type属性を持たない要素を取得することを期待していたと思われます。ただし、条件@type!='XYZ'は、値が 'XYZ'以外の値を持つ@type属性を持つ要素に対してのみtrueです。私の推測が正しいなら、あなたはnot(@type='XYZ')を意図しました。

+0

'!='の説明をありがとう!私の場合、@type属性を完全に省略したくはありません。それは何年も存在し、多くの貢献者を抱えていた巨大なファイルセットであり、要素内で驚くべきものを保持します。 @アンダーソンの答えと結びついて、私は今日必要なことをしたクエリで終わった。 – kukunamuniu

関連する問題