テーブルを変換するXSLTを作成しています。
自分の親(parent)の兄(preceding-sibling)の子供(child)のうち、任意の属性値を持った要素が、何番目の要素かを知りたいです。
例えば、以下のXMLに対するXSLTで、「E」の<entry>にmatchした際、1つ前の<row>の子供の中で、morerowsの属性値が1(@morerows="1")の<entry>が、その<row>の中で何番目の<entry>であるかを知りたいです。
<topic> <title/> <body> <table> <tgroup cols="3"> <colspec/> <colspec/> <colspec/> <tbody> <row> <entry morerows="1">AD</entry> <entry>B</entry> <entry>C</entry> </row> <row> <entry>E</entry> <entry>F</entry> </row> <row> <entry>G</entry> <entry>H</entry> <entry>J</entry> </row> </tbody> </tgroup> </table> </body> </topic>
XSLTの該当部分に以下の変数を設定したのですが、エラーで求める値が取得できません。
<xsl:template match="entry"> <!-- 最初の<row>では以下の処理をスキップさせる --> <xsl:variable name="morerows_entry_num" select="position(parent::node(preceding-sibling::node()/entry[@morerows=1]))"/> <!-- 以下、取得情報をもとに処理を分岐する -->
記述の仕方に不備があればご指摘いただけないでしょうか。
そもそもXPathを複合させることができない場合、上記の情報を取得する方法がないでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/20 05:40