[解決済み] 概念 XML XLST 先行-兄弟-祖先
質問
私はxsltの初心者ですが、簡単なものもあれば複雑なものもあることがわかりました。 私はいくつかの概念を明確にしたい。 Googleで検索したところ、ancestorの説明が見つかり、そのウェブサイトの図がわかりやすかったです。
でも、先住兄弟がまだよくわからない。
<product>
<inventory>
<drink>
<lemonade>
<price>$2.50</price>
<amount>20</amount>
</lemonade>
<pop>
<price>$1.50</price>
<amount>10</amount>
</pop>
</drink>
<service>
<address />
<phone />
<delivery> City </delivery>
</service>
<snack>
<chips>
<price>$4.50</price>
<amount>60</amount>
</chips>
</snack>
<hotfood></hotfood>
<totalprice> $15</totleprice>
</inventory>
</product>
これをどう読むか 先行兄弟::pop/先祖::在庫/totalprice
ancestor::inventory/totalprice = productintinventorytotalprice preceding-sibling::pop - これはよくわからない。 では、どのように読み解けばよいのでしょうか。
ありがとうございました。
解決方法は?
先行兄弟::軸
は
preceding-sibling::
軸は、フォーカス要素に先行するすべての兄弟要素を含むナビゲーションの軸である。兄弟要素とは、参照項目と同じ親を持つ別の要素を意味します。先行するノードとは、参照するノードより前に発生するノードを意味する。の順序は
preceding-sibling
の軸は、ドキュメントの逆順になります。この文書を見てみよう。
<fruit>
<banana>
<lady-finger-banana/>
</banana>
<apple/>
<pear/>
<kiwi/>
</fruit>
フォーカスノードが pear の場合、シーケンス
preceding-sibling::*
は...
- リンゴ
- バナナ
注)フルーツ、梨、レディフィンガーバナナ、キウイは配列に含まれません。
ということは、次のようになります。
-
preceding-sibling::*[ 1]
はリンゴ -
preceding-sibling::*[ 2]
はバナナ -
count( preceding-sibling::*)
は2 -
preceding-sibling::apple[ 1]
はリンゴでもある -
preceding-sibling::banana[ 1]
はバナナ -
preceding-sibling::*[ 3]
が存在しないか、空のシーケンス
先行兄弟::pop/先祖::inventory/totalpriceの例
この例を研究するために、サンプルドキュメントを少し変更する必要があります。
<product>
<inventory>
<drink>
<lemonade>
<price>$2.50</price>
<amount>20</amount>
</lemonade>
<pop>
<price>$1.50</price>
<amount>10</amount>
</pop>
<focus-item />
</drink>
<totalprice>$15</totalprice>
</inventory>
</product>
ここでは、focus-itemという要素にフォーカスが当たっているとします。
を評価するために
preceding-sibling::pop/ancestor::inventory/totalprice
は、以下の手順で行います。
-
preceding-sibling::pop
は、直前のすべてのpop
要素をfocus-itemにする。これは1つのノードのシーケンスとして評価される。 -
左側のシーケンスの各項目について(ちょうど1つの
pop
要素で、この項目を一時的なフォーカス項目として設定し、 / 演算子の右側にある式を評価します。ancestor::inventory
このようなノードは1つだけで、それは祖先のインベントリノードである。したがって、最初の/演算子は1つのインベントリノードのシーケンスとして評価されます。
-
次に、2 番目の / とその右側のオペランド式 total price の効果を評価します。左側のシーケンスにある各アイテム (インベントリノードは 1 つだけなので、そうなります) に対して、これを一時的なフォーカスアイテムとして設定し、次のように評価します。
totalprice
. -
totalprice
の略です。child::totalprice
. 一時的なフォーカスノードの子軸には合計価格要素が1つしかないので、最終的には合計価格ノードという1つのノードのシーケンスとなる。
図解で理解する
以下は
preceding-sibling::
. この中で、参照ノードは Charlie であり、その上のノードは
preceding-sibling::
軸が緑色で表示されています。このようなノードはこれだけです。
<イグ
関連
-
[解決済み] テスト
-
[解決済み] xslt での配列の作成
-
[解決済み] 条件付きXpathステートメントを作成するには?
-
[解決済み] exclude-result-prefixesが機能しない
-
末尾のセクションにコンテンツを入れることはできません。
-
[解決済み] Google Spreadsheet ImportXML Error: インポートされたXMLコンテンツはパースできません
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み】XMLにおける「standalone」ディレクティブの意味とは?
-
[解決済み】「xmlns」「version」などのSVGパラメータは必要ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] xmlns、xmlns:xsi、xsi:schemaLocation、およびtargetNamespace?
-
[解決済み] XMLを用いたIF...THEN...ELSE
-
[解決済み] 複数の条件を含むXPath
-
[解決済み] NULLのXML要素を表現する正しい方法は?
-
[解決済み] XSLTのposition()関数を理解する
-
[解決済み] 条件付きXpathステートメントを作成するには?
-
[解決済み] ウェブサービスのレスポンスにおけるtext/xmlとapplication/xmlの違いは何ですか?
-
[解決済み] xsltで文字列を文字列に置き換える
-
[解決済み】XPathで属性ノードの値を抽出する
-
[解決済み] 属性値で要素を選択するXPath