XSL/XSLT
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/09/05 10:49ID:dYMWGvtU0497nobodyさん
2007/01/25(木) 13:51:41ID:???呼び出されたテンプレートで、呼び出し元の要素名を使いたいです。
どのようにすればいいですか?
0498nobodyさん
2007/01/25(木) 14:20:29ID:GKXwIW4P例えば
<fruit>
<apple>うまい</apple>
<banana>あんまりすきじゃない。</banana>
フルーツ。
</fruit>
っていうXMLがあったとして、
「フルーツ。」の部分にテンプレート適用したいんだが、
XPathとかで指定できないの?
0499nobodyさん
2007/01/26(金) 01:44:49ID:???Recommendations
だそうな。
>>497
呼び出し元が親の場合:
select="local-name(..)"
そのほか、親の親なら"local-name(../..)"
親以外から呼ばれる場合:
呼ぶ方:
<xsl:apply-template select="ほげほげ">
<xsl:with-param name="parent" select"."/>
</xsl:apply-template>
呼ばれる方:
<xsl:template match="ほげほげ">
<xsl:param name="parent"/>
<xsl:value-of select="local-name($parent)"/>
</xsl:template>
>>498
<xsl:apply-template select="text()"/>
ただし、appleとbananaの間などの空白や改行にも適用される。
0500498
2007/01/26(金) 06:55:42ID:BzbrIFkBどうも!できた
0501nobodyさん
2007/02/14(水) 12:09:05ID:???半年以上経っているが…
Firefoxでページほぼ全てを選択(全部はダメ)→
右クリックから「選択した部分のソースを表示」
これで行ける。
0502nobodyさん
2007/02/14(水) 14:32:44ID:???0503nobodyさん
2007/03/15(木) 02:01:11ID:Qxvsm42DservletでIEにXMLを返却して、サーバに置いてあるXSLTを読ませて画面を表示させたいです。
↓レスポンスのXML
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="サーバに置いてあるXSLTのパス"?>
:
画面の表示はできたのですが、レスポンスが異常に遅いです。
HTTPのリクエストを確認したところ、
IEがサーバからXMLを受け取ってから、XSLTに対して再度HTTPリクエストを投げるのに時間がかかっているようです。
これはIEのXMLプロセッサ(MSXML)の問題なのでしょうか?
そうなのであれば、レスポンスを向上させる手段としてどういった方法が一般的なのでしょうか?
何かご存知の方、いらっしゃいましたら助言いただきたいです。
よろしくお願いします。
0504nobodyさん
2007/03/15(木) 02:18:33ID:???0505503
2007/03/15(木) 02:32:34ID:Qxvsm42D0506nobodyさん
2007/03/30(金) 22:01:54ID:???IEにXMLの変換をやらせるんじゃなくて、サーバ側で変換した結果をクライアントにかえしたら?
0507nobodyさん
2007/03/31(土) 11:26:38ID:jJ1h8S+F興味無いか...○| ̄|_
0508nobodyさん
2007/04/03(火) 01:44:44ID:???0509nobodyさん
2007/04/05(木) 19:40:38ID:???>>484
<xsl:template match="foo">
<xsl:text>var msg = "</xsl:text>
<xsl:call-template name="escape">
<xsl:with-param name="str" select="."/>
</xsl:call-template>
<xsl:text>";</xsl:text>
</xsl:template>
<xsl:template name="escape">
<xsl:param name="str"/>
<xsl:if test="string-length($str) != 0">
<xsl:variable name="char" select="substring($str,1,1)"/>
<xsl:choose>
<xsl:when test="$char = '\'">\\</xsl:when>
<xsl:when test="$char = '"'">\"</xsl:when>
<xsl:when test="$char = ' '">\n</xsl:when>
<xsl:when test="$char = '	'">\t</xsl:when>
<xsl:otherwise><xsl:value-of select="$char"/></xsl:otherwise>
</xsl:choose>
<xsl:call-template name="escape">
<xsl:with-param name="str" select="substring($str,2)"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
0510nobodyさん
2008/03/05(水) 06:00:45ID:d95zJRJ0http://sourceforge.net/projects/xslt2processor/
JavaのXSLT2.0プロセッサ(SaxonとAltovaXML)をPHPで使えるようにするためのクラスらしい
ttp://xiss.g.hatena.ne.jp/orzccc/20080301/php_xslt2processor 経由
0511nobodyさん
2008/03/26(水) 19:55:43ID:???0512nobodyさん
2008/03/26(水) 23:41:09ID:???ほかにスレもないし
0513nobodyさん
2008/04/12(土) 16:43:38ID:???掲示板の様な物を作成する為に、掲示板のタイトルと本文と書き込み日時をXMLで出力するPHPを書き、
別途表示の為のXSLTをスキンとして固定ファイルで用意しようと考えているのですが、
この方式で何処まで出来るのかがわからず、戸惑っています。
質問1:
例えば掲示板で良くある処理として、「3日以内の書き込みの場合にタイトルの最後に[最新情報]と追記する」等がありますが、
掲示板XMLのデータが「タイトル」「本文」「書き込み日時」しかなかったとした場合に、
XSLT側で[最新情報]と追記する方法はあるのでしょうか?
質問2:
仮に固定ファイルのXSLTでは「質問1」の処理が出来ないと仮定した場合での質問なのですが、
これらの処理の実現方法として、PHPで作成されるXML側で日付を判断し、
<status>NEW</status>
等を挿入しておくという方法を考えてみたのですが、
XML+XSLTでこの様な方法は一般的に行われているのでしょうか。(変じゃないですか?という事です^^;)
質問3:
XSLTを使う目的が「掲示板のスキン(見た目)変更をしやすく」といった目的なのですが、
質問1や質問2で例に挙げたような機能をいくつも追加した場合、
かえってスキンPHPファイルを用意してそれを変更するほうが簡単になってしまうのではないかと思ってしまいます。
スキン機能をXML+XSLTで実現するか、PHPで実現するか、どちらの方が良いか率直なご感想をお聞かせ願えないでしょうか?
(XSLTであればこんな時便利なはず!等etc...)
0514nobodyさん
2008/04/12(土) 17:46:42ID:???無理
A2.
俺だったら要素じゃなくて属性を使うかもだけど
まあ好きにすればいいんじゃないの
A3.
世の中XSLTに対応したブラウザばかりじゃないとか
XSLTで込み入ったことをやろうとすると果てしなく面倒くさいとか
そもそもXMLにこだわる必要がどれだけあんのかとか
いろいろ思うことはあるけど
まあ好きにすればいいんじゃないの
0515nobodyさん
2008/04/12(土) 18:11:14ID:???もっと割り切った仕様にすればいいのに
中途半端に文字列処理とか入れるから
0516nobodyさん
2008/04/19(土) 01:12:06ID:???お前が好きだ
0517nobodyさん
2008/04/20(日) 18:54:06ID:???0518nobodyさん
2008/06/11(水) 03:05:25ID:???validationを行いDTDを毎回ダウンロードしてしまうのですが、これを止める
ことはできないでしょうか。xalanはjava版でバージョンは2.7.0-5です。
0519nobodyさん
2008/06/21(土) 10:42:11ID:k45WphEu<fo:table>
<fo:table-row>
<fo:table-cell><fo:block>(短いテキスト)</fo:block></fo:table-cell>
<fo:table-cell number-rows-spanned="2"><fo:block>(すごく長いテキスト)</fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell><fo:block>(短いテキスト)</fo:block></fo:table-cell>
</fo:table-row>
</fo:table>
これをレンダリングするとセルの大きさが
-------------------------
|********|**************|
|--------|**************|
|**** |**************|
| |**************|
| |************ |
| | |
-------------------------
このようになってしまいますが、左の列の高さを均等にする方法内でしょうか
事前に計算しろという選択肢は無しで
0520nobodyさん
2008/06/21(土) 10:43:16ID:???0521nobodyさん
2008/06/21(土) 23:22:26ID:Cd2mCbay「〜〜.html%3FA」
というURLを
xslで、
<xsl:value-of select="要素1"/>
と指定して変換したXMLを見ると、%3FAの部分が「?」に
なってしまって、リンクできないんですけど、対処法
ご存知の方居ませんかね?
0522nobodyさん
2008/06/21(土) 23:41:49ID:Cd2mCbay<xsl:value-of select="要素1"/> の指定でも出力されたXML自体は
のソースちゃんと%3FAになってました。
%3FAを エンコード済みの?と解釈してしまっている側の問題ですね、
本質的には。
ただ、ブラウザを弄るのは現実的ではないので、何とかxsl側で対処
出来ないでしょうか。
0523nobodyさん
2008/06/21(土) 23:53:44ID:???出力されたXMLをhtmlにもう一回変換して
ブラウザから見たらちゃんとしたURLへの
リンクに成ってました。
RSS出力してた時はリンクが上手く飛ばなかった
んですが、同じ<a〜〜>のタグでも、ブラウザは
RSSとHTMLで違う解釈するんですね、、、
0524nobodyさん
2008/08/23(土) 12:22:35ID:???需要ないのかなあ
0525nobodyさん
2008/08/24(日) 23:33:07ID:???PHPだと言語側の対応がイマイチで使いづらいんだ。
0526nobodyさん
2008/08/25(月) 09:55:30ID:???0527nobodyさん
2008/10/31(金) 11:22:13ID:???0528nobodyさん
2009/02/13(金) 15:22:35ID:X83R2PAWfo:block-containerで直接的に画面内での座標指定をしているため、その時の周回の回数から座標をY方向に計算してズラしながら配置していきたいです。
CやJavaでは、forの構文では、この中でiを見ればいま何週目か?を参照できます。
for(int i=0;i<回数;i++){
〜処理〜
}
が、
XSLTのfor-each文(もしくはその他)で、これと同じように、内部から「現在何回目か」を見る方法ってありますか?
xsl:variableでは変数なのに代入はできないそうで困ってます。
0529nobodyさん
2009/02/13(金) 15:31:04ID:???ループの中で何番目か調べるのはposition()
<xsl:for-each select="/parent/child">
<xsl:value-of select="position()" />番目のノードです
</xsl:for-each>
ただし最初が0でなく1なので要注意
0530nobodyさん
2009/02/13(金) 16:09:55ID:X83R2PAWありがとうございます。
ループに関しては思ったとおりのことができました。
XSLTでは、再代入できる変数のようなものを使うことは不可能ですか?
ループ以外でも、XSLT内で計算するために、蓄積的に数値を足していける変数を使いたいのですが。
0531nobodyさん
2009/02/13(金) 18:12:20ID:???0532nobodyさん
2009/02/18(水) 16:06:36ID:/wQ0UVxh0533nobodyさん
2009/04/17(金) 04:58:20ID:???sourceforge.jp でソース公開してます。
http://www.koiroha.org/kwt/xsl/index.xhtml
0534nobodyさん
2010/01/11(月) 13:37:58ID:x+0DsgF/0535nobodyさん
2010/01/14(木) 11:50:46ID:???0536nobodyさん
2010/08/26(木) 10:38:32ID:CJC7O04v既に前レスから半年、ここ、まだ誰かいるかなぁ
XSLTで、例えば元データにaltタグが無ければ変換をエラーにするといったことは出来るのでしょうか?
簡易html-lintとして使えると嬉しいっす
0537nobodyさん
2010/08/26(木) 13:46:34ID:???0538nobodyさん
2012/02/29(水) 07:12:13.10ID:???�@のような構造のXMLがあり、
�@に従うデータが�Aのような形できます。
�Aにおいて、Aは親で、BはAの子、
CはBの子となっており、�Bのような形に変換したいです。
このときxsltではどのようにかけばよろしいでしょうか?
�@�A�Bのイメージは次レスで書きます。
0539nobodyさん
2012/02/29(水) 07:12:37.26ID:???<choice>
<element type="A">
<element type="B">
<element type="C">
<choice>
-----------�A-----------
<A>
<B>
<C>
<C>
<B>
<B>
<C>
-----------�B-----------
<A>
<B>
<C></C>
<C></C>
</B>
<B></B>
<B>
<C></C>
</B>
</A>
0540nobodyさん
2012/03/04(日) 02:16:44.31ID:???XMLじゃないデータ (2) をXMLであるデータ (3) に変換したいってこと?
だったらそれはXSLTの仕事ではない
0541nobodyさん
2012/09/13(木) 16:58:26.02ID:2LiGXsgg<table>
<bookDescription>
<bookCode>
<price>100<price>
</bookCode>
<title>X</title>
〜〜〜
</bookDescription>
</table>
な感じで、bookDescriptionをpriceでascendingで表示したいと思います。
xsltで<xsl:sort select="bookCode/price" order="ascending"/>を入れるとエラーが出でしまいます。
0542nobodyさん
2012/09/13(木) 16:59:36.50ID:2LiGXsgg<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="table">
<body>
<h2>Test</h2>
<xsl:apply-templates/>
</body>
</xsl:template>
<xsl:template match="bookDescription">
<!--<xsl:sort select="bookCode/price" order="ascending"/>-->
</xsl:template>
<xsl:template match="bookDescription">
<table border="1">
<tr>
<td><xsl:value-of select="bookCode"/></td>
<td><xsl:value-of select="title"/></td>
</tr>
</table>
<br />
</xsl:template>
</xsl:stylesheet>
どうすればいいのでしょうか?
0543nobodyさん
2012/09/14(金) 01:56:17.60ID:???こう書くとエラー無くそれらしく表示されました
<xsl:template match="table">
<body>
<h2>Test</h2>
<xsl:apply-templates>
<xsl:sort select="bookCode/price" order="ascending"/>
</xsl:apply-templates>
</body>
</xsl:template>
0544nobodyさん
2012/09/14(金) 06:24:33.02ID:B4mrueCy無事できました。
ありがとうございます。
0545nobodyさん
2014/01/15(水) 12:22:25.95ID:???0546nobodyさん
2014/01/22(水) 10:21:56.60ID:???0547nobodyさん
2014/06/29(日) 13:39:21.42ID:dCDFM+DD★+ニュース板
・ 2NN (推薦)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推薦)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推薦)
・ READ2CH
・ i-ikioi
※ 要タイトル名検索
※ 2chブラウザ併用推奨
■ このスレッドは過去ログ倉庫に格納されています