>>942 追伸。拡張子を xhtml にしてます。
>>942 xml-stylesheet で指定するのは XSL です。
CSS は style 要素で使ってください。
>>942 Mozillaでしょ?
仕様なんじゃないかな?
XHTMLをXMLとして認識してるか、HTMLとして認識しているかの違いでは?
CSSに関連つけないとないと、XMLとして認識して「ツリー表にになりまつ。」と言ってるだけ。
>>942 うちはIE6だが
<?xml-stylesheet type="text/css" href="hoge.css"?>
を削除して head 内に
<link rel="stylesheet" type="text/css" href="hoge.css" />
を加えたら正常に動作したぞ。
うちのIE6SP1は拡張子がxhtmlだとツリー表示する…
xsl-stylesheetを入れると普通に表示されたけど、
HTMLのときのようなデフォルトのスタイルは用意してくれないんだね…
Mozだとやってくれるっぽい。
>>946-948 Mozillaでしかテストしてないんですけど
拡張子がxhtmlの場合
<?xml-stylesheet type="text/css" href="hoge.css"?>
を指定しないとツリー表示されてしまう。
拡張しがhtmlの場合(内容はxhtml)
上記のスタイルシートを指定しなくてもレイアウトされて
表示される。
結局W3C的に正しいのはどの方法なんでしょう?
CSSスタイルシートの指定も
ttp://www.w3.org/TR/xhtml1/#C_14 では <?xml-stlesheet> で指定してますよね。でも<style>
タグは今後xhtmlでも削除される予定はないみたいですし
どっちで指定したらいいんですか?
XHTMLなら両方書いとけばいいじゃん。
951 :
948:03/06/28 20:56 ID:???
>>948 追記。IEの方は、a要素がリンクになってない…
当然といえば当然だけど
>>949 だから!
XHTMLを、”XMLとして扱う” か ”HTMLとして扱う” か
の問題だってば。
解らんかな?
誰の言うことを信じたらいいんでしょうか。。
複数のXML文書から同じ名前の要素を取り出してきて
一覧に出来たら便利と思い検索してみたのですが、
複数のXSLTを使う方法は出てきても
複数のXMLを取り込んで処理する方法を見付けきりませんでした。
どうすれば良いのでしょうか…
できればJavaScript等を使わずにXML文書とXSLTだけでやれたら良いのですが。
957 :
Name_Not_Found:03/06/29 12:44 ID:gq4is7d8
>>956 XSLT 側から document() で XML のファイルを指定してやったら?
どもです。
documentで検索したらそれらしきものが出てきたのでこれから勉強してきますヽ( ´ー`)ノ
例えばfile_001〜という連番のファイルがあったとして、
<xsl:for-each select="document('file_001.xml')/foo">
<li><xsl:value-of select="bar" /></li>
</xsl:for-each>
<xsl:for-each select="document('file_002.xml')/foo">
<li><xsl:value-of select="bar" /></li>
</xsl:for-each>
以下略とこんな感じでずらっと並べてるのですが…
属性値で連番を生成できたり、
ある範囲の数字を指定する(例えばfile_001.xml-file_005.xmlのような)事は出来ますか?
regexp
961 :
Name_Not_Found:03/06/29 14:49 ID:7+f5OIBr
再帰を使って繰り返しを行い、concatでファイル名を合成する、かな
ファイルリストをXMLで書いて、
>>959のXSLを書き出すXSLを作ればいい。
すいませんテキストノードに含まれる要素の置換ってどうするのでしょうか。
例えば
<text>foo<link href="bar">bar</link>foo</text>
このようにしているのですが、これを
<p>foo<a href="bar">bar</a>foo</p>
のように、linkをaとして出力したいのです。
>>963は色々やってたら自己解決したので取り下げます。
解決策:
<xsl:template match="hoge/link">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<xsl:value-of select="text()" />
</a>
</xsl:template>
hogeじゃなくてtextです念のため…。
今度は別の問題が(つД`)
<text>foo<br /><link href="bar">bar</link>foo</text>
<xsl:template>
<p>
<xsl:value-of select="text/text()" />
<xsl:apply-templates select="text" />
</p>
</xsl:template>
<xsl:template match="text/link">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<xsl:value-of select="text()" />
</a>
</xsl:template>
<xsl:template match="text/br">
<br />
</xsl:template>
とした時に最初の一行(多分<text>〜<br />まで)が重複して表示されてしまいます。
foofoo
bar以下略
これを回避するにはどうすれば良いでしょうか…。
<xsl:value-of select="text/text()" />消す。
ちゃちい質問かもしれないけどもしかしてRSSってサイト情報じゃなくて更新情報?
RDF Site Summary
ボーッとスレ読み返してたけどXML→XHTMLとするとき、
metaとかはどうやって入れてる?
ウチは元のXML文書にその辺りの情報は入れてないんで
<xsl:element name="meta">
<xsl:attribute name="http-equiv">Content-Type</xsl:attribute>
<xsl:attribute name="content">text/html;charset=UTF-8</xsl:attribute>
</xsl:element>
とかやってるけどなんだか最近ビミョーな気がしてきて…。
>968
神崎たんのサイト行け
質問ですがXSLTで要素自体の有無による分岐は可能でしょうか。
例えば year month day と言う要素があり、
XSLTで year/month/day と言う形にして出力しているとして、
要素がない場合は ? で置き換えると言うような事をやりたいのです。
<year>2000</year><month>12</month><day>31</day>の場合、
year要素が無ければ <li>????/12/31</li>
month要素が無ければ <li>2000/??/31</li>
year要素もday要素も無ければ <li>????/12/??</li>
さらに三つの要素が全て無ければli要素を完全に出力しない、
という感じで。
chooseについては調べてみたのですが
テキストや属性がどうであればこうするという例ばかりで
要素(や属性とか)そのものがあれば真、なければ偽というやり方がわからないのです。
とか言ってたらデキター
perlのifとかと似たようなものなのね。
平時XHTML1.1で文書を作っているのですが、既存のXHTMLでは満足できなくなって
div要素に新しい日記用属性を付け加えたくなりました。
それで
<xhtml xml:lang="ja" xmlns="
http://www.w3.org/1999/xhtml" xmlns:diary="(自分のWebSiteのURL)">
として
<div diary:date="2003-07-01">
ってな記述をしてみているのですがパースエラーが発生してしまっています。
自分のWebSiteのURLをつかって勝手に新しい名前空間を名乗ったりするのはダメなんでしょうか?
また、ダメな場合どうしたら回避できる(または回避できない)のでしょうか?
教えて君ですみません。識者の方助言をお願いします。
>>977 パースエラーの発生するパーザとエラーメッセージがわからないことには
何とも言えないなあ。
>>977 XHTML 1.1そのままの文書型宣言を付けてるんじゃないの?
DTDを弄らずに勝手に新しい属性を付加してたら、
DTD読むタイプのパーサには怒られると思われ。
>>978-979 返答有り難うございます。
>XHTML 1.1そのままの文書型宣言を付けてるんじゃないの?
つけてました。そこで、改めて見てみるとおいらはパーサに
「XHTML1.1のdivにdiary:dateなんて属性はねぇぞゴラァ」(超訳)
と叱られてました。どうもすみません。
そこでXHTML1.1のDTDのCore.attribをこんな風に書き換えちゃおうかと
思ったのですが…
><!ENTITY % Core.attrib
> "%XHTML.xmlns.attrib;
(中略)
> %diary.attrib;">
><!ENTITY % diary.attrib
> "diary:date %LanguageCode.datatype; #IMPLIED">
><!ENTITY % diary.datatype "CDATA" >
(仮にこの書き換えがOKだとして(ちょっと自信ないです))これって
すでにXHTML1.1では無いわけで、つまりXHTML1.1のシステム識別子を名乗っちゃって
大丈夫なもんでしょうか?それとも、いっそ文書型宣言を削除して非検証の
整形済み文書である方がマシなんでしょうか?
なんか聞いてばっかりですみません。
>>980 てかシステム識別子ってDTDの所在なわけで、書換え後のDTDのURIを書かないと意味がない。
XHTML1.1のものを名乗るとまずいのは公開識別子。
プロセッサによっては公開識別子だけでDTDを特定する可能性がある。
<!DOCTYPE html SYSTEM "書き換えたDTDのURI"> とかすればいいんじゃない?
必要なら適当に公開識別子でっち上げてもいいと思う。
妥当性検証が明らかに不要な文書であるなら
文書型定義・宣言を無理に書くことないとも思うけどね。
検証の可能性がある文書だったら、XHTMLMODとか参考になるかも。
http://msugai.fc2web.com/web/W3C/XHTMLMOD/Overview.html 漏れだったら %Common.extra.attrib; に追加するなあ。
>>980 >>981 読めば大体大丈夫だと思うけど、付け加えて言うと、
DTD をいじるなら xmlns:diary 属性の定義をする必要がある。例えば
<!ENTITY % XHTML.xmlns.attrib
"xmlns %URI.datatype; #FIXED '%XHTML.xmlns;'
xmlns:diary %URI.datatype; #FIXED '何かURI'" >
とか。ただ、本当はわざわざ diary:date なんて属性を定義するより
Dublin Core の date 属性とかを使った方が幸せになれると思うけど。
# 「DTD を書き換える」ってのは、本当に宣言を書き換えちゃうんじゃなくて、
# 定義を追加して上書きするんだってことは分かってる…よね? (汗 念のため。
983 :
982:03/07/02 20:20 ID:???
すまん、dc:date は要素型だ。
ふと疑問に思ったのだけどXMLの読みって「えっくすえむえる」で良いのかな?
いや他に読み方あるんかいなって思う事は思うけど
たまに予想外の読み方をさせる語もあるし…。
>>988 脳内では「くすむる」として速読してる(´・ω・`)
少なくともPNGみたいに「こんな風に発音します」って公式アナウンスはない。
# 新スレに書けって…。
そなのかー。
作った人たちはどう読んでんだろ。
>990
いやぁ比較的どうでもよさそうな話題なので埋めついでに…みたいな。