5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

XSL/XSLT

1 :名無しさん@お腹いっぱい。:01/09/05 10:49 ID:dYMWGvtU
語ろう。ていうか教えて。

2 :名無しさん@お腹いっぱい。:01/09/05 10:50 ID:dYMWGvtU
XSLT文書の実行時書き換えってどうやるんでしょう。涙。

3 :名無しさん@お腹いっぱい。:01/09/05 12:46 ID:rFbk2SFA
DOMでXSLTを生成すりゃいいんでないの?

4 :名無しさん@お腹いっぱい。:01/09/05 19:00 ID:.fOk25kQ
XSLTで読み書き可能なグローバル変数を使うにはどうしたらいいの?

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="." version="1.0" exclude-result-prefixes="msxsl user">
<xsl:output method="html" version="4.0" encoding="Shift_JIS"/>

<xsl:variable name="default_name"/>

<xsl:template match="/root">
<html lang="ja">
<head>
<title><xsl:value-of select="title"/></title>
</head>
<body>
<h1><xsl:value-of select="title"/></h1>
<xsl:apply-templates select="book" />
</body>
</html>
</xsl:template>

<xsl:template match="talk">
<xsl:if test="@name!=''">
<xsl:value-of select="@name"/>「
</xsl:if>
<xsl:if test="@name=''">
<xsl:value-of select="$default_name"/>「
</xsl:if>
</xsl:template>

<xsl:template match="defaultname">
<xsl:variable name="default_name" select="."/>
</xsl:template>

こんな感じで書いてるんだが、変数の書き換えができないみたい。
環境は MSXML3.0SP1 + MSXSL.exe

5 :名無しさん@お腹いっぱい。:01/09/06 03:57 ID:cEL2v6yw
「読み書き可能なグローバル変数」の直接の解では無いし
元の XML ややりたい事がはっきりしないので的外れかもしれんが

<xsl:variable name="default_name"/>

のところを

<xsl:variable name="default_name">
<xsl:value-of select="/root/defaultname" />
</xsl:variable>

とかにするだけではダメなのか?

6 :名無しさん@お腹いっぱい。:01/09/06 23:44 ID:???
>>5
ありがとう。
defaultname要素の場所が固定なら、それでいいかも知れない。

とりあえずはスクリプトを使っておくよ…。
さりげなく下逸マンセー

7 :名無しさん@お腹いっぱい。:01/09/10 14:21 ID:CV8.18JQ
XSLTの文法チェッカってあり?

8 :名無しさん@お腹いっぱい。:01/09/11 12:11 ID:liJMw8bE
>>2 XMLパーフェクトブック になんか書いてあるみたいだよ?
目次しかしらん。
誰か読んでない?

9 :名無しさん@お腹いっぱい。:01/09/11 14:24 ID:liJMw8bE
XSLTで、たくさんある要素をテーブルにしたいんだけど
どう書けばいいんだろう???
<datalist>
<data>a</data>
<data>b</data>
<data>c</data>
<data>d</data>
<data>e</data>
<data>f</data>
</datalist>

a b c
d e f
という表にするイメージ。

10 :名無しさん@お腹いっぱい。:01/09/11 14:30 ID:???
(´-`).。oO(HTMLのtable要素なのか、
       データベースのテーブルなのか、TeXのテーブルなのか、
       一体どのテーブルなんだろう?)

11 :名無しさん@お腹いっぱい。:01/09/11 15:05 ID:liJMw8bE
あーごみんなさい。HTMLのtable要素です。
<table>
<tr><td>a</td><td>b</td><td>c</td></tr>
<tr><td>d</td><td>e</td><td>f</td></tr>
</table>
にしたいのです。

12 :名無しさん@お腹いっぱい。:01/09/13 14:48 ID:botIizDw
<xsl:for-each select="datalist/data">
<xsl:if test="position() mod 3 = 0"><tr></xsl:if>
<td>…</td>
<xsl:if test="position() mod 3 = 0"></tr></xsl:if>
</xsl:for-each>
のようにやってみたのですが、
(1)<td>〜</td><td>〜</td><tr><td>〜</td></tr>の順に出力される
(2)<tr>が<tr>と出力されるためタグとして機能しない
という状態になっています。かなりしょんぼりしています。

13 :9:01/09/13 14:51 ID:???
>>9=>>11-12です

14 :名無しさん@お腹いっぱい。:01/09/14 21:41 ID:LySoniQw
XSLTの文法チェッカってありますか?

15 :名無しさん@お腹いっぱい。:01/09/14 21:44 ID:LySoniQw
あ。>>7さんとだぶってた。すんません。

16 :名無しさん@お腹いっぱい。:01/09/19 19:09 ID:xIy8M15c
<xsl:for-each select=".." >
...
</xsl:for-each>
の中で、<xsl:value-of select="javascript:test(.)">
などとやった場合、
function test( arg )
に渡される引数argを文字列として扱いたいんですが、
どうにもうまく行きません。どなたか分かる方いらっしゃいますか?

17 :独学XML:01/10/25 14:59 ID:9/96eztC
ふーん

18 :乙葉:01/10/27 19:23 ID:F9QxoFrS
9に便乗なんだけど、9のXMLを <xsl:for-each> を使わずに
1 a
2 b
3 c
4 d
5 e
6 f
のように出力することってできます?<xsl:variable>をインクリメントさせながら
変換していくようなイメージ…。for-eachのカウンタを変数としてとれるならそれで
もいいんですけど…。

19 :名無しさん@お腹いっぱい。:01/11/04 04:55 ID:90OzPiaz
>>18

<xsl:for-each> と <xsl:number> を組み合わせれば良いのでは?

for-eachを使わない方法なんて考えられないでしょ
<data>が6個固定とかならいざ知らず

20 :名無しさん@お腹いっぱい。:01/11/09 01:11 ID:???
>>18
<OL>
<LI>a</LI>
<LI>  (以下略.............ワラ

21 :名無しさん@お腹いっぱい。:01/12/07 15:09 ID:7lK3vz6F
>>9
かなーり遅レスですがこんな感じじゃだめですか?
<table border="1">
<tr>
<xsl:for-each select="datalist/data">
<td><xsl:value-of select="..."/><br/></td>
<xsl:if test="position() mod 3 = 0"></tr><tr></xsl:if>
</xsl:for-each>
</tr>
</table>

22 :名無しさん@お腹いっぱい。:01/12/08 21:23 ID:Tssb4f+E
他鯖にあるXMLファイルを取り込んで表示とかはできるの?

23 :9:01/12/08 21:41 ID:???
>>21 さんきゅうです

24 :名無しさん@お腹いっぱい。:01/12/20 15:56 ID:04pPLyWb
>>22
document()関数を使えばできそげ。
http://www.infoteria.com/jp/REC-xslt-19991116-jpn.htm#document

URI指定で他鯖を指定すれば良いんでないの?

ところでdocument()関数の説明に第2引数云々ってあるんだけど、
引数を2つ書くとinvalid number of function argumentsっていう
エラーがでてしまって鬱。

25 :名無しさん@お腹いっぱい。:01/12/27 18:06 ID:2WckNNJE
XSLTの仕様を見ていて湧いた素朴な疑問なんですが…
Syntax Summaryの属性で、{}がついてるのとついていないのの
違いって何なのでしょう???

たとえば↓のqnameと{ qname }です
<xsl:apply-templates
select = node-set-expression
mode = qname>
<!-- Content: (xsl:sort | xsl:with-param)* -->
</xsl:apply-templates>

<xsl:attribute
name = { qname }
namespace = { uri-reference }>
<!-- Content: template -->
</xsl:attribute>

26 :名無しさん@お腹いっぱい。:02/01/22 17:26 ID:kIM5fYXv
HTMLを出力するXSLTの中にJavaScriptを書いているのですが、
スクリプトの中で、"<"を使うにはどうしたら良いのでしょう?
&gt;や&lt;を使うと、そのまま出力されてしまい実行できません。
<[CDATA[ 〜 ]]>で囲んでも同じ感じです。
アイディアきぼんぬ、です。

可能なところは、!= で逃げているのですが、やはり大小比較は必要なのです。

27 :26:02/01/22 17:41 ID:s+GnOL1u
>>26 すんまそん。<xsl:text>でできましたでやんす。

28 :助けてー:02/01/22 22:03 ID:IcXQR5Jq
XML+XSLTでSVGを書き出し、Adobe SVGViewerで出力したいのですが
表示できません。


29 :名無しさん@お腹いっぱい。:02/01/23 00:21 ID:???
>>28
XML+XSLT→SVGの変換は何使ってやるの? IEとかmozilaとか?

30 :助けてー:02/01/23 00:59 ID:aDpAhdJs
あ、ごめんなさい。書き忘れていました。
Apache+Jakarta-tomcat+cocoonです。。

31 :名無しさん@お腹いっぱい。:02/01/23 01:19 ID:???
>>30
image/svg+xmlとして認識されていないのでは?
ていうか認識させられるのかしらん。
(namespaceの指定だけでどうにかできるのかな…ようわからん)

32 :名無しさん@お腹いっぱい。:02/01/24 09:53 ID:CFRaDXx6
>>18
<xsl:template match="datalist">
 <table>
  <xsl:for-each select="data">
   <tr>
    <td>
     <xsl:value-of seelct="position()"/>
    </td>
    <td>
     <xsl:value-of seelct="."/>
    </td>
   </tr>
  </xsl:for-each>
 </table>
</xsl:template>

うちのXSLTプロセッサだと >>21 みたいなのは怒られるんだけど
(<tr>と<xsl:if>が対応してないから)、大丈夫なのもあるのかな?



33 :名無しさん@お腹いっぱい。:02/01/28 11:04 ID:???
>>32
> うちのXSLTプロセッサだと >>21 みたいなのは怒られるんだけど
> (<tr>と<xsl:if>が対応してないから)、大丈夫なのもあるのかな?

あるわけないよ。XMLじゃないもん、それ。

34 :30:02/01/29 08:17 ID:UyexUS1t
>31
image/svg+xml指定してもだめでした。
なんどやってもAdobeのビューアーで表示できなかったんだけど
荒業でぬけることができました。

xml(+xslt→svg)をsmilのドキュメントに
<img src="target.xml">
という感じでうめこみRealPlayerでsmilを読み込ませると
svgが表示サレマした。うーん‥

35 :名無しさん@お腹いっぱい。:02/02/02 23:39 ID:KwUwsoRo
XSLTで遊んでる好例ハケーン→ http://moso.borogrammers.net/newlin/


36 :名無しさん@お腹いっぱい。:02/02/21 18:16 ID:a4ipQQMG
<xsl:choose>
 <xsl:when test="...">
  <xsl:variable name="foo" select="..."/>
 </xsl:when>
 <xsl:otherwise>
  <xsl:variable name="foo" select="..."/>
 </xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$foo"/>

で、最後の行、fooなんて変数しらねえYO!と怒られるのが不満なのは漏れだけですか?
xsl:value-of 自体を場合わけすりゃいいのはわかりますけど、なんどもそういう
場合わけをしなければならない場合はウツなんですけども…。

みなさんどうしてるか教えてYO


37 :名無しさん@お腹いっぱい。:02/02/21 18:19 ID:a4ipQQMG
あああああ

テンプレート分けて xsl:when 内で xsl:call-template すりゃ済む話か…
逝ってきます…………


38 : :02/03/08 18:28 ID:EI/igJgK
スレ違い覚悟。

apache + tomcat + 横浜ベイキットCocoon にて XSL:FO 運用を目指してます。
フォント埋め込みになっちゃうんだけど、外字を表示させるにはどうしたらいいんでしょ。


39 :nobodyさん:02/03/09 21:16 ID:gH82xLKm
>>38
横浜ベイキットCocoonってCocoon1のことかなぁ?
ApacheCocoon2なら少しは分かるかも知れんけど
そっちの話でもいい?

40 : :02/03/11 09:34 ID:ktAR11by
>>39
本当は Cocoon1.82 の話がいいんですが
やり方わかれば Cocoon2 に移行しても問題ないですので
ご教授よろしくお願いします。

41 : :02/03/14 14:42 ID:U7MOt75j
ところで Cocoon2 って日本語対応してるの?

42 : :02/03/16 12:29 ID:aNCStdKB
>>41
対応してるよん。
バージョン2.0.1の時点ではリクエストパラメータの処理に
問題がありますが、2.0.2で改善されます。

>>40
TTEditなんかで作ったフォントを
使いたいということでよろしいかな?

まずFOP単独で出力できないと話が進まないので
FOPの最新版バイナリを落してきてください。
http://xml.apache.org/dist/fop/#


43 :38:02/03/17 21:51 ID:Xcs9LUc9
>>42
まさしくその通りです<TTEdit

一応落として マバイットさんとこみたく インストールしてみました。

44 :38:02/03/17 21:54 ID:Xcs9LUc9
↑当然ながら Cocoon2 最新版までです

45 :42:02/03/19 07:45 ID:Vm7v8Ppz
>>44
すでに外字は作成済みですかな?
TTEditの外字作成機能で作ったものではなくて、
UNICODEのE000などの外字領域に直接フォントを作成した
ttfファイルが必要なのですが。

46 :qqq<:02/03/19 08:43 ID:???
asd

47 :38:02/03/19 09:55 ID:ENr4RQ8P
TTEditの質問になってしまうかもしれないのですが
Windowsについてくるフォント(MSゴシックとか)だと
外字領域に直接フォント作れるけど
他の市販モノだと「・」となっていじれないんですよねぇ。
そういったプロテクトはずす方法知ってます?

48 :42:02/03/20 20:14 ID:VQ4jw/To
>>47
外字領域書き込み可能にしたTTEDITで
新規のフォントを作って、
そこに市販のフォントを一括コピーしたら
出来るかも知れんです。

とりあえず入手した
fop-0.20.3-bin.tar.gz
を適当な場所に解凍してください。
OSはLinuxでよいですか?





49 :38:02/03/22 00:11 ID:nXgMXn31
>>48
なるほど。
一応 fop解凍しました。
OS は TurboLinuxServer でっす。

50 :42:02/03/23 00:22 ID:KjUoYuvr
>>49
外字領域に文字を作ったフォントを用意しておいてください。
あとはFOPをインストールしたディレクトリ(fop.shがある場所)に
移動して

java -cp build/fop.sh:lib/xerces-1.2.3.jar org.apache.fop.fonts.apps.TTFReader フォントファイル 出力ファイル.xml

としてやります。

例えばフリーの東風ゴシックを流用して
x-kochi-gothic.ttfというファイルを作ったとします。
/usr/local/fopにfopがあり、
/usr/local/fop/jaにフォントファイルを置いた場合は
次のようにします。

cd /usr/local/fop
java -cp build/fop.jar:lib/xerces-1.2.3.jar org.apache.fop.fonts.apps.TTFReader ja/x-kochi-gothic.ttf ja/x-kochi-gothic.ttf.xml

とりあえず以上の方法で、ちゃんと出力ファイルが出来るか
試してみてください。

51 :38:02/03/25 11:23 ID:XPZyIH2e
うおー出た出たすげー。
説明ありがとうございます。
これで世間に顔向けできます。

52 :38:02/03/25 20:12 ID:moXJH3iy
というわけで、一応出力ファイル
(これがメトリクスファイル?)
が出力されました。

この後は如何に。。。

53 :42:02/03/27 06:14 ID:7X2Z09vV
>>52
さいです。メトリクスファイルです。

次にFOPの設定ファイルを作ります。
名前は何でもよいですが、例えば
/usr/local/fop/ja/config.xml
のようにするのがよいと思われます。

設定ファイルの内容は以下のようにします。

<configuration>
<fonts>
<font metrics-file="/usr/local/fop/ja/x-kochi-gothic.ttf.xml"
kerning="yes"
embed-file="/usr/local/fop/ja/x-kochi-gothic.ttf">
<font-triplet name="Gothic" style="normal" weight="normal"/>
</font>
</fonts>
</configuration>

この例はx-koichi-gothic.ttfをGothicというフォント名で使えるようにしてます。ttfとメトリクスの名前は実際につかうものに書き換えてください。

次回はいよいよPDFを出力します...



54 :38:02/03/27 17:54 ID:MgQyiA49
なるほろ。
コピー&ペーストで設定ファイル作りました。

とうとうPDF出力ですか ニヤリ

55 :42:02/03/30 13:59 ID:u2FWmlwu
XSL-FOに外字を埋め込む時は、&#を使って文字コードを
UNICODEで指定してやります。
例えばE000に文字を定義したならとします。
次のサンプルをsample.foという名前で保存してください。

で、あとは
./fop.sh -c 設定ファイル FOファイル PDFファイル
としてやればPDFが出てきます。

例えば
./fop.sh -c ja/config.xml sample.fo sample.pdf
として、出てきたPDFをWindowsのアクロバットリーダーで
開いたら、ちゃんと外字が出るはずです。


56 :サンプルだよん:02/03/30 14:00 ID:u2FWmlwu
<?xml version="1.0" encoding="EUC-JP"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="simple"
page-height="29.7cm"
page-width="21cm"
margin-top="1cm"
margin-bottom="2cm"
margin-left="2.5cm"
margin-right="2.5cm">
<fo:region-body margin-top="3cm"/>
<fo:region-before extent="3cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-name="simple">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="24pt"
font-family="Mincho">
外字だよん→
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>


57 :42:02/03/30 14:03 ID:u2FWmlwu
2chだと勝手に文字が変換されるようですな。

外字だよん→・

の部分は

外字だよん→&#xE000

&はもちろん半角ね
です。

58 :38:02/04/02 19:43 ID:W7Q/zpoW
おーおー
確かにPDF出力できました。

さて、次は Cocoon2 連携ですな。

59 :42:02/04/03 22:35 ID:pbEHoyE1
3/25にリリースされたCocoon2.0.2を試してみましたが、
Cocoonのバグのためにフォントが設定できませんでした。

今、修正版を準備してます。
明日にでもうpするので、しばし待ってください。


60 :あぼーん:あぼーん
あぼーん

61 :42:02/04/04 21:42 ID:b//D81ae
とりあえずうpしたので
下の物を落としてきてください
http://218.130.228.56:4040/c2.tgz


62 :38:02/04/05 09:34 ID:gSye2Xnn
落とすは落としました。
単に解凍すればいいのかな?

63 :42:02/04/06 14:30 ID:XfqBDhEm
とりあえず、
まだ入れてなければJDK1.4とTomcat4.0.3LEを
入れておいてください。

64 :38:02/04/06 21:21 ID:ECdvWQTo
tomcat は 3.x ではなく 4.x なんですね。
了解しました。

65 :nobodyさん:02/04/06 22:21 ID:p5+bp4EQ
JDK1.4でCocoon2を使えますか?
Cocoon2のソース取って来てビルドかけても
ビルド通らないんで、妥協してJDK1.3使ってるんですが。


66 :42:02/04/07 09:11 ID:aptyKfg7
以下のJDK1.4対応版Tomcatで動作を確認してます。
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/bin/jakarta-tomcat-4.0.3-LE-jdk14.tar.gz
Cocoonはバイナリ版でも動きました。

tomcatを/usr/localあたりに解凍して、
c2.tgzを展開したら出てくるc2フォルダを
tomcatのwebappフォルダの中に置いてください。
さらに、c2/WEB-INF/lib/batik-all-1.5b1.jarを
tomcatのcommon/libにコピーしてください
tomcatの起動はXWindow内でするか、
Xvfb使ってください。
これでhttp://localhost:8080/c2/
にアクセスできるはずです。



67 :65:02/04/10 21:49 ID:???
どうも、65です。
LE板じゃないtomcat使ってたのが動かない原因でした。
失礼しました。


68 :38:02/04/16 13:13 ID:BXQRKCQc
かちゅ〜しゃであぼーんされたと表示されたので
最後の最後でとがっかりしてましたが、ブラウザで
見たら、最終動作確認まで書き込みされていてほっとしました。

早速試してみます。

69 :nobodyさん:02/04/19 00:59 ID:CkxCgoEa
中途半端な手続き言語XSLTはいらん
仕様から廃止しろ

70 : :02/04/23 22:43 ID:CN3t/tua
ってか、
apache1.24 + tomcat3.2.4 + cocoon2.0.2 の
インストールがうまくいかん!

どうして tomcat 立ち上げると core 吐いて落ちるんじゃー

71 : :02/04/23 22:44 ID:CN3t/tua
↑いやん
× 1.24
○ 1.3.24

72 :nobodyさん:02/05/22 16:48 ID:???
XSLTで複数のキーについてソートしたい場合はどうすればいいのでしょうか?

SQLだと、
select foo, bar from tee order by foo, bar
というように書けますけど、XSLTだと可能なのでしょうか?

73 :72:02/05/24 12:47 ID:???
>72
<xsl:sort select="foo"/>
<xsl:sort select="bar"/>
でできました。

74 :Name_Not_Found:02/05/29 14:44 ID:FW6HquND
もういいかげん、XSL と XSLT をいっしょに扱うことに無理がある

XSLT は XTransform とかに改名すれ

75 :non:02/05/29 15:16 ID:8Y6vpIWK
COCOON2にて日本語を利用可にする
設定方法、設定ファイル等
教えてください。

76 :tachan:02/05/30 17:53 ID:2EIuRR3F
COCOON2にてXSPを利用しようと思います。

ここで自分で作成したCLASSにCLASSPATHを通すには
どうしたらよいのでしょうか?

XSPのコンパイルの時点でjava.lang.NoClassDefFoundError
となります。

sitemap.xmapなのかcocoon.xconfなのかわかりません。


77 :nobodyさん:02/05/30 18:29 ID:???
>>75
こちらでは問題ないがOSは何だ? あとGeneratorやTransformerは
何を使ってるんだ?

>>76
/Tomcat/webapps/cocoon/WEB-INF/classesに置くのは駄目なのか?

78 :77:02/05/30 18:33 ID:???
>>75
http://www.emergence.jp/mail-archive/ci/index.cgi?mss:54:200205:dmoeikbhogokbpdjofji
ではどうだ?

79 :nobodyさん:02/05/31 02:56 ID:HNPPjz0j
http://www.ascii.co.jp/books/detail/4-7561/4-7561-4065-3.html
この本はどうですか?
値段が高いので迷っています。

80 :non:02/05/31 10:08 ID:XfZ+NB0u
勉強不足ですいません。
OSは、Redhat7.2です。

Generator,Transformerについては、
勉強不足で知らないのですが、
sitemap.xmapの内容でしたら、

Generator:JspGenerator
Transformer:TraxTransformer

となっております。
見当違いでしたらすいません。

81 :nobodyさん:02/05/31 10:15 ID:???
>>80
JSPを使っているのであれば、単純に普通のTomcatでそのJSPファイルを
指定したときに、文字化けは起こってないか? JSPの中でのエンコーディングの
指定がまずいような気がするが。

もし上記でJSPファイルの問題でないのなら、普通にXMLファイルを作ってみて、
SitemapでFileGeneratorに指定してあげてそちらだと文字化けが起こるかどうかを
確認してみてくれ。

それと、そもそも文字化けを確認しているブラウザもRedhat上かな?

82 :nobodyさん:02/06/01 23:15 ID:???
>>76
TOMCAT_HOME/webapps/cocoon/WEB-INF/web.xml
を触ればよい。

<init-param>
<param-name>extra-classpath</param-name>
<param-value>ここで指定する</param-value>
</init-param>

83 :tachan:02/06/03 14:25 ID:Yq6AJPGD
>TOMCAT_HOME/webapps/cocoon/WEB-INF/web.xml
>を触ればよい。
><init-param>
><param-name>extra-classpath</param-name>
><param-value>ここで指定する</param-value>
></init-param>

上記の設定ファイルを指定したら
XSPのコンパイルエラーなくなりました。

本当にありがとうございました。



84 :あぼーん:あぼーん
あぼーん

85 :>:02/06/06 13:34 ID:CeCgqXVC
21は33の言うとおり。
試してもいない21のコードに
9も試してもいないのに感謝する必要はない。

で,結局
</tr><tr>
は,
<xsl:text disable-output-escaping="yes"></tr><tr></xsl:text>
とすればOK。

86 :85:02/06/06 13:38 ID:CeCgqXVC
ちぇっ,展開されちった。
めんどいから全角で書くよ。
85のは
<xsl:text disable-output-escaping="yes">&lt;/tr&gt;&lt;tr&gt;</xsl:text>
ということね。

87 :nobodyさん:02/06/09 17:09 ID:???
普通のレンタルサーバとかでサーバサイドのXSLT変換ってできる?

88 :nobodyさん:02/06/11 00:22 ID:qDeG/JWs
>>87
Perl使ってるんならこことか見てみたらどうかな。
http://www-6.ibm.com/jp/developerworks/xml/j_perl-xml-toolkit.html

89 :nobodyさん:02/06/14 16:06 ID:???
>86
<element name="tr" />
ではあかんか?

90 :nobodyさん:02/06/15 00:30 ID:???
>>9
<xsl:template match="/">
<table>
<xsl:for-each select="datalist/data">
<xsl:if test="position() mod 3 = 1">
<tr>
<xsl:for-each select=".|following-sibling::data[position() &lt; 3]">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>

91 :nobodyさん:02/06/26 11:32 ID:GX1WMLoK
<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>

アドバイスいただけませんでしょうか。


92 :nobodyさん:02/06/26 15:12 ID:kyxI2iEY
<xsl:value-of select="preceding-sibling::foo[1]/a"/>
とかじゃだめなの。
というかもう少し具体的に。

93 :nobodyさん:02/06/26 15:34 ID:6FYKwyrE
173 :参加するカモさん :02/03/12 09:46
みんなメルマガ読んでる?
あれ読むとひろゆきの性格よくわかるよ
すっごい陰湿。
根暗。
正直、引くよ。2chの管理人って、こういう奴なのかって。

176:参加するカモさん :02/03/12 11:18
ひろゆきの裁判の報告の仕方はよくわかったけど、たまには相手側の言い分も聞いてみたいね
まったく違う状況だったりしてw

177:参加するカモさん :02/03/12 11:42
ひろゆきさんっては自分の都合の良いことしか報告しないし、都合が悪くなると
報告しなくなっちゃうんだよね、、
それにしてもひろゆきさんてば見事に陰湿な文章書くなあ。。

94 :nobodyさん:02/06/26 15:51 ID:GX1WMLoK
>>92
うまく質問できていないみたいですいません。

<doc>
 <foo>
  <a>あ</a>
  <b>111<b>
 </foo>
 <foo>
  <a>あ</a>
  <b>123<b>
 </foo>
 <foo>
  <a>い</a>
  <b>324<b>
 </foo>
 ・
 ・
 ・
</doc>

というようなXMLをXSLでHTML変換する際に
foo/aの値でfooをソートして出力します。
その際aの値が「あ」から「い」に変わる時だけ
例えば<hr>を挿入したいと思っています。

使用しているのはIE6です。

ちょっとまだ良く分かってないところが多いので
うまく説明できてないかもしれませんが。

先ほど教えていただいた

<xsl:value-of select="preceding-sibling::foo[1]/a"/>

はエラーになってしまいます。(エラー自体が文字化け)
長くなってすいません。


95 :92:02/06/26 18:05 ID:vhsxGiH5
こうかな、、

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 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"/>
<xsl:for-each select="key('group', a)">
<xsl:value-of select="a" />
<xsl:value-of select="b" />
<br />
</xsl:for-each>
<hr/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

96 :94:02/06/26 19:29 ID:???
アドバイスありがとうございます。

そのままコピペしてテストしてみましたが、
foo[count(. | key('group', a)[1]) = 1]
でエラーがでてしまいました。

<xsl:for-each select="foo">
だとkey()で取得したノードリストが、複数でてしまいますし。

xsl:keyとkey関数を知らなかったので勉強になりました。
ちょっとこのアドバイスを元に考えてみます。
ほんとにありがとうございます!




97 :結局さぁ:02/06/27 00:28 ID:kFFjIjuv
XSLTってXSLの鬼っ子でしょ?
とっとと改名しる!

98 :nobodyさん:02/07/03 10:46 ID:???
なんだか難しそうだな

99 :nobodyさん:02/07/03 19:07 ID:P21eikik
Cocoon2でXSPを使ってHTMLを出力するとなぜか文字化けしちゃう。
XSPの出力エンコーディング設定ってどこですればいいんでしょうか?


100 :Cocoon2:02/07/03 19:07 ID:P21eikik
Cocoon2でXSPを使ってHTMLを出力するとなぜか文字化けしちゃう。
XSPの出力エンコーディング設定ってどこですればいいんでしょうか?


101 :nobodyさん:02/07/04 23:36 ID:QxzpOV1b
ある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>
</xsl:template>

このtemplateが適用されて欲しいのですが、priority属性が効いてくれないみたいです。
というか根本的に考え方が違うのかもしれません。

最初のtemplate中で<xsl:when test="name()='foo'">を使って分岐させれば
うまく(意図通りに)いくのですが、どうもスマートでないような気がします。

濃ゆいスレにそぐわない質問かもしれませんが、
よい方法があれば教えてください。

あ、環境はxalan+jdk1.3.0です。


102 :nobodyさん:02/07/05 01:35 ID:???
>>100
ここ見れ↓
http://www.emergence.jp/mail-archive/ci/index.cgi?mss:54:200205:dmoeikbhogokbpdjofji


103 :Cocoon2:02/07/05 10:46 ID:o63MT+vE
>>102
まじで感謝!


104 :Spm:02/07/06 00:35 ID:zVcgsDeC
>>101

そりゃあ、priority属性の値の高いほうが優先してマッチしますから、
その例の下のテンプレートは適用されないに決まっているのですけど:

>どーにもこーにもうまくいきません

とのことですので、もちろん最初は、priority属性をつけないで
試しては見たのでしょう?
下のテンプレートの方が規則からいって優先度が高いのは自明ですし……

xalanてそんなものですか。いやXTから乗り換えようと思っていたので。

105 :101:02/07/06 02:17 ID:vHzD1DJG
>>104
すいません,書いた後に気付きました...
priority の値を逆にしてもやはり意図通りになりません.

もちろん,仰るとおり,より限定されているfoo要素の方が
優先順位が高いのは自明なのですが,苦肉の策で試してみました.

<xsl:template match="*" prioriry="0"> と
<xsl:template match="*" prioriry="1"> では
後者が確実に適用さますが,match の内容が異なるとダメみたいですね...

ちなみにXTでも試してみたのですが,xalanと挙動は同じでした.
むぅ.


106 :101:02/07/06 02:20 ID:???
s/prioriry/priority/g
です


107 :Spm:02/07/06 20:49 ID:zVcgsDeC
>>106
当方のXTはきちんとfoo要素だけfooというテキストノードにしてくれてます。
priority属性もみてくれてますし。
これはxalanのせいじゃないかもしれないですね。

考えられるのは、qname(qualified name)が間違っていることくらいでしょうか。
マッチすらしてないって事です。
ソース文書のfoo要素に名前空間ついてませんか?
ルート要素にデフォルトの名前空間(xmlns="uri")つけてませんか?

名前空間を除いたものを返すからname()関数による分岐はうまくいくのでしょう。

これしか考えられないのですが、違ってたらすみません。

108 :nobodyさん:02/07/07 00:44 ID:wYb8dbIP
>>107
>ソース文書のfoo要素に名前空間ついてませんか?
>ルート要素にデフォルトの名前空間(xmlns="uri")つけてませんか?

う,ビンゴです...
デフォルトの名前空間指定のないxml文書なら xalan でもうまくいきました.

ちなみに,デフォルトの名前空間がある場合にマッチさせる手段はあるのでしょうか?
match=":foo" なんて安直な方法じゃダメでした(恥)

# 「デフォルトの名前空間に関する問題は XSLT 2.0 で解決される」
# と聞いたことがあります.


109 :Spm:02/07/07 03:49 ID:ZDF4GXlm
ソースファイルが
(一般的にデフォルト名前空間が使われる)
XHTMLだったとすれば:

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xht="http://www.w3.org/1999/xhtml"
>
と、名前空間接頭辞を定義して、
NodeTestでNameTestを使う際、その接頭辞をくっつけます。

<xsl:template match="child::xht:h1">
リテラルなど
</xsl:template>

これはカレントノードがh1要素だった場合にマッチするでしょう。

# default-xpath-namespace属性っていうものらしいですね。
# http://www.w3.org/TR/xslt20/#unprefixed-qnames より


110 :108:02/07/07 16:47 ID:wYb8dbIP
>>109
もう目からウロコです.
ばっちりです,助かりました.
ありがとうございました.


111 :nobodyさん:02/08/11 23:48 ID:77b+zq0z
XSLTは変数の値変更できなくて不便でしょうがないので、
もう使用しないことにした。

112 :nobodyさん:02/08/16 08:50 ID:q4PLH8KO
初めてXMLを扱うものですが、たのしいXMLの
http://www.cityfujisawa.ne.jp/~yanai/xml/sample2/basic1/home.html
ここを改造してソースを作っているのですが、うまくいきません。

とりあえず三つのソースを作りました。

-- test4.html --
<html>
<head>
<title>test4</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<xml id="list" src="testxml.xml"></xml>
<xml id="c1" src="c1.xsl"></xml>
<script language="JavaScript">
<!--
function inner() {
here.innerHTML = list.transformNode(c1.documentElement);
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form>
<input type="button" value="c1" onClick="inner()">
</form>
<div id="here"></div>
</body>
</html>


113 :112のつづき:02/08/16 08:50 ID:q4PLH8KO
-- testxml.xml --
<?xml version="1.0" encoding="Shift_JIS" ?>
<test>mod</test>

-- c1.xsl --
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<p>before<xsl:value-of select="test@pid" />after</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

ここでtest4.htmlをクリックして

beforemodafter

と表示させれば成功なのですが、beforeafterとしか表示されません。
「たのしいXML」のソースを極めて胆略化した形で作ったのですが、うまく動かないのです。

どこが原因なのでしょうか。教えてください。

114 :112:02/08/16 11:12 ID:???
>>113
ちょっと訂正


<p>before<xsl:value-of select="test@pid" />after</p>


<p>before<xsl:value-of select="test" />after</p>

115 :Spm:02/08/16 14:52 ID:WjrAiya2
c1.xsl のxsl:stylesheetに、version="1.0" を追加してください。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

これで駄目ならスレ違い。MSXMLの話題になります。

116 :nobodyさん:02/08/20 03:03 ID:???
>>112
そこねー、たまに間違いあるよね(苦笑)

117 :112:02/08/21 04:32 ID:???
原因がわかりました。
115さんの Version の記述忘れもそうなんですが、xmlns をxmlns:xsl="http://www.w3.org/1999/XSL/Transform にしてました。
つまり、僕が作る場合、閲覧者をIE5.0のXMLパーサー無しの環境で見てるのを前提に作らなきゃいけないので、自分のパソコンを同じ環境にしてあります。

で、
xmlns:xsl="http://www.w3.org/TR/WD-xsl
としたら表示できました。

118 :K's:02/08/30 14:43 ID:mcp2WYS4
XML初心者です。勉強をしているのですが、sortがうまく動きません。
下記にサンプルプログラムがありますが実際コピペして表示させたのですが
まったく表示されず、またエラーも出ません。sortの使い方教えていただけない
でしょうか。ちなみにIE5.0を使用しています。また使い方が間違えてるようでしたら
指摘ください。
「XML文書」
<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type="text/xsl" href="sort.xsl"?>
<kakaku id="kakaku">
<title price="1500">ガイドブック</title>
<title price="2000">XML</title>
<title price="900">会社案内</title>
<title price="800">デジカメ</title>
<title price="1000">インターネット</title>
</kakaku>
「xsl文書」(BODY要素内のみ記述です)
<xsl:for-each select="kakaku">
<h2>価格詳細表</h2>
<table border="2px"><xsl:apply-templates match="title" /></table>
</xsl:for-each>
<xsl:for-each select="title">
<xsl:sort select="./@price" lang="UTF-8" data-type="number" order="ascending" />
<tr><td><xsl:value-of select="./@price" />(税別)円</td><td><xsl:value-of select="." /></td></tr>
</xsl:for-each>


119 :nobodyさん:02/08/30 16:57 ID:???
>>118
<xsl:apply-templates match="title" />のあとに<xsl:for-each select="title">がなぜ?
というのは置いといて、恐らく
  select="./@price"

  select="@price"
ではないかと。下のvalue-ofも。

も一つ考えられるのは、>>118のmsxml.dllが古くて、XSLTの名前空間がドラフトなのではないか?と
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
でなくて
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
ってなってない?
だとするとソートは、
  <xsl:for-each select="title" order-by="number(@price)">
と書けば上手くいくはず。

120 :Spm:02/08/30 21:56 ID:???
>>119
RelativeLocationPath ::= Step
| RelativeLocationPath '/' Step | AbbreviatedRelativeLocationPath

かつ、

Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep

かつ、

AbbreviatedStep ::= '.' | '..'

[参照] http://www.w3.org/TR/xpath

というわけで、./@price は合法のようです。

> <xsl:apply-templates match="title" />のあとに<xsl:for-each select="title">がなぜ?
どこから>>118がこのサンプルを持ってきたのか気になりますな。

121 :nobodyさん:02/09/03 09:22 ID:???
>>120
> どこから>>118がこのサンプルを持ってきたのか気になりますな。

気になる・・・あれからレスもついてないし。

122 :K's:02/09/03 09:47 ID:UYWG+Uf9
レス遅くなってすいません。社内のPCの台数が決まっていてなかなか
使用できないもので。。。
で、教えていただいた通りにやってみたのですがやはり表示されません。
それとこのサンプルは今となってはわかりませんがどっかのHPから
コピペしてきたものです。
<xsl:apply-templates match="title" />のあとに<xsl:for-each select="title">
書いたのはapply-templates match="title" いかにfor-each select="title"を
適用すると解釈しているのですが。。。間違ってます?


123 :nobodyさん:02/09/03 12:03 ID:???
>>122
んー。テンプレート系エレメントについてもう少し勉強した方がいいかも。
sortの使い方云々よりもxsl文書が正しく書けていないと思う。
もっとXSLTの各エレメントの意味をよく理解しましょう。

124 :nobodyさん:02/09/04 23:35 ID:???
W3Cムカツク。
あんなアフォどもに好き勝手にさせてて委員会?

125 :nobodyさん:02/09/06 01:19 ID:ultmv2D3
>>118
<?xml:stylesheet じゃなく <?xml-stylesheet だよ。こっちはハイフン。

126 :nobodyさん:02/09/06 23:19 ID:???
>>124
禿同!
あんなバカどもに任せておけないよ。

127 :bloom:02/09/06 23:31 ID:PkazN1aJ

http://www.leverage.jp/bloom/start/

128 :nobodyさん:02/09/06 23:48 ID:???
>127
なんかrefreshとか書いたMETAタグしかない小さなソースだけど、
ブラクラか何か?

129 :nobodyさん:02/09/07 03:30 ID:???
>>126
気合いだけは一人前ですね(^^)

130 :nobodyさん:02/09/09 12:28 ID:GqnKQPj5
xsltで質問です。
xsl:variableを使って変数を定義する方法を覚えたんですが、DOMを使って外部から変数を定義する方法ってあるんでしょうか?
たとえばxmlを
<hoge>
<fuga id="1">foo1</fuga>
<fuga id="2">foo2</fuga>
<fuga id="3">foo3</fuga>
</hoge>
として

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="hoge/fuga">
<html>
<xsl:if test="@id='$bar'"> ←@
<xsl:value-of select="." />
</xsl:if>
</html>
</xsl:template>
</xsl:stylesheet>

と作ったとすると
<xsl:variable name="bar">1</xsl:variable>
みたいに定義することを外部からできるでしょうか?

もしくはDOMを使って
bar=3
みたいに定義できるのでしょうか?



131 :nobodyさん:02/09/09 13:20 ID:???
W3C・・・・無能であることは確かだ。

132 :nobodyさん:02/09/09 15:14 ID:???
>>130
http://pc.2ch.net/test/read.cgi/php/984851406/129-130

133 :nobodyさん:02/09/09 19:45 ID:???
>>130
selectSingleNode()で検索してみれ

134 :nobodyさん:02/09/15 22:02 ID:???
ノードの在る無しという条件で、
処理を分岐するというのがどうすればいいのかよくわかりません。

<xsl:choose>
<xsl:when test='?????'> ←ここ
.......処理
</xsl:when>
<xsl:otherwise>
.......別の処理
</xsl:otherwise>
</xsl:choose>

?????にどう書けばいいのかな。




135 :nobodyさん:02/09/15 23:45 ID:???
>>134

そのままノード名でいいんじゃ。
id属性だったら <xsl:when test="@id">...言ってること違ったらゴメソ。

136 :134:02/09/17 01:32 ID:???
レスサンクス。
質問が悪かった。XMLソースがないとわかるわけないね。

<parent>
 <context>
<childa>.......</childa> ←この部分が在ったり無かったりする。
</context>
<context>
</context>
</parent>

とりあえず今は、2つのXSLTファイルを用意して、
対応してる。

137 :Spm:02/09/17 01:59 ID:0xmOo3Ol
>>134 = >>136

>>135氏の言うとおりでは。ノード集合そのまま。例えば:
<xsl:when test="child::childa">

<xsl:choose>要素をどういう文脈で使っているかにも依存するので、
一概にchild::childaで良いとは言えませんが。
カレントノードは何ですか?

test属性値については、boolean関数が適用されます。
http://www.w3.org/TR/xpath#function-boolean
test属性値にノード集合を指定した場合、空ならfalse、それ以外はture.


138 :134=136:02/09/17 02:50 ID:???
でキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!!!!!!

皆さんサンクスです。
試していたはずなのですが、
スペルミスなり、確認ミスなり、うっかりしてなりで見逃していた模様。

本当にありがとうございました。


139 :nobodyさん:02/09/17 18:11 ID:???
書きこみ少ないなぁ。
このままじゃ、某XML Pressみたいに、
このスレも消滅してしまうかも。

140 :nobodyさん:02/09/18 11:14 ID:hvk3cr7f
じゃ、<age>


141 :nobodyさん:02/09/18 15:01 ID:???
いや、<age/> だ。

142 :141:02/09/18 15:02 ID:???
ていうか <sage/> ちゃった。

143 :nobodyさん:02/09/18 15:12 ID:???
>>141, >>142
XMLタグの使い方間違えたから1番上に来ちゃったぞ


144 :nobodyさん:02/09/18 15:15 ID:???
ここですか、XMLタグの使えない人々の集まるスレは


145 :JTR:02/09/25 19:45 ID:y/qFoSLv
ソフト・リサーチ・センターからCocoon2の書籍がでるみたい。
出版社のHPで目次見たけど結構よさげ。
たぶんC2の専門書って日本ではこれが最初かも。

それにしてもC2を仕事で使ってる人ってどれくらい
いるんだろうか。パフォーマンス的には問題ないのかな。

146 :nobodyさん:02/09/25 20:00 ID:???
>>145
C2仕事で使ってるYO パフォーマンスはServletでSAX使ったアプリ書いた
のと同じ程度だYO(そのまんまじゃん)

C2自体がパフォーマンスの足を引っ張るというよりも、サーバのスペックとか
DBの性能とかが重要だねやっぱり。

147 :nobodyさん:02/10/02 00:23 ID:???
他板でこんなスレ見つけました。

XML使いの板
http://pc3.2ch.net/test/read.cgi/hp/984950028/
レベル低め、XSLT中心、WEBでの利用。

他にXML語れる所知りませんか?

148 :nobodyさん:02/10/02 11:18 ID:???
>>上様
こんなの。
XML [WebProg]
コンテンツとデザインの分離 [WebProg]
XMLの必要性 [プログラム]
XMLプログラミング [プログラム]
XMLを限り無くオカルトに語る [心と宗教]


149 :147:02/10/02 14:08 ID:???
>>148
サンクス
全部見てきたよ。

……最後のスレ、こいつは…

150 :nobodyさん:02/10/05 16:58 ID:eN4sGb4j
普通のプロバに設置するCGIでXLSTできないかなあ

151 :nobodyさん:02/10/05 23:24 ID:???
>>150
IEならXSLT入ってるぞ。

 …てのはだめなんだよな。
おれも情報きぼん

152 :nobodyさん:02/10/07 05:30 ID:???
拾ってきた
http://pc3.2ch.net/test/read.cgi/tech/1014643296/147

153 :nobodyさん:02/10/11 04:30 ID:???
XSLTパーサのXERCESをインストールしようとしているのですが,うまくいきません.
解凍した後,コマンドラインから

SET CLASSPATH=%CLASSPATH%;C:\Xerces\xerces.jar

と入力しましたが,サンプルで試した所,

Exception in thresd "main" java.lang.NoClassDeFoundError

となってしまいました.バージョンは2.2.0です.
お分かりになる方,よろしくお願いします.


154 :nobodyさん:02/10/15 01:38 ID:okBjBmnc
>>153
サンプルを実行したとき、何てコマンドラインに入力したんだよ

java -jar xxxx.jar か?

155 :nobodyさん:02/10/29 00:17 ID:???
XMLからXSLT変換で、違う形式のXMLファイルを出力したとしよう。
変換後のXMLファイルと、変換に使ったXSLTファイルを用いて、
元のXMLファイルを再現できるものだろうか?

変換
XML[A] + XSLT → XML[B]

戻す。
XML[B]の情報 + XSLTの情報 → XML[A]

156 :nobodyさん:02/10/29 19:23 ID:???
>>155
問題になるのは変換時に捨ててしまった情報をどうするかだと思われ。


157 :nobodyさん:02/10/29 23:52 ID:???
完全な再現は出来ないと思う。
同じXSLTを使って、おなじXML[B]を生成するのなら、出切るかもしれない。
いや、正直わからん。俺頭悪いし。

158 :八べえ:02/11/12 15:09 ID:gxn/By35
Cocoon2を使用して、WEB表示を行うとソースに
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
が追記されてしまいます。
これにより、Shift-JISで書いているxml,xsltが文字化けを起こしています。
sitemap.xmap,cocoon.xconfをみてもそれらしき設定が見当たりません。
どのようにしたら、追記されなくなるのでしょうか?




159 :bloom:02/11/12 15:36 ID:VFQMwTMk

http://homepage.mac.com/bloombloom/

160 :HTMLをSJISで表示:02/11/13 10:55 ID:oYHYr3JM
>>158
docs/samples/hello-page.xml
<?xml version="1.0" encoding="Shift_JIS"?>
を入れると、正常なUTF-8に変換されるので、文字化けしない。
結果charset=UTF-8

xslt の中のoutput は利かない。
結果htmlも、SJISにする場合は、serializer に指定する。
html serializer に、sjis 版追加
<map:serializer name="html-sjis" logger="sitemap.serializer.html" mime-type="text/html" pool-grow="4" pool-max="32" pool-min="4" src="org.apache.cocoon.serialization.HTMLSerializer">
<buffer-size>1024</buffer-size>
<encoding>Shift_JIS</encoding>
</map:serializer>
hello.html のマップをコピーして sjis バージョンを作る
<map:match pattern="hello-sjis.html"><!-- ここ**-->
<map:generate src="docs/samples/hello-page.xml"/>
<map:transform src="stylesheets/page/simple-page2html.xsl"/>
<map:serialize type="html-sjis"/><!-- ここ**-->
</map:match>

ばんざーい。 これで完成 結果charset=Shift_JIS

161 :XMLをSJISで出力:02/11/13 11:03 ID:oYHYr3JM
hello.html を指定すると UTF-8版が表示され、
hello-sjis.html を指定すると、 SJIS版が表示されるようになる。

別件だが
xml の出力の中の encoding=UTF-8 を変更する場合は、xslt の中で、
<xsl:output omit-xml-declaration="no" encoding="Shift_JIS"/>
とかやると良い。

162 :160=161:02/11/13 15:02 ID:fcqFiIq0
>>160 = >>161

ばんざ〜い!!
みなさんありがとうございました。
無事、SJIS表示できるようになりました。

163 :教えて下さい:02/11/13 17:52 ID:fcqFiIq0
xslの全ての<xsl:value-of select=....>の項目に、
「disable-output-escaping="yes"」を指定したいのですが、
まとめて設定するにはどのようにしたらよいのでしょうか?


164 :nobodyさん:02/11/15 22:35 ID:Q0ofQCcS
disable-output-escaping="yes" を <xsl:value-of に追加する
XSLT を書いて XSLT を変換...


165 :nobodyさん:02/11/15 23:27 ID:y2tgiCuR
エディタで一括変換

166 :nobodyさん:02/12/09 01:32 ID:eA2V6vYL
すごい単純な質問なんですけど、

<a>
<xsl:attribute name="href">
<xsl:value-of select="@url" />
</xsl:attribute>
<xsl:attribute name="target">
_self
</xsl:attribute>
<xsl:value-of select="@url" />
</a>

とXSLでリンクを作ったんですが、targetを _self にしても、_blank みたいに別ウィンドウでリンク先が表示されてしまいます。
_self や _top のように別ウィンドウを開かないでリンク先を表示させるにはどうすればいいのでしょうか?

167 :166:02/12/09 01:51 ID:???
自己レスです。

<xsl:attribute name="target">_self</xsl:attribute>

と繋げればうまくいきました。どうも間にリターンがあったのが原因みたいです。

168 :nobodyさん:03/01/06 07:36 ID:???
DTDで
<!ENTITY foo SYSTEM "bar.xml">

を XML schema で表現するにはどうすればいいんですか?

169 :nobodyさん:03/01/06 07:44 ID:L2+zJcVG
しまった、ageておこう

170 :山崎渉:03/01/15 13:36 ID:???
(^^)

171 :nobodyさん:03/01/22 05:21 ID:vujRJlnb
i love love generation

172 :ぱむ:03/01/28 17:32 ID:IBfGocF/
cocoonのsitemap.xmapで2つ以上のxmlを1つのxslに適用したい場合は
どうすればいいんですか?
<map:generate src="aaa.xml"/>
<map:generate src="bbb.xml"/>
<map:transform src="ccc.xsl"/>
とすると「適用出来るxmlは1つだけ」というエラーが出てしまいます。
だれか宜しくお願いします。


173 :nobodyさん:03/01/29 13:27 ID:L9yee78Z
xmlは死んだ

174 :nobodyさん:03/02/11 22:52 ID:K0N8t3Ee
xmlは死んだ

175 :nobodyさん:03/02/12 17:42 ID:rtj1FkeB
MS、XDocsの正式名称「InfoPath」発表

http://www.zdnet.co.jp/news/0302/12/nebt_21.html

MicrosoftはInfoPathで作成したフォームを使い
医療電子データ交換用形式で送るデモも実施。
同社はXFormsではなくXSLTの採用を決定



176 :nobodyさん:03/02/12 17:56 ID:gzTJY/OJ
http://www.agemasukudasai.com/bloom/

177 :nobodyさん:03/02/20 19:11 ID:ywFHezDA
名前空間接頭辞 foo と bar を使った xml 文書があります.
----------
<foo:root xmlns:foo="http://foo-namespace" xmlns:bar="http://bar-namespace">
 <bar:e1>this is <foo:e2>a</foo:e2> pen. </bar:e1>
</foo:root>
----------
これを以下の xslt に食わせて,
foo に属する要素を全て bar の要素に変換します.
----------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:foo="http://foo-namespace" xmlns:bar="http://bar-namespace" version="1.0">
<xsl:output indent="yes" omit-xml-declaration="yes" />
<xsl:template match="foo:root"><bar:root><xsl:apply-templates select="*" /></bar:root></xsl:template>
<xsl:template match="foo:e2"><bar:e2><xsl:value-of select="." /></bar:e2></xsl:template>
<xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy></xsl:template>
</xsl:stylesheet>
----------
すると,以下のような xml 文書 (多少整形してあります) が得られるのですが,
----------
<bar:root xmlns:bar="http://bar-namespace" xmlns:foo="http://foo-namespace">
 <bar:e1>this is <bar:e2>a</bar:e2> pen.</bar:e1>
</bar:root>
----------
結果として全く使われていない foo に対する宣言が文書に含まれてしまいます.
exclude-result-prefixes="foo" を指定しても,bar:e1 要素に宣言が現れるだけで意味がありませんでした.
これを取り除く (最適化?) することはできないのでしょうか.
いや,実害はないんですけど気持ち悪くて...

178 :177:03/02/20 19:13 ID:???
書き込むときに「改行が多い!!」って怒られちゃったので
改行削ったらソースが読みづらくなってしまいました……スマンコ


179 :nobodyさん:03/02/21 01:48 ID:???
>>177
で、変換は何で?

180 :177:03/02/21 10:10 ID:???
>>179
えーと,「何で変換する必要があるの?」という意味でしょうか.

>>177で挙げた例は,現象が再現する最小限のソースでして
(もっと短くできるかもしれませんが),実際は置き換え以外にも色々やってるんです...

181 :nobodyさん:03/02/22 22:09 ID:???
>>180
transformer は何?という意味

182 :177:03/02/23 21:47 ID:ORn8WdNQ
>>181
すいません,書き忘れました.
xalan-java 2.4.D1 です.

183 :山崎渉:03/03/13 17:11 ID:???
(^^)

184 :nobodyさん:03/04/02 23:28 ID:???
ほすさげ

185 :nobodyさん:03/04/07 01:23 ID:???
(MS)XSL+JavaScriptで入力フォーム(UI)を作るという方法論は間違いだったと激しく後悔中。
素直に全部JavaScriptにするか、サーバサイドで作るべきだダタヨ。

186 :nobodyさん:03/04/07 01:46 ID:uo8jDP5o
ん。XForm ではなくて、XSLで?

187 :山崎渉:03/04/17 12:08 ID:???
(^^)

188 :nobodyさん:03/04/19 11:48 ID:4Vo7Hobj
あの・・・XSLTってタグ自身を出力できない?
下の様にすると全タグについて定義しなくてはならなくなってしまう・・

<xsl:template match="ABCD">
  <ABCD>
  <xsl:apply-template/>
  </ABCD>
</xsl:template>

やりたいことは
xmlの一部のタグだけ変換したいのですが
それ以外はそのままのタグで出力したいのです
copy-of とか使うと編集できないし。。。

すごくくだらない質問ですみませんが教えていただけないでしょうか?

189 :nobodyさん:03/04/20 04:35 ID:???
>>188

<xsl:template match="ABCD">
  <xsl:element name="{local-name()}">
  <xsl:apply-template/>
  </xsl:element>
</xsl:template>

ABCD をワイルドカードにすると全部引っかかる。

190 :山崎渉:03/04/20 06:00 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

191 :nobodyさん:03/05/19 12:22 ID:UmHfFrg2
いい書籍ない?
オライリーのはわかりにくい。


192 :山崎渉:03/05/22 02:00 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

193 :山崎渉:03/05/28 17:20 ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

194 :山崎 渉:03/07/15 11:14 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

195 :山崎 渉:03/08/02 02:37 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

196 :ぼるじょあ ◆ySd1dMH5Gk :03/08/02 05:19 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

197 :山崎 渉:03/08/15 22:59 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

198 :nobodyさん:03/09/07 21:17 ID:PQrT+UlA
<x>a b c <y>d</y> e <y>f</y> <y>g</y> h</x>



<p>a b c <q>d</q> e <q>f</q> <q>g</q> h</p>

に変換する XSL が分からん。for-each じゃ出来ないよね?


199 :nobodyさん:03/09/07 23:33 ID:X8dU+/Y3
xにマッチしてpにおきかえるテンプレートと
yにマッチしてqにおきかえるテンプレートをかけばいいだけじゃんよ

200 :nobodyさん:03/09/09 01:09 ID:???
>>199
あー、徹夜明けでボケてた。
その通りです失礼

201 :nobodyさん:03/09/26 10:15 ID:Hq0iAR6d
<date>9月2日</date>
<title>ちょっとここを通られた</title>
<p>なぞの白い物体に我が家をあらされてしまった。</p>
<p>訴訟を起こして謝罪と賠償を要求したい。</p>



<div class="section">
<h2><date>9月2日</h2>
<div class="subsection">
<h3>ちょっとここを通られた</h3>
<p>なぞの白い物体に我が家をあらされてしまった。</p>
<p>訴訟を起こして謝罪と賠償を要求したい。</p>
</div>
</div>

と変換するにはXSLTをどう書けばいいのでしょうか。


202 :nobodyさん:03/09/26 11:50 ID:???
>>201
まず整形式にしろ。話はそれからだ。

203 :nobodyさん:03/09/26 17:56 ID:???
>>202
すみません
<h2><date>9月2日</h2> は <h2>9月2日</h2> の誤りです。

204 :nobodyさん:03/09/26 22:18 ID:???
>>203
整形式にしなきゃいけないのは変換前のほうなんだが。

本当にやりたいことは別にあるんじゃないかとも思うが、
とりあえず、親要素を???とすれば、こんな感じ。
<xsl:template match="???">
<div class="section">
<xsl:apply-templates select="date" />
<div class="subsection">
<xsl:apply-templates select="title" />
<xsl:apply-templates select="p" />
</div>
</div>
</xsl:template>
<xsl:template match="date"><h2><xsl:xsl:apply-templates /></h2></xsl:template>
<xsl:template match="title"><h3><xsl:xsl:apply-templates /></h3></xsl:template>
<xsl:template match="p"><p><xsl:xsl:apply-templates /></p></xsl:template>

205 :nobodyさん:03/10/10 20:26 ID:???
俺はサイトの文法は
<section>
 <title>TITLE</title>
 <sentences><p></p>....</sentences>
 <section>
  <title>子セクションTITLE</title>
  <sentences><p></p>....</sentences>
 </section>
 <section>
  <title>子セクションTITLE</title>(以下略&再帰的な文法)
 </section>
</section>
にしてる。

206 :nobodyさん:03/10/14 00:50 ID:???
>>205
俺もそんな感じ

207 :nobodyさん:03/10/17 21:05 ID:ckGd54O2
質問です。
XSLTで、元の構造を保ったまま、
XMLのテキストを一部分だけ変えるというのは簡単に出来るのでしょうか?

例えば、簡単な例ですが、
<A>
<B>hoge</B>
</A>
とあったときにhogeを何か別の文字列に変換したいという事です。

やはりその構造にあった、スタイルシートを書くしかないのでしょうか?

208 :nobodyさん:03/10/18 00:03 ID:???
>>207
どの要素内容のテキストのhogeも全部書き換えていいなら簡単。
でも、そのためにXSLTを使うなんて馬鹿げてる。

209 :nobodyさん:03/10/18 14:56 ID:???
>>208
そういうことのためにXSLTがあるんじゃないの?
それが馬鹿げてるってことはXSLT自体が馬鹿げてるってことだろ。

210 :nobodyさん:03/10/19 10:59 ID:???
>>209
スキーマを換えるためにあると考えるのが普通だろ。
単なる置換とはぜんぜん違うよ。


211 :nobodyさん:03/10/19 17:43 ID:???
XMLをXSLでHTMLに変換して、↓のような感じにしたいです。
何がしたいのかというとページ内リンクがしたくて、
c要素を変換した(1*)や(*2)などを押すと、
f要素の(*1)や(*2)に飛びたいのです。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="sample.xsl" type="text/XSL"?>
<A>
<b>テキスト1<c id="A" /></b>
<b>テキスト2<c id="B" /></b>
<b>テキスト3<c id="A" /></b>
<b>テキスト4<c id="A" /></b>
<e>
<f id="A">参照テキスト</f>
<f id="B">参照テキスト</f>
</e>
</a>

↓変換↓

テキスト1(*1)
テキスト2(*2)
テキスト3(*1)
テキスト4(*1)

(*1)参照テキスト
(*2)参照テキスト


212 :211の続き:03/10/19 17:44 ID:???

ページ内リンク自体は簡単にできるのですが、
(*1)、(*2)などの番号を振るのが難しいです。
f要素の番号は単純にnumberでカウントしているのですが、
c要素での番号が振れません。

xslはネットをうろついて見つけた近そうなものを
参考にしながら、こんな感じになっています。


213 :212の続き:03/10/19 17:48 ID:???
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="Shift_JIS" />
<xsl:template match="/">
<html><head><title>sample</title></head><body>
<xsl:apply-templates />
</body></html>
</xsl:template>
<xsl:template match="b">
<div><xsl:apply-templates /></div>
</xsl:template>
<xsl:template match="c">
<xsl:variable name="ID" select="@id" />
<xsl:element name="a">
<xsl:attribute name="href">#<xsl:value-of select="@id" /></xsl:attribute>
(*<xsl:number count="f" /><xsl:value-of select="../../e/f/@id[../@id=$ID]" />)
</xsl:element>
<xsl:apply-templates />
</xsl:template>

214 :213の続き:03/10/19 17:49 ID:???
<xsl:template match="f">
<div>
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id" /></xsl:attribute>
(*<xsl:number count="f" />)
</xsl:element>
<xsl:apply-templates />
</div>
</xsl:template>
</xsl:stylesheet>
f要素にマッチングさせたnumberをとかを取得できればいいのかなーと思って、
いろいろと考えてみたのですが、↑まで書いたところで???になりました。
どなたかお知恵を貸してください。。。。

215 :nobodyさん:03/11/29 01:53 ID:0RUQwDGu
どうか皆様のお力をお借りしたく思います。
xmlが
    <item>
        <text>
            ああああああああああ
            ああああああああああ
            ああああああああああ
        </text>
        <text>
            いいいいい<em>イイイイイ</em> <br />
            いいいいいいいいいい <br />
            いいいいいいいいいい <br />
        </text>
    </item>
このように与えられていて、これを
    <!-- タグ付きで、そのまま出力 -->
    <p>
    ああああああああああ
    ああああああああああ
    ああああああああああ
    </p>
    <p>
    いいいいい<em>イイイイイ</em> <br />
    いいいいいいいいいい <br />
    いいいいいいいいいい <br />
    </p>
    <!-- タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力 -->
    <p>ああああああああああああああ ...</p>
    <p>いいいいいイイイイイいいいい ...</p>
このように出力したいのですが、xslはどのように書けばよいのでしょうか。

216 :215:03/11/30 02:13 ID:???
「タグ付きで、そのまま出力」 は xsl:copy-of を使用して解決しました。

「タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力」 は未解決です。
どなたか御協力を賜りたく思います。

217 :nobodyさん:03/11/30 02:59 ID:???
仕様書読んだことある?
プログラミング言語の経験は?

218 :215:03/11/30 05:20 ID:???
「タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力」 も自己解決しました。
お騒がせして御免なさい。

>217
>仕様書
少しは読みますが、リファレンス的です。
>プログラミング言語
c/c++ を使う事が出来ます。

219 :nobodyさん:04/01/02 03:53 ID:goN3d3Pm
XSLTで1つのXMLファイル上に存在するn件のデータを50件ずつ表示を
行いたいんだけど、そういうことって簡単にできますか?
どんな感じで実装すれば良いのかご存知の方教えてください。
javascriptでXSLTを触らないとダメなのかな・・。



220 :nobodyさん:04/01/02 13:08 ID:???
>>219
トップレベルの xsl:param へ実行時にパラメータを渡せるから、
それで、a < position() and position() <= a + 50 とかすれ。

221 :nobodyさん:04/01/02 14:59 ID:goN3d3Pm
>>220
IEから外部パラメータとして与える方法を探したけどどうしてもわかりません。
普通に/list.xml&index=50とかURL書いても無視されるし。


222 :nobodyさん:04/01/02 15:25 ID:???
>>221
クライアント側で変換させるなんて論外じゃねぇの

223 :nobodyさん:04/01/02 16:08 ID:goN3d3Pm
>>222
え・・そうなんすか。
ホントXML全然知らないんで、とんちんかんなレスになっちゃうかも
しれないけど、XSLTってユーザーの入力値にマッチした情報の抽出を行うとか、
そういう制御は得意かと思っていたんですが違うんですか?
それはサーバサイドでやるべき事っていうことですか。
根本的なところを理解していなかったか・・_| ̄|〇ガックリ

224 :nobodyさん:04/01/02 18:25 ID:???
>>223
何が得意かとサーバでやるべきかどうかには何の関係もないと思うけど

225 :nobodyさん:04/01/10 22:17 ID:???
保守。



?x2665;

226 :nobodyさん:04/01/14 03:43 ID:???
不具合か
Mozillaでバッチリなのに IE で真っ白ってどういうことだ

227 :225:04/01/17 15:58 ID:???
順番を入れ替えただけでうまくいくってのはどういうこった

228 :227:04/01/17 15:59 ID:???
名前は226だった

229 :226 227 228:04/01/17 16:17 ID:???
>>221
外部パラメータを与えるxmlを用意すれば、やりたい事をかなえてくれる

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet version="1.0" encoding="UTF-8" type="text/xsl" href="page.xsl" ?>
<page index="50">
</page>


みたいな中身のないxmlを用意し、xslで <xsl:param name="index" select="/page/@index" /> をよませるのだ。
xslでは 220の <xsl:if test=" ( $index < position() ) and ( position() <= $index + 50 )"> を使う。

page.xml (中身あり) では<page index="0">、
page1.xml (中身なし) では<page index="50">、
page2.xml (中身なし) では<page index="100">、
page3.xml (中身なし) では<page index="150">、と書いておく。

page.xsl では <xsl:copy-of select="document( "page.xml" )/page/foo" /> みたいな、ドキュメントを指定した形で読み込む。
 ( select="/page/foo" では不可能。<xsl:template match="/page/foo"> も恐らく無理 )
おすすめは xsl:for-each

<xsl:template match="/page">
    <xsl:param name="index" select="/page/@index" />
    <xsl:for-each select="document( "page.xml" )/page/foo">
        <xsl:if test=" ( $index < position() ) and ( position() <= $index + 50 )">
            <xsl:copy-of select="current()" />
        </xsl:if>
    </xsl:for-each>
</xsl:template>

と、こんな感じではないかな。
ところどころ間違いがあるかもしれないが、その辺は勘弁してくれ

230 :nobodyさん:04/01/26 15:30 ID:TZ0JMGYO
データの格納をXMLに任せて、フォーム使ったCGI作りたいのですけど
よいサンプルページないですか?
表示はXHTMLでやってます。

231 :nobodyさん:04/01/27 19:27 ID:b8cLgywQ
<item name="WebSite" href="URL" />のような一風変わったXMLがありまして,
XSLを使ってリンクになっているHTMLを作りたいのですが,

<a href="<xsl:value-of select="./@href">"><xsl:value-of select="./@name"/></a>
のような記述をしますと,<が入れ子になっているのでエラーになってしまいます.
<xsl:text>で囲って<に置き換えたりしても駄目でした.

一体,どの様にしたら良いのでしょうか?宜しくお願いします.

232 :nobodyさん:04/01/27 19:36 ID:???
>>230
スレ違い。

>>231
xsl:attribute 使え。その疑問が出てくるのは、もう一度 XML と XSLT に関
するキチンとした入門書を通読し直した方が良さげ。

> <a href="<xsl:value-of select="./@href">"><xsl:value-of select="./@name"/></a>
整形式じゃねーしよ。

233 :231:04/01/27 20:03 ID:???
>>232
有難うございます.おっしゃる通り,@ITの記事を読んだだけの厨房です.
xsl:attributeでググったらやり方が分かりました.
仕事で使う際は,本を読んで真面目に勉強させて頂きます.
有難うございました.

同じ疑問を持った方の参考に(いないかな〜),以下で可能だと思われます.
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="./@href"/>
</xsl:attribute>
<xsl:value-of select="./@name"/>
</xsl:element>


234 :nobodyさん:04/01/28 02:23 ID:???
{ } が使えるとかって知らないでしょ?マジで。

235 :nobodyさん:04/01/28 15:19 ID:???
{./@href} で書けるのだが、<a href="..."> みたいな xhtml タグを xslt の中に書かないほうが良いらしい。

<a href="{./@href}"> <xsl:value-of select="./@name"/> </a>


236 :nobodyさん:04/01/28 21:56 ID:???
xmlをxslt使ってhtmlとかに変換して<a href...を作るには、もとのxmlで<a href=...なんて書けない。
235が正しい。

237 :nobodyさん:04/01/29 01:45 ID:???
何言ってんだか。一度は仕様書読めよ。

238 :232:04/01/29 13:19 ID:???
俺の解答不味かったか。{} じゃなく <xsl:attribute/> を教えたのは俺の趣味と
Google で検索する時のことを考えてだったんだが、正直スマンかった。

で、>>235-236 の論点が良く分からんのだが、何が言いたいの?

239 :nobodyさん:04/01/29 13:43 ID:???
>>236
( ゚д゚)ポカーン


それはさておき、漏れは {} 使う派。
attributeは、条件(if)によって属性追加する時くらいしか使わない。
多岐分岐(choose〜when)で属性の値を変える場合は、
直前で変数用意して、{} で埋める。

だって、見やすいんだも〜ん

240 :nobodyさん:04/01/29 23:46 ID:???
xmlをxslt使ってhtmlとかに変換して<a href...を作るには、xslで<a href=...なんて書けない。
かな?


241 :nobodyさん:04/01/30 09:31 ID:???
>>240
なんで?(´Д`)

242 :nobodyさん:04/01/30 12:10 ID:???
in : <item name="2ちゃんねる" href="http://www.2ch.net/"/>

xsl :
<xsl:template match="item">
 <a href="{@href}"><xsl:value-of select="@name"/></a>
</xsl:template>

out : <a href="http://www.2ch.net">2ちゃんねる</a>

ってことじゃないのん?

243 :nobodyさん:04/01/30 21:21 ID:???
>>242
え? そんなことできるんだ。知らんかった。


244 :nobodyさん:04/01/30 21:39 ID:???
>>243
(°Д°)ポカーン

245 :nobodyさん:04/01/30 22:40 ID:???
<xsl:copy-of> で コピーしたノードのタグに、
<hoge xmlns=""> みたいに空欄の名前空間がつくのだが、これはどういう事なのだろうか。


-- hoge.xml --
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet version="1.0" encoding="UTF-8" type="text/xsl" href="./hoge.xsl" ?>
<hoges> hoge is <hoge> HOGE </hoge>. </hoges>

-- hoge.xsl --
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/hoges">
        <xsl:copy-of select="text() | * | @*" />
    </xsl:template>
</xsl:stylesheet>

-- hoge.html --
hoge is <hoge xmlns="">HOGE </hoge>.


目標は、↓なのだが。

-- hoge.html --
hoge is <hoge> HOGE </hoge>.



246 :nobodyさん:04/01/31 01:39 ID:???
出力をHTMLにしたいみたいだけど、とりあえず
xsl:output method="html" とかしてみたら?

247 :ヽ(´ー`)ノ:04/01/31 12:03 ID:???
>>245
xsltproc(libxslt付属)だったら、望んだ出力になるが。バグじゃねーの?

>>246
いや、それは関係ないだろ。

248 :245:04/01/31 15:24 ID:???
う、msxmlのバグかな
お騒がせしました。失礼いたします

249 :nobodyさん:04/02/01 01:23 ID:???
JRE1.4.2でもなるよ

250 :nobodyさん:04/02/21 13:19 ID:???
xsltからxsltを出力するときなんかで、{}という文字を含んだ属性を出力したいときにもattribute要素使うな。
一応{'{hoge}'}でいけると思うけどなんか変だし。

251 :nobodyさん:04/02/21 19:00 ID:4PYw/lWY
>>250
言ってる意味が良く分からないなぁ。
属性名に { } は使えないでしょ。
属性値に { } があっても上とは関係ないし。

252 :nobodyさん:04/02/22 17:24 ID:???
みなさんXSLの作成は何でやってます?
XSLってもともと可読性にかけるし、
IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。

253 :nobodyさん:04/02/22 18:13 ID:???
可読性に欠けないプログラミング言語ってある?
インデントとかコメントとか自分で工夫するもんじゃない?

IE じゃなくて、msxsl.exe とか使うのもいいと思うよ。

254 :ヽ(´ー`)ノ:04/02/22 18:14 ID:???
> みなさんXSLの作成は何でやってます?
Emacs 使いなので Emacs で。

> XSLってもともと可読性にかけるし、
書き方が下手なだけだと思うが。

> IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。
msxsl.exe

255 :nobodyさん:04/02/22 20:09 ID:???
>>252
Komodo

256 :250:04/02/23 13:14 ID:???
>>251
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
<xsl:template match="/">
<axsl:stylesheet>
<axsl:template match="/">
<foo bar="{'{aaa}'}"/>
</axsl:template>
</axsl:stylesheet>
</xsl:template>
</xsl:stylesheet>
こういう場合。
今試してみたらxsltproc(Using libxml 20604, libxslt 10102 and libexslt 802)だとunmatched '}'とパースエラーが出て、xalan 2.3.1だと問題無く処理できる。
xsltprocでもattribute要素使えば処理できる。

>>252
xsltはxmlなので読みやすいようにスタイルシートを適用してブラウザで見るのが良いかと。
直接編集できないけど。リアルタイムでスタイルシートを適用してくれるxmlエディタならできるかな?
エディタはEmacsでxml-lite-modeを使っている。xsltプロセッサはメインがxsltprocで変な動きをしたときはxalan。
タグの閉じ忘れがチェックできるだけでもだいぶ違うよ。


257 :nobodyさん:04/02/25 08:26 ID:Hbu4YFmr
XSLTって自分自身を出力するスタイルシートは書ける?

258 :nobodyさん:04/03/24 22:07 ID:QhqWFZPy
xhtml文書をxsltprocで変換したいと思ってるんだけど、
xhtml側のnamespaceの状態よってマッチしたりしなかったりするので困ってる。
----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="html"/>
</xsl:stylesheet>
-----------------
[実行例] $ xsltproc.exe -v test.xsl test.xml 2>&1 | grep xsltProcessOneNode

----- test.xml -----
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"/>
-----------------
xsltProcessOneNode: no template found for /
xsltProcessOneNode: no template found for html

このようにマッチしない。でも、namespaceを消したり名前を付けたりするとマッチする。

----- test.xml -----
<?xml version="1.0"?>
<html xmlns:xhtml="http://www.w3.org/1999/xhtml"/>
-----------------
xsltProcessOneNode: no template found for /
xsltProcessOneNode: applying template 'html' for html

何故?また回避策は?

#現象が再現できる最小のソースです。validなxhtmlに対しても同様です。

259 :nobodyさん:04/03/24 22:10 ID:???
2行目×状態よって○状態によって
xsltprocはCygwin版libxslt1.1.2-1です。

$ xsltproc --version
Using libxml 20604, libxslt 10102 and libexslt 802
xsltproc was compiled against libxml 20604, libxslt 10102 and libexslt 802
libxslt 10102 was compiled against libxml 20604
libexslt 802 was compiled against libxml 20604


260 :nobodyさん:04/03/29 11:53 ID:???
namespaceというのは要素の苗字に当たります。
xmlns="http://www.w3.org/1999/xhtml"
と指定することは、この要素とその子孫要素の内プレフィックスの付いてないものの苗字は"http://www.w3.org/1999/xhtml"ですよと宣言することで、
xmlns:xhtml="http://www.w3.org/1999/xhtml"
と指定することは、この要素とその子孫要素のうちxhtmlというプレフィックスが付いているものの苗字は"http://www.w3.org/1999/xhtml"ですよと宣言することです。
ですから1番目のtest.xmlのhtml要素はhttp://www.w3.org/1999/xhtmlという苗字を持ったhtml要素ということになります。
一方2番目のtest.xmlのhtml要素にはxhtmlというプレフィックスが無いため苗字無しのhtml要素となります。

test.xslでは苗字無しのhtml要素にマッチするようになっているため1番目のtest.xmlにはマッチしませんが2番目のtest.xmlではマッチします。

解決するためにはtest.xslのxsl:template要素にxmlns="http://www.w3.org/1999/xhtml"と宣言を加えるか、
xmlns:xhtml="http://www.w3.org/1999/xhtml"と宣言を加えてxsl:templateのmatch属性を"xhtml:html"とします。
これで苗字付きのhtml要素にマッチするようになります。

261 :nobodyさん:04/03/29 12:55 ID:???
pc2鯖が消える前の>>258への解答ローカルで持ってるけど上げる?

262 :nobodyさん:04/03/29 13:12 ID:???
貼っときますね

260 :nobodyさん :sage :04/03/26 13:09 ID:???


----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.w3.org/1999/xhtml">
<xsl:template match="/h:html"/>
</xsl:stylesheet>
-----------------

あるいは

----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.w3.org/1999/xhtml">
<xsl:template match="/"><xsl:apply-templates select="h:html" /></xsl:template>
<xsl:template match="h:html"/>
</xsl:stylesheet>
-----------------

とかどうですか。
xmlns:h=".." は xmlns=".." にしておいて
match="/html" あるいは match="/h:html" などでもいいだろうけど。

263 :nobodyさん:04/03/29 13:14 ID:???
続き

261 :nobodyさん :sage :04/03/26 13:27 ID:???


>>260
で、できた!ありがとう!

でも、なんでこうなるの?
XML側にネームスペースがなかったり、名前付けされてたらマッチして、
デフォルトネームスペースがあるとマッチしない理屈がわかんない。
仕様?バグ?ポインタだけでも教えてもらえるとありがたい。

あと、>>260さんは何で知ってるの?(まさか、これFAQ?)

264 :nobodyさん:04/03/29 13:20 ID:???
以上削除前の263でした。

262 :260 :sage :04/03/26 14:48 ID:???

>>260 の訂正
>xmlns:h=".." は xmlns=".." にしておいて
>match="/html" あるいは match="html" などでもいいだろうけど。

>>261
test.xsl で xmlns:h="http://www.w3.org/1999/xhtml" が無い場合、
match="html" でマッチするのは
名前空間無し + "html"
という要素だと思う。

で、XHTML のほうは
<html xmlns="http://www.w3.org/1999/xhtml"> ... </html>
なってたら、html 要素は内部的には
名前空間 "http://www.w3.org/1999/xhtml" + "html"
になってる。

名前空間無し + "html"

名前空間 "http://www.w3.org/1999/xhtml" + "html"
は違ってる。なのでマッチしない。

そこで、>>260 に書いたみたく、XSLT の側でマッチさせる対象を後者の
ような名前空間 + "html" なものになるよう指定しなきゃいけない。

<html xmlns:xhtml="http://www.w3.org/1999/xhtml"/>
と書いた場合は、<html の html は「名前空間無し + "html"」になる。
プリフィックスで xhtml に "http://www.w3.org/1999/xhtml" を割りあててる
から、これはデフォルトプリフィックス使ってる <html そのものには影響しない。

265 :”削除”後の260:04/03/29 18:58 ID:???
(´・ω・`)

266 :nobodyさん:04/04/02 00:28 ID:I+SOWEa+
・foo.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="foo.xsl"?>
<body>
<ruby><rb>This</rb><rt>ディス</rt></ruby> <ruby><rb>is</rb><rt>イズ</rt></ruby>
<ruby><rb>a</rb><rt>ア</rt></ruby> <ruby><rb>pen</rb><rt>ペン</rt></ruby>!
</body>

・foo.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.or/Profiles/XHTML-transitional">
<xsl:output indent="yes" method="html"/><xsl:template match="/">
<html><body>
<xsl:for-each select="body">
<xsl:for-each select="ruby">
<xsl:value-of select="rb" />
</xsl:for-each>
</xsl:for-each>
</body></html>
</xsl:template>
</xsl:stylesheet>
で、
<html xmlns="http://www.w3.or/Profiles/XHTML-transitional">
<body>This is a pen!</body></html>
と出力させたいんだけど、
<html xmlns="http://www.w3.or/Profiles/XHTML-transitional">
<body>Thisisapen</body></html>
実際にはこう。どなたか知恵をお貸しください。おながいします。

267 :nobodyさん:04/04/02 03:16 ID:???
'!'あたりを見るとXSLを理解してないような。

<xsl:template match="/">
<html><body>
<xsl:for-each select="(body|.//rb)/text()">
<xsl:choose>
<xsl:when test=".='?'">
<xsl:text> </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</body></html>
</xsl:template>

テストしてないので自信はないですが。頭と尻に余計なものがくっつくヨカン。

268 :267:04/04/02 03:21 ID:???
化けた。スマン。
<xsl:when test=".='&#10;'">
全角を置き換えて。

269 :266:04/04/02 20:40 ID:???
ありがとうございました。"!"は拾ってくれるようになりました。
<html xmlns="http://www.w3.or/Profiles/XHTML-transitional"><body>
Thisisapen!
</body></html>
しかし、上のように単語間のスペースは拾われないみたいです。
おっしゃるとおりXSLTはまだかじりたてなので、自分でも調べてみます。

270 :nobodyさん:04/04/02 20:50 ID:???
自己レスです。xmlのほうのbodyタグに
xml:space="preserv"
と属性を加えたら期待通りの結果が得られました。
重ね重ねありがとうございました。

271 :267:04/04/02 21:33 ID:???
<xsl:preserve-space>というタグがありますけど…
あとxhtmlの識別子が間違ってますよ。


272 :nobodyさん:04/04/08 12:47 ID:Pkn49QjT
<A>
 <B><C>○あいう</C></B>
 <B><C>100</C></B>
 <B><C>200</C></B>
 <B><C>○いうえ</C></B>
 <B><C>50</C></B>
</A>



<A>
 <B>
  <C>○あいう</C>
  <D>100</D>
  <D>200</D>
 </B>
 <B>
  <C>○いうえ</C>
  <D>50</D>
 </B>
</A>

に書き換えたいのですが、xpathで
1. /A/B/Cで○があるもの、もしくは○がないもの
2. 自分の一番近い兄で/A/B/Cで○があるもの
というのはどう表記されるでしょうか?


273 :nobodyさん:04/04/08 13:10 ID:???
>>272
よく読んでいないけれど、ツリー構造の変更は XSL ではなくて、
DOM じゃないのか?

274 :nobodyさん:04/04/08 16:06 ID:???
>>272
>1. /A/B/Cで○があるもの、もしくは○がないもの
starts-with(.,'○') か これを not() で囲う

>2. 自分の一番近い兄で/A/B/Cで○があるもの
>というのはどう表記されるでしょうか?
preceding::C[starts-with(.,'○')][1]

こんなでしょうか。ここから

<xsl:template match="/A">
 <A>
  <xsl:apply-templates select="B/C[starts-with(.,'○')]"/>
 </A>
</xsl:template>

<xsl:template match="B/C[starts-with(.,'○')]">
 <xsl:variable name="val" select="."/>
  <B>
   <C><xsl:value-of select="."/></C>
   <xsl:for-each select="following::C[substring(.,1,1) != '○']">
    <xsl:if test="preceding::C[starts-with(.,'○')][1] = $val">
     <D><xsl:value-of select="."/></D>
    </xsl:if>
   </xsl:for-each>
  </B>
</xsl:template>

これでとりあえずできるかと。要素数増えるとfor-each以下が効率悪そうだけ
ど。(.,'○')が顔文字にしか見えないのが欠点。


275 :nobodyさん:04/04/08 18:38 ID:???
>>257
遅レスですが
<xsl:copy-of select="document('')/...."/>
ってこと?テンプレートとしては使えないけど。使えても意味ないけどね。


276 :nobodyさん:04/04/09 10:37 ID:???
>>274
ありがとう。
元の処理に教えていただいたコードを入れて動かしたいと思います。

277 :nobodyさん:04/04/18 17:14 ID:???
>>275
いや、C言語とかだと自分自身を出力するプログラムが書けるんですが
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/quine.html
xsltの場合ネームスペースとかの関係で無理なんじゃないかと思って。
でもネームスペースを明示的に指定してやればできるのか?

documentで参照するのはアリなのかなぁ。

278 :nobodyさん:04/04/18 21:38 ID:???
>>277
document('')で自分を参照するのは割と普通に使いますよ。自分は、ですが。
使ってるソースを目にすることもあります。

参照したデータはテンプレートとして使われることはないのでネームスペース
は(自分の少ない知識の範囲内では)そんなに問題にならないと思います。た
とえば

<xsl:template match="/">
<xsl:copy-of select="document('')//xsl:template[@match='/']"/>
</xsl:template>

これでも無限ループになる事はないです。もちろんこんなの意味ないので、別
のネームスペースを使って設定ファイル的なことをする方が一般的だと思います。


279 :nobodyさん:04/05/07 01:25 ID:???
XSLTXTって使ってる人いますか?
ttps://xsltxt.dev.java.net/
ttp://www.zanthan.com/ajm/xsltxt/index.html

とりあえず < とか書かなくていいのがいい。

280 :nobodyさん:04/05/07 01:26 ID:???
あ、&lt; です↑

281 :nobodyさん:04/05/09 20:35 ID:???
>>279
> とりあえず < とか書かなくていいのがいい。
まともな XML オーサリングツール使えよ。

282 :nobodyさん:04/05/27 16:04 ID:???
<li a="2300" b="hoge"/>
<li a="jiro" b="もっこり"/>
<li a="義雄" b="boke"/>
といったようなリストがあったとして、
属性b の値が hoge の時だけ 属性a の値を取りたいんですけど、
xpathではどうすればいいのでしょうか?

283 :nobodyさん:04/05/27 19:38 ID:???
>>282

li[@b='hoge']/@a

かな。

284 :nobodyさん:04/06/04 12:24 ID:???
<a>
 <b>bbb</b>
 <c>ccc</c>
</a>
こんな感じのものを、「<b>要素が存在すればattributeにbを書き、<b>要素が存在しないまたは<b>要素の中身が空の場合はattributeにcを書く」というふうにしたいのですが、
<xsl:attribute name="foo">
 <xsl:choose>
  <xsl:when test="条件">
   <xsl:value-of select="b" />
  <xsl:/when>
  <xsl:otherwise>
   <xsl:value-of select="c" />
  <xsl:/otherwise>
 </xsl:choose>
</xsl:attribute>
whenの条件にどのように書けばいいのでしょうか?そもそもchooseは間違っているのでしょうか?

285 :nobodyさん:04/06/04 17:41 ID:???
>>284
test="b and not(b='')"
単に "not(b='')" だけでいいかも。

286 :284:04/06/04 20:42 ID:???
>>285
> test="b and not(b='')"
うまくいきました!感謝!!

287 :nobodyさん:04/06/10 09:00 ID:???
1ページの表示件数を10とかに指定して、
続きは<a>で次のページを表示させる…ってことは、
xsltでできるんでしょうか?
それともほかのプログラムと組み合わせたほうが賢明なんでしょうか?

288 :nobodyさん:04/06/11 16:14 ID:???
サーバーサイドでやればできる。実際動かしてみたことある。
しかし素直にDOMとか使った方がいいかと。

289 :287:04/06/11 20:00 ID:???
>>288
DOMっすかあ・・・。
最近XMLに興味を持ち始めて、あとPHPも気になりだしたような、
プログラミングなんてまったくできない人間なので。
これから勉強していきたいと思います。ありがとう。


290 :nobodyさん:04/06/11 21:21 ID:???
俺も一年くらい前からそんな感じで勉強してます。

291 :nobodyさん:04/06/14 05:46 ID:???
PHP を使おうとは思うんだが、サーバーで動的生成か、ローカルで静的生成かで迷ってる。
ブログ程度なら静的にすべきなのかな。でも、動的だとコンテントネゴシエーションとかブラウザ振り分けなどの恩恵が……うーむ。

292 :nobodyさん:04/06/14 06:23 ID:???
blog≠xml blog∩xml=Φ
blog≠xslt blog∩xslt=Φ

だと思うけど、違うのかな

293 :nobodyさん:04/06/14 06:47 ID:???
>>292
Φ (ファイ) が何を意味するのかは俺には分からんが、>>291 の日本語に混乱していると推測してみた。

PHP で XSL 変換してブログを行おうと思うんだが、クライアントごとに逐一サーバーで動的変換しようか、ローカルで HTML ファイルなどを静的生成しようか迷ってる。
商用サイトなどならともかく、ブログ程度なら静的に行うべきなのかな。
でも、動的だとコンテントネゴシエーションとかブラウザ振り分けなどの恩恵が……うーむ。

294 :nobodyさん:04/06/15 10:23 ID:???
Φは空集合やろ

blog∩xslt = Lenyaに附属してたblogのサンプル
だと思うが、出来はいまいちだった

295 :nobodyさん:04/06/23 11:34 ID:1zBprzUE
<item id="a">
 <created>2004-01-03T00:00</created>
 <modified>2004-01-04T00:00</modified>
</item>
<item id="b">
 <created>2004-01-02T00:00</created>
 <modified>2004-03-01T00:00</modified>
</item>
<item id="c">
 <created>2004-02-01T00:00</created>
</item>

これら item 要素の子 created・modified 両要素の内容を選別して親の item 要素を新しい順 (b・c・a) に並べ替えたいのですが、例えば以下のように xsl:sort 要素を使ってもうまくできません。

<xsl:apply-templates select="item">
 <xsl:sort select="created or modified" order="descending"/>
</xsl:apply-templates>

助けてくださいお願いします。

296 :nobodyさん:04/06/23 14:51 ID:???
>>295
"or"は論理演算子だからここで使っても意味ないよ(T/Fが返ってくる)。

select="created[not(../modified)] | modified"

でどう?

297 :295:04/06/23 14:59 ID:???
>>296
ありがとうございます。出来ました。

298 :nobodyさん:04/06/25 16:19 ID:???
xsl:copy-of で属性値を取得できません。
xsl:value-of なら属性値を取得できました。

-- xml --
<a href="http://example.org/"> example </a>
-- xsl --
<xsl:copy-of select="/a/@href" /> <br />
<xsl:value-of select="/a/@href" /> <br />
-- output --
<br />
http://example.org/ <br />
--

xsl:copy-of を使用して属性値を取得する方法をご存知の方がいらっしゃいましたら、
その方法をお教え下さいませ。

299 :nobodyさん:04/06/26 05:29 ID:???
それだと copy-of でコピーされるのは属性ノードだからそのままでは出力で
きない。どうしてもしたいならこんな感じで、

<xsl:copy-of select="string(/a/@href)"/>

非ノードにしたものを渡せばよい。でも value-of のほうが適切。

300 :298:04/06/26 21:02 ID:???
value-of を使うことに致します。ありがとう

301 :nobodyさん:04/07/03 03:02 ID:???
次のようなXMLデータがあるとき、
name="foo"の前後のitemのname属性値を表示するようなXSLTはどう書けばいいんでしょうか?

<list>
<item name="hoge" />
<item name="foo" />
<item name="bar"/>
</list>

302 :nobodyさん:04/07/03 04:31 ID:???
<xsl:value-of select="item[@name='foo']/preceding-sibling::item[1]/@name"/>
<xsl:value-of select="item[@name='foo']/following-sibling::item[1]/@name"/>
かな。試してないけど。


303 :301:04/07/04 00:41 ID:???
>>301
それで成功しました。
ありがとうございます。

304 :nobodyさん:04/08/25 17:25 ID:ly9L2Z7D
<root>
  <mage>
    <mage>
       <take>
  <toge>
みたいな構造になっているXMLファイルがあって(上では閉じタグ省略)、
いまrootから何階層目にいるのかを知るにはどうしたら良い?

305 :nobodyさん:04/08/25 18:19 ID:???
>>304
count(ancestor::node())
でどうよ?

306 :nobodyさん:04/09/06 20:13 ID:koFx6bH6
天気予報は既存の配信ビジネスを守るためにRSS配信できない
http://neta.ywcafe.net/000339.html

国民の税金で気象データの収集・解析までしておきながら、
気象庁の官僚の天下り先である
・財団法人 気象業務支援センター
・財団法人 日本気象協会
の利権保護の為、未だRSS配信が拒まれているのだ。
将来的に行われるであろう地震予知の情報も、有料で国民に販売するつもりだろうか?

307 :nobodyさん:04/09/07 09:26 ID:???
二重徴税で叩けないのかな。

308 :nobodyさん:04/09/07 09:29 ID:???
>>306
是非はともかくそんなとこのソースを元に騒いでんの?w

309 :nobodyさん:04/09/07 14:14 ID:???
XMLのスレにマルチしまくってるから放置しとけ

310 :nobodyさん:04/09/07 17:02 ID:???
>>307
じゃあまずガソリンスタンドをたたいてくれ。

311 :nobodyさん:04/09/07 21:05 ID:???
気象庁職員必死だな(w

312 :nobodyさん:04/09/08 11:32 ID:???
306,307 は気象庁を、
310 はガソリンを、
308,311 は住民を、
各自、自由に叩いてください。
313 は XSL/XSLT ネタ、よろしく。

313 :nobodyさん:04/09/09 02:59 ID:???
気象庁住民はガソリンで逝ってよし。

314 :nobodyさん:04/09/09 09:57 ID:???
XSL/XSLT/ネタではなく
XSL/XSLTのネタよろしく。

315 :nobodyさん:04/09/24 05:09:23 ID:/pWgzu1/
<a id="a0">
 <b id="b0">
  <c>foo0</c>
  <c>bar0</c>
 </b>
 <b id="b1">
  <c>foo1</c>
  <c>bar1</c>
 </b>
</a>

のようなデータから、<c>の値を2つ指定して最初に出てくる共通の親要素を
見つけるにはどうすればよいでしょうか?

例えば、"foo0"と"bar0"なら "b0"、"foo0"と"foo1"なら"a0"がほしいです。
共通の親をすべてならなんとかなるのですが、
その中で最初にマッチする親だとさっぱりわかりません。
よろしくおねがいします。

316 :nobodyさん:04/09/25 10:50:09 ID:???
>>315

(descendant::c[. = 'foo0']/ancestor::*[./descendant::c[. = 'bar1']])[last()]/@id

317 :316:04/09/26 08:08:17 ID:???
後で考えたら、えらい無駄な事をしてるな、と。
/descendant::c[self::node() = 'foo0']/ancestor::*[descendant::c = 'foo1'][position() = 1]
これでも、共通且つ最初にマッチする先祖を得られると思う。


318 :315:04/09/27 04:31:18 ID:???
>>316
ありがとうございます。いけそうです。
再帰ばっかり考えてました。

自分のXPath能力の無さに(´・ω・`)ショボーン

319 :nobodyさん:04/09/28 17:39:48 ID:???
質問です。

XSLT で <a href="javascript:foo('bar')">...</a> のようなタグを生成したいのですが、
引用符のエスケープの仕方がよくわかりません。ご存知の方、ご回答をお願いいたします。

現在はこんなコードを書いてます (エラーになります)
<a href="{concat('javascript:foo(', ''', @bar, ''', ')')}">

320 :319:04/09/28 17:41:28 ID:???
>>319
化けてしまいましたが、''' のところは '&apos;' です。

321 :319:04/09/28 18:03:41 ID:???
>>319
<xsl:attibute> を使えばいいのですね。自己解決しますた。お騒がせしました。


322 :nobodyさん:04/09/28 20:00:16 ID:???

こういう事ですね?
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo(&apos;bar&apos;)</xsl:attribute>
<xsl:apply-templates />
</xsl:element>

コピペするならこっち
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo(&apos;bar&apos;)</xsl:attribute>
<xsl:apply-templates />
</xsl:element>

アンカー・テキスト不変なら、こっち
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo(&apos;bar&apos;)</xsl:attribute>
アンカー・テキスト
</xsl:element>


323 :nobodyさん:04/10/11 13:28:18 ID:???
XSLT Standard Library
ttp://xsltsl.sourceforge.net/

exsltみたいなライブラリ集だけど、こっちの方が実用的?

324 :nobodyさん:04/10/14 23:53:23 ID:DOJgSO2G
XML SchemaからXSLTの雛形というかスケルトンというか
土台を出力してくれるようなツールって無いでしょうか?
フルスクラッチで作るの、面倒じゃないですか?

325 :nobodyさん:04/10/15 00:48:57 ID:???
>>324
スレ違いか
http://pc5.2ch.net/test/read.cgi/hp/1057198990/


326 :nobodyさん:04/12/06 00:30:36 ID:???
data1.xmlというファイルがあって中にxslファイルの参照先も書いてあるとします。
<xml...
<xslt:sheet1.xsl.....
<DataList>
<Data ID="0">
<String>データ0</String>
</Data>
<Data ID="0">
<String>データ0</String>
</Data>
<Data ID="0">
<String>データ0</String>
</Data>
</DataList>
このdata1.xmlファイルをdata1.xml?id=0みたいな呼び出し方をしてxslファイルにid=0という値を渡す方法ってあるのでしょうか?


327 :nobodyさん:04/12/06 15:30:17 ID:???
何言いたいんだかようわからん

328 :nobodyさん:04/12/06 15:34:45 ID:jrlDRA4f
URLを打ち込むときに
data1.xml?id=0と打ち込み、ID=0の商品に関する情報だけを
表示したいんです。
URLで打ち込んだデータをXSL内の変数に取り込みたいのです。
現在だと、hrefつかってもIDの数だけxmlファイルを作成しないと
いけなくなってしまうんです。

329 :nobodyさん:04/12/23 23:41:54 ID:???
>>328
今更ながら、xsltで全て作成してjavascriptでlocation.queryから引数受け取ってwindowのロード時に違うノードサクージョ

330 :nobodyさん:05/01/08 15:33:14 ID:???
すいません質問があります。
MSXSLを用いて変換を行おうとしているのですが
コマンドを打ち込んだときに

必要な属性'{http://www.w3.org/1999/XSL/Transform}version' が見つかりません

という変なエラーメッセージが出てしまいます。これはどうすればいいんでしょうか?

331 :nobodyさん:05/01/08 17:10:58 ID:???
330ですが
解決しちゃいました どうもです

332 :nobodyさん:05/01/10 19:16:25 ID:???
すみませんが誰かご教授下さい。 (マルチポストで申し訳ありません)

XMLのあるタグの属性が同じレベルのタグの属性とダブっっている時、
変換後にその属性のダブった部分を除きながら属性を並べたい場合は
どうすればよいでしょうか?

例えば

xml
<a>
<ele id="1"/>
<ele id="2"/>
<ele id="2"/>
<ele id="3"/>
<ele id="4"/>
<ele id="4"/>
<ele id="4"/>
<ele id="5"/>
</a>

を変換して

1 2 3 4 5

にするようなXSLを教えていただきたいのです。

よろしくお願いします。

333 :nobodyさん:05/01/10 19:48:07 ID:???
アホか。マルチポストに返答するわけ無いだろ。

334 :nobodyさん:05/01/22 19:16:33 ID:WsL3wQoU
<xsl:stylesheet xmlns:xsl="http://www.w3.org/(ry xmlns:aws="http://abc.com/"
exclude-result-prefixes="human">

<xsl:for-each select="people/person/age">
 ここで別のXMLを取ってくる
 <xsl:apply-templates select="human:hobbies/human:hoby" />
</xsl:for-each>

<xsl:template match="human:hobby">

335 :334:05/01/22 19:17:52 ID:WsL3wQoU
ああっ、途中で送ってしまった… orz

>>334のようにやると下のテンプレートの中身へ行かない?ようなのですが
どこに問題があるのでしょう?

336 :nobodyさん:05/01/24 03:30:34 ID:???
>>332
もう解決してるのかもしれんが
//ele[not(@id=following-sibling::node()/@id)]/@id
とかでどうすか?

337 :nobodyさん:05/01/30 14:52:43 ID:0RSaGusl
xmlをエクセルから作ってるんですが、日付が1900年形式でだされてしまいます。
それを表示する際に、dd-mmm-yyのフォーマットで表示したいんですが、どうすればよいでしょうか?



338 :nobodyさん:05/01/30 20:37:49 ID:0RSaGusl
http://exslt.orgのテンプレート使ってやってみたんですが
すごい遅くなりました。前もってデータを変換してXMLをつくった
方が良さそうです...

110 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)