XSL/XSLT (558レス)
上下前次1-新
91: 02/06/26 11:32 ID:GX1WMLoK(1/2) AAS
<xsl:apply-templates select="foo">
<xsl:sort select="a" data-type="text" order="ascending" />
</xsl:apply-templates>
でソートした結果をテンプレート処理しているのですが、
<xsl:template match="foo">
この中で処理される「foo」の前に処理された
「foo」の子要素を参照する事はできないのでしょうか?
<xsl:template>
省1
92(2): 02/06/26 15:12 ID:kyxI2iEY(1) AAS
<xsl:value-of select="preceding-sibling::foo[1]/a"/>
とかじゃだめなの。
というかもう少し具体的に。
93: 02/06/26 15:34 ID:6FYKwyrE(1) AAS
173 :参加するカモさん :02/03/12 09:46
みんなメルマガ読んでる?
あれ読むとひろゆきの性格よくわかるよ
すっごい陰湿。
根暗。
正直、引くよ。2chの管理人って、こういう奴なのかって。
176:参加するカモさん :02/03/12 11:18
ひろゆきの裁判の報告の仕方はよくわかったけど、たまには相手側の言い分も聞いてみたいね
まったく違う状況だったりしてw
177:参加するカモさん :02/03/12 11:42
省3
94(1): 02/06/26 15:51 ID:GX1WMLoK(2/2) AAS
>>92
うまく質問できていないみたいですいません。
<doc>
<foo>
<a>あ</a>
<b>111<b>
</foo>
<foo>
<a>あ</a>
<b>123<b>
省20
95: 92 02/06/26 18:05 ID:vhsxGiH5(1) AAS
こうかな、、
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="外部リンク:www.w3.org" version="1.0">
<xsl:key name="group" match="doc/foo" use="a" />
<xsl:template match="/">
<html><body><xsl:apply-templates/></body></html>
</xsl:template>
<xsl:template match="doc">
<xsl:for-each select="foo[count(. | key('group', a)[1]) = 1]">
<xsl:sort select="a" data-type="text" order="ascending"/>
省9
96: 94 02/06/26 19:29 ID:??? AAS
アドバイスありがとうございます。
そのままコピペしてテストしてみましたが、
foo[count(. | key('group', a)[1]) = 1]
でエラーがでてしまいました。
<xsl:for-each select="foo">
だとkey()で取得したノードリストが、複数でてしまいますし。
xsl:keyとkey関数を知らなかったので勉強になりました。
ちょっとこのアドバイスを元に考えてみます。
ほんとにありがとうございます!
97: 結局さぁ 02/06/27 00:28 ID:kFFjIjuv(1) AAS
XSLTってXSLの鬼っ子でしょ?
とっとと改名しる!
98: 02/07/03 10:46 ID:??? AAS
なんだか難しそうだな
99(1): 02/07/03 19:07 ID:P21eikik(1/2) AAS
Cocoon2でXSPを使ってHTMLを出力するとなぜか文字化けしちゃう。
XSPの出力エンコーディング設定ってどこですればいいんでしょうか?
100(3): Cocoon2 02/07/03 19:07 ID:P21eikik(2/2) AAS
Cocoon2でXSPを使ってHTMLを出力するとなぜか文字化けしちゃう。
XSPの出力エンコーディング設定ってどこですればいいんでしょうか?
101(3): 02/07/04 23:36 ID:QxzpOV1b(1) AAS
あるxml文書をコピーする過程で、決まった要素にだけtemplateを適用したいのですが
どーにもこーにもうまくいきません.
<xsl:template match="@*|node()" priority="2">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
としておいて、例えば要素fooだけはそのままコピーするのではなく
<xsl:template match="foo" priority="1">
<xsl:text>foo</xsl:text>
省8
102(1): 02/07/05 01:35 ID:??? AAS
>>100
ここ見れ↓
外部リンク[cgi]:www.emergence.jp
103: Cocoon2 02/07/05 10:46 ID:o63MT+vE(1) AAS
>>102
まじで感謝!
104(1): Spm 02/07/06 00:35 ID:zVcgsDeC(1/2) AAS
>>101
そりゃあ、priority属性の値の高いほうが優先してマッチしますから、
その例の下のテンプレートは適用されないに決まっているのですけど:
>どーにもこーにもうまくいきません
とのことですので、もちろん最初は、priority属性をつけないで
試しては見たのでしょう?
下のテンプレートの方が規則からいって優先度が高いのは自明ですし……
xalanてそんなものですか。いやXTから乗り換えようと思っていたので。
105: 101 02/07/06 02:17 ID:vHzD1DJG(1) AAS
>>104
すいません,書いた後に気付きました...
priority の値を逆にしてもやはり意図通りになりません.
もちろん,仰るとおり,より限定されているfoo要素の方が
優先順位が高いのは自明なのですが,苦肉の策で試してみました.
<xsl:template match="*" prioriry="0"> と
<xsl:template match="*" prioriry="1"> では
後者が確実に適用さますが,match の内容が異なるとダメみたいですね...
ちなみにXTでも試してみたのですが,xalanと挙動は同じでした.
むぅ.
106(1): 101 02/07/06 02:20 ID:??? AAS
s/prioriry/priority/g
です
107(1): Spm 02/07/06 20:49 ID:zVcgsDeC(2/2) AAS
>>106
当方のXTはきちんとfoo要素だけfooというテキストノードにしてくれてます。
priority属性もみてくれてますし。
これはxalanのせいじゃないかもしれないですね。
考えられるのは、qname(qualified name)が間違っていることくらいでしょうか。
マッチすらしてないって事です。
ソース文書のfoo要素に名前空間ついてませんか?
ルート要素にデフォルトの名前空間(xmlns="uri")つけてませんか?
名前空間を除いたものを返すからname()関数による分岐はうまくいくのでしょう。
これしか考えられないのですが、違ってたらすみません。
108(1): 02/07/07 00:44 ID:wYb8dbIP(1/2) AAS
>>107
>ソース文書のfoo要素に名前空間ついてませんか?
>ルート要素にデフォルトの名前空間(xmlns="uri")つけてませんか?
う,ビンゴです...
デフォルトの名前空間指定のないxml文書なら xalan でもうまくいきました.
ちなみに,デフォルトの名前空間がある場合にマッチさせる手段はあるのでしょうか?
match=":foo" なんて安直な方法じゃダメでした(恥)
# 「デフォルトの名前空間に関する問題は XSLT 2.0 で解決される」
# と聞いたことがあります.
109(1): Spm 02/07/07 03:49 ID:ZDF4GXlm(1) AAS
ソースファイルが
(一般的にデフォルト名前空間が使われる)
XHTMLだったとすれば:
<xsl:stylesheet
xmlns:xsl="外部リンク:www.w3.org"
xmlns:xht="外部リンク:www.w3.org"
>
と、名前空間接頭辞を定義して、
NodeTestでNameTestを使う際、その接頭辞をくっつけます。
<xsl:template match="child::xht:h1">
省5
110: 108 02/07/07 16:47 ID:wYb8dbIP(2/2) AAS
>>109
もう目からウロコです.
ばっちりです,助かりました.
ありがとうございました.
上下前次1-新書関写板覧索設栞歴
あと 448 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s