いくつかの DocBook xml を解析して内部形式に変換しています。
次のような tgroup 要素の処理中:
<tgroup cols="4">
<colspec colwidth="1*" />
<colspec colwidth="1*" />
<colspec colwidth="1*" />
<colspec colwidth="1*" />
特定の tgroup の col 属性値が子 colspec 要素の数と正確に一致し、その colspec の colwidth 属性がある場合、結果ツリーの colspec 要素で colwidth 値を使用したいと考えています。
私のチェックとコードは次のとおりです。
<xsl:when test="(@cols = count(./colspec)) and (./colspec[@colwidth][$number])">
<colspec>
<xsl:attribute name="colnum">
<xsl:value-of select="$number"/>
</xsl:attribute>
<xsl:attribute name="colname">
<xsl:value-of select="$number"/>
</xsl:attribute>
<xsl:attribute name="colwidth">
<xsl:value-of select="./colspec[@colwidth][$number]"/>
</xsl:attribute>
</colspec>
($number は現在処理中の colspec の番号です。) 1* の colwidth を取得する代わりに、取得するだけです。
coldwidth=""
属性値が必要であることを指定する必要がありますか?
私はいつも xpath 式につまずいてしまいます。誰かが提供できる助けがあれば大歓迎です!
ありがとう、
ラス