- PR -

XSLTでnowrap属性をつけたい

1
投稿者投稿内容
swat
常連さん
会議室デビュー日: 2002/03/21
投稿数: 33
お住まい・勤務地: 埼玉県
投稿日時: 2002-03-21 17:49
こちらには初めて投稿します。渡辺といいます。

表題のとおり、XSLTでHTMLのTDタグにnowrap属性をつけたいのです。

ソースとなるXML
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
コード:
<component kind="table">

<data>
<border>1</border>
<line>
<cell rowspan="2" colspan="2" nowrap="yes">縦2つ横2つ改行なしテキストになっています。</cell>
<cell>通常セル</cell>
</line>
<line>
<cell>通常セル</cell>
</line>
<line>
<cell nowrap="yes">改行なしテキストになっています。</cell>
<cell nowrap="yes">改行なしテキストになっています。</cell>
<cell nowrap="yes">改行なしテキストになっています。</cell>
</line>
</data>
</component>


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
XSLTのソース(cell部分のみ抜粋)
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
コード:
<xsl:template match="cell">

<td>
<xsl:if test="@rowspan > 0">
<xsl:attribute name="rowspan">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@colspan > 0">
<xsl:attribute name="colspan">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
</xsl:if>
<xsl:value-of select="."/>
</td>
</xsl:template>


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

こんな感じでrowspan、colspan属性をつけることはできたのですが、nowrapは値を与えるわけではないので、どのように属性としてつければよいのかわかりません。

classを指定して、スタイルシートで逃げよ、ということなのでしょうか?



[ メッセージ編集済み 編集者: swat 編集日時 2002-03-21 17:50 ]
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-03-21 18:00
井上です。
<DL COMPACT="COMPACT"> と同じ理屈で、<TD NOWRAP="NOWRAP"> とできませんか ?
_________________
www.kojii.net
swat
常連さん
会議室デビュー日: 2002/03/21
投稿数: 33
お住まい・勤務地: 埼玉県
投稿日時: 2002-03-21 18:17
渡辺です。

<TD NOWRAP="NOWRAP">が通ることをはじめて知りました。

下記のように設定したらできました。お騒がせしました。
コード:
<xsl:template match="cell">

<td>
<xsl:if test="@rowspan > 0">
<xsl:attribute name="rowspan">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@colspan > 0">
<xsl:attribute name="colspan">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@nowrap = 'yes'">
<xsl:attribute name="nowrap">nowrap</xsl:attribute>
</xsl:if>
<xsl:value-of select="."/>
</td>
</xsl:template>



iXSLTの体験版でHTMLを吐き出させたら、<td nowrap>と吐き出しました。これって、どのプロセッサでも一緒なんでしょうかね?

[ メッセージ編集済み 編集者: swat 編集日時 2002-03-21 18:18 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2002-03-22 10:20
>iXSLTの体験版でHTMLを吐き出させたら、<td nowrap>と吐き出しました。これって、どのプロセッサでも一緒なんでしょうかね?

結果treeを出力する時、出力method="html" をどの程度ていねいに、処理しているか
によるでしょう。
HTMLの「属性の短縮記述機構」を処理する程度です。
nowrap="nowrap"
nowrap=nowrap
nowrap (他に衝突するキーワードが無い時)
のどれを書いてもよい
(パーサーに負担をかけても読みやすく、SGMLは人にやさしい)

[ メッセージ編集済み 編集者: MMX 編集日時 2002-03-22 10:32 ]
swat
常連さん
会議室デビュー日: 2002/03/21
投稿数: 33
お住まい・勤務地: 埼玉県
投稿日時: 2002-03-22 14:00
引用:
結果treeを出力する時、出力method="html" をどの程度ていねいに、処理しているか
によるでしょう。



iXSLTで、output methodの宣言をはずしてみても、同様の結果が得られました。
そういった処理はXSLTプロセッサに任されているということなんですね。
1

スキルアップ/キャリアアップ(JOB@IT)