2009 2009年 3 月 7 日
私は状況がそれをcommanedので、周りに掘ってあったことをJavascriptの策略の別の小さなピースはHERESに。 私のWebサイトのいずれかで、私は二回 "windows.onload"を実装しなければならなかったこのような状況があった。 私のような未熟な心(私は正直なところ私はjavascriptのフレームワークやライブラリを使用しているので、私は自分自身...悲しいですが本当で、単純な物事を行うには忘れられたました、と言わざるを得ない)となりましたでしょうまず最初に、次のメソッドです。 ...
にwindow.onload = onloadfn1。
にwindow.onload = onloadfn2。
にwindow.onload = onloadfn3。
等..
残念ですが、これは文句を言わない仕事... Javascriptの多くの実行科学を議論したくない...しかし、私の最近の経験によれば、最後の関数(onloadfn3)病気が実際に実行されます。
通常の状況では、私(私は後で少し話をします)とは違って...あなたはmutlipleのonload関数を実行するには、次のいずれかを行うことができ....
このようにまたは何か
関数doOnLoad(){
onloadfn1();
onloadfn2();
onloadfn3();
}
にwindow.onload = doOnLoad。
私の現在の状況については、私は上記のいずれかを使用することはできません...
なぜ私は、単一のonload関数内の2つの関数を呼び出すことなく、windows.onload回呼び出す必要がありましたか? ここに私の問題文をざっと見ては...
"個人用サイトのページは、WordPressのテーマのように構成されています.... つまり、すべてのサイトのページに含まれる共通のheader.phpのとFooter.phpがあります。 いくつかの共通のonload関数を実行するFooter.phpのonload関数のimplementaionがあります。 とは別に共通のonload関数によって行われたものから自分のONLOADの何かに必要があるいくつかのページがあります。 私はにwindow.onloadハンドラに直接コールバック関数を割り当てる場合は、 "Footer.phpで以前に割り当てられたコールバックをオーバー乗ります。
.... 私の問題は理解されている
?
よく! 私が見つけなかったことをいくつかのソリューションがあります。 それらはすべて非常に類似しており、主にサイモン·ウイルソン(で指定された溶液のimplementions http://simonwillison.net/2004/May/26/addLoadEvent/ )...
ソリューション:
単にサイトにこのjavascriptのコードを追加します。...
機能addLoadEvent(FUNC){
VAR oldonload =にwindow.onload;
もし(typeof演算にwindow.onload!= '関数'){
にwindow.onload =関数
する} else {
にwindow.onload =関数(){
{(oldonload)の場合
oldonload()
}
func()を
}
}
}
代わりに、通常の "windows.onload"のそれを呼び出す
addLoadEvent(FunctionToRunOnPageLoad);
addLoadEvent(関数(){
ページのロード*上で実行する/ *さらにコード
});
このコードスニペットの利点は...
1。 主に、それは以前の定義をオーバーライドすることなく、あなたのコードの別々の部品から呼び出され、複数のwindows.onloadイベントを持っていることができます
2。 それは本当に控えめです。 それはあなたの他のスクリプトとファイル内、または別のファイルに配置することができます。
3。 それはにwindow.onloadがすでに設定されている場合でも機能します。
5コメント |タグ: のTips&Tricks |に投稿されたベストプラクティス 、 JavasScript 、 Web開発 、 XSL
2008 2008年 9月 20 日
問題文:
私はXSLsでテキストエリアについては、この問題が発生しました。 あなたはブランク<textarea>タグを持っている場合、単純な言葉で、問題が発生し、それは<textarea />に縮小されます。
あなたはXSLとTEXTAREAの値に関するXMLデータに、以下のようなものがあった場合、すなわち、何も返しません...
<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>の
ブラウザはこれを認識しないとして、それはテキストエリアに実行するために、フォームの残りの部分はHTMLになります。
考えられる解決方法:
このフィールドのクライアント側の検証時に、追加されたこの余分なスペースの世話をするために、値tag.BEWARE:XSLで、XSLの後に改行なしスペース()を追加します。
<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>の
または
<xsl:value-of select="concat (DESCRIPTION,'')"/>
または
未知の属性を指す<xsl:value-of select="@unknown" />タグを挿入します。 これは、間に何を持っていない場合でも、PHPのXSLTパーサが、開始と終了のテキストエリアのタグを生成するように強制します。
または
終了タグを強制的にスペースを含むの<xsl:text>フィールドを挿入します。
しかし、上記のソリューションが問題を解決するように見えるかもしれませんが、私はまだ彼らが正しいと確信し、それを修正するための最良の方法していない。 この癖を修正する他の良い方法があれば、私たちに知らせてください。
コメントはありません |タグ: XSLの癖 |に投稿されたXSL
2008 2008年 9月 14 日
IFまたはXSL:私はXSLをしなければならないたびにテストが、私は参考書に戻っています。 私はそれらを覚えているように見えることはありません。 むしろ、一つの場所で、可能であれば、それらのすべてを持つことが必要なときに呼ばれる準備ができ好む人は、ちょうど私と同じように、そこに多くがあるだろうと思った。
新しいている人のために... XSLの構文:IF
<xsl:if test="expression">
< - 内容:テンプレート - >
オプション</ xsl:であれば>
XSL:IF /のxsl:時テストコレクション
以下の条件がすべての説明、簡単な自己である。 私はそれは多くの説明を必要としないと信じて
<xsl:if test="position()=last()-1">
このリストの最後が、1つの要素であれば!
オプション</ xsl:であれば>
<xsl:if test="SALARY> 5000 ">
この人の給料はRsよりも大きくなっています。 5000
オプション</ xsl:であれば>
<xsl:if test="count(JOBS)> 3 ">
このリストの3つ以上のジョブがあります!
オプション</ xsl:であれば>
<xsl:if test="(@DEPT ='SALES')または(@JOINYEAR = '1997')">
この人は1997年です。参加の営業部門または彼の年からです。
オプション</ xsl:であれば>
<xsl:if test="EXPERIENCE">
この人は少なくとも1つの経験の子要素を持っています。
オプション</ xsl:であれば>
<xsl:if test="@HOBBY">
人は趣味属性を持っています。
オプション</ xsl:であれば>
CHOOSE / XSL:同じテキストの条件は、XSLを使用することができる場合なども
のxsl:を選択
XSLTのXSL:しかし、もしいくつかの重要な違いがあります。選択する命令は、xslのようなものです。
•ワンXSL:選択要素は、複数の条件をテストし、真である条件に基づいて結果ツリーに異なるノードを追加することができます。
•XSL:要素が条件のいずれもtrueでない場合は、結果ツリーに追加するには、デフォルトのテンプレートを持つことができますを選択します。 (XSLの比較:これは、 "else"の条件に相当するものはありません、場合)。
•XSL:要素の場合:あなたは、XSLの中には任意の整形式の要素を置くことができますが、要素は、それが動作するために必要な特定のサブ要素があります]を選択します。
<xsl:choose>
<xsl:when test="boolean-expression">
このブール式が距離ですときに何かをする
オプション</ xsl:時>
<xsl:otherwise>は他の何かを</ XSLを:特に>
オプション</ xsl:を選択>
コメントはありません |タグ: XSL:IF 、 XSL:WHEN |に投稿されたXSL
2008 13 2008年 08月
あなたの要件は、値の区切り文字列を格納したXMLのノードの値を、分割する場合は、個々の項目に、あなたは正しい場所に到達した...以下の例を見てください。 XMLとXSLを少し精通している場合...私はあなたがどんな説明が必要ないと思います。
それはあなたが後にあるものだ場合、後の部分文字列-:コール·テンプレートは、xsl:部分列の前に、XSLまた、この例では、XSLのようなXSL関数の使用が含まれています。
変換されるXML(food.xml): -
タスクは、タグ "キーワード"には、カンマで区切られた文字列をトークン化することであると仮定
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<keywords>Fruits, Vegetables, Pulses, Meat, Cereals </keywords>
</food>
XSL(food.xsl): -
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>XSL 1.0 Delimited String Tokeniser</title>
</head>
<body>
<xsl:value-of select="food/meta"/>
<div >
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="food/keywords" />
<xsl:with-param name="delimitr" select="','" />
</xsl:call-template>
</div>
</body>
</html>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimitr" />
<xsl:choose>
<xsl:when test="contains($string, $delimitr)">
<div style="border:1px solid red;">
<h3><xsl:value-of select="substring-before($string,$delimitr)" /></h3>
<xsl:variable name="data" select="substring-before($string,$delimitr)"/>
</div>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="substring-after($string, $delimitr)" /><xsl:with-param name="delimitr" select="$delimitr" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<div style="border:1px solid red;">
<h3><xsl:value-of select="$string" /></h3>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
結果の出力HTML: -
<div>
<div style="border: 1px solid red;">
<h3>Fruits</h3>
</div>
<div style="border: 1px solid red;">
<h3> Vegetables</h3>
</div>
<div style="border: 1px solid red;">
<h3> Pulses</h3>
</div>
<div style="border: 1px solid red;">
<h3> Meat</h3>
</div>
<div style="border: 1px solid red;">
<h3> Cereals </h3>
</div>
</div>
言うまでもなく...ちょうどあなたの選択の区切り文字にパラメータ "delimitr"を変更
コメントなし |タグ: チュートリアル 、 XSLT |に投稿されませんXSL
2008 4 2008年 08月
今日はXSLを作成している間私は、この蓄熱問題を抱えていた。 ネットを通じて答えを探したが、いずれかを見つけるcouldntの.... 実際に私は推測する! 私は私の問題が何であったか知っているDINTので、私はは何を求めますか?
とにかく! 場合にだけ、あなたは私トンに感謝し...あなたはこのページに着陸する管理FORCEの力でも、何とか、この非常に同じ問題を抱えている...そして、あなたが誤っていくつかの奇妙な運命は、このページに上陸していて、ことが起こる場合XSLの開発者は、 今このメモしておいてください。未来の原因については 、いつか、この問題に直面している場合、FORCEはあなたと一緒ではないかもしれません。
問題文:
その中に複数のアイテムを持つ2つのノードがあるときは、私は、このXMLを持っており、これらの2つのノード間でアイテムは1対1で対応している。 次の例では、ノード<array内の各項目name="PLAYURL" />ノード<arrayの項目に(対応する位置)に関連するname="SITENAME" />
<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>
今、私は<array name="SITENAME">を通じて、私はループループを持って、私は<array name="PLAYURL">に関連する項目を(対応する位置)を取得したい、
何がnormalyかを試してみたいとは...
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
SORRY! これは文句を言わない仕事...ああ! Surpised ...
今、あなたはおそらく、このような何かを試してみたい...
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
そして再び、これは文句を言わない仕事...今あなたは、いくつかのXSLを知って、任意の助けになるかもしれないと思う皆に連絡しようとすると、あなたの頭を悩ま...あなたは、他のすべてのオプションを試してみてください...そして、まだそれは文句を言わない仕事...まあ! 私には少なくとも何が起こったかをザッツ...
DONT絶望! このトライ
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ <xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
ITワークス理由は聞かいけない。 私は正当な理由を持っていけない...あなたがしなければ原因! コメントを削除しないでください。 それはかなり便利かもしれません。 また! このポストのためのより良いTITLEを使用している場合、私のラインドロップしない 
コメントなし |タグ: XSL 、 XSLの癖 、 XSLT |に投稿されませんXSL
2008 2 2008年 08月
先週私は、クライアントのプログレシブHTML / CSSのレイアウトを作成したIE6、IE7とFF 3でそれをテストし、完全に大丈夫だった...まで! レイアウトはmanufactingサイクルのさらに下行ってきました。 それに失敗しました。 HTMLレイアウトはそれに適用されるXSLとXMLに変換されたときにページレイアウトの要素だけであらゆる場所に行きました...がっかり!
私はこのSH **を修正する必要があります場合は、月曜日の朝の予想では、週末OK眠れませんでした。 しかし、今の状況、これらの種類(ブラウザの癖、私が意味する)を扱うにはほとんどexperinceを持って、私はそれがなくDOCTYPE他には何もしなければならなかった知っていた.... そしてそれは...
問題:
あなたの変換は明示的にデフォルトのDOCTYPEが含まれていますので、あなたは、DOCTYPEを制御したい、あなたのレイアウトはトスのために外となります。
ソリューション:
XSLTの仕様は、チョイスのDOCTYPEを設定するには、出力メソッドを提供します。 また、私達のUI開発者のために、興味のあるトピックは次のようになります。 HTML出力メソッドとXML出力メソッド 。
よく! あなたが退屈する前に、ここで修正です。
例えば、あなたのHTMLのバージョンでは、次のDOCTYPEを持っている場合: -
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
その後、XSLには、次のものがなければならない: -
<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/loose.dtd" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" />
そして最後に! あなたのXSLTの出力は、選択したDOCTYPEに従うことを確認しないでください。
1コメント |タグ: ブラウザの癖 、 Doctypeの 、 XML 、 XSLは |に投稿されたXSL
2008 2008年 5月 4 日
XML / XSLがdomianで変換した場合、我々は(再利用可能ななされる)ライブラリ項目を使用する動的なコードのピースはしたい時があります。 私が意味するものは、おそらくこの例のシナリオをより明確にすることができます。
あなたのウェブサイト(および、XML、XSL transfroms ofcourseのを使用)を作成しており、ページのほとんどはコメントモジュールを持っているでしょう想像してみてください。 よく! あなたはすべてのページテンプレート(私が言うが、メンテナンスや手直し悪夢作る持っていけない)、または、より良いにこのコードをコピーしたり貼り付けか、あなたがあなたのページにそれを望むどこまででプルアップすることがINCLUDEファイルを作成します( S)...
では、どのようにXSL INCLUDEファイルを作成し、別のXSLファイルの内部に含まれていますか ? ここでどのようには...
物事を明確にするため...ここにあなたが作成したファイルの簡単なリストは...ここで、我々は、食品と呼ばれる親ページに果物や野菜についての情報を含むでしょう。
1。 food.xml - 変換が適用される上のXMLデータファイル
2。 food.xsl - 私たちのfood.xmlを変えていく主なXSLファイル、
3。 inc_fruits.xsl - XSLは、果物のデータをレンダリングするファイルを含む
4。 inc_vegtables.xsl - XSLはvetetablesデータをレンダリングするファイルを含める
私は非常に説明していると思ういけない、上記の要素のコードは、自明だろう...
FOOD.XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
<vegetables>
<item name="spinach" moreinfo="http://www.spinach.com">Spinach is full of iron</item>
<item name="asparagus" moreinfo="http://www.asparagus.com">Asparagus contains loads of vitamin D </item>
<item name="fenugreek" moreinfo="http://www.fenugreek.com">Fenugreek is rich in vitamin C</item>
</vegetables>
</food>
FOOD.XSL
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="inc_fruits.xsl" />
<xsl:include href="inc_vegetables.xsl" />
<xsl:template match="/">
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><xsl:value-of select="/food/description" /></h3>
Modification Date : <xsl:value-of select="/food/date" />
<hr/>
<h5> About Fruits</h5>
<xsl:call-template name="about_fruits"/>
<hr/>
<h5> About Vegetables</h5>
<xsl:call-template name="about_vegetables"/>
<hr/>
</ BODY>
</ HTML>
オプション</ xsl:テンプレート>
オプション</ xsl:スタイルシート>
INC_FRUITS.XSL <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_fruits">
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
INC_VEGETABLES.XSL <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_vegetables">
<xsl:for-each select="/food/vegetables/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
ここで、上記のすべてのファイルをダウンロードする(252ダウンロード)
コメントはありません |タグ: チュートリアル 、 XML 、 XSL 、 XSLが含まれ 、 XSLT |に投稿されたXSL
2008 2008年 4 月 4 日
XMLとXSLを使用する場合は、属性とXSLでXMLノードの値で遊んでする必要がある場合、あなたは、時間に出くわすかもしれません。 彼らはこのことについて長いったらしい情報を持つサイトの負荷ですが、私が見つけたどれも簡単かつ正確ませんでした...これは、XML / XSLチュートリアルではありませんが、私の試みは、チートリストのいくつかの並べ替えをまとめるために...
私たちが仕事するサンプルXMLは次のようになります。...
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
</food>
したがって、XSLを使用して、私たちの上記のXMLを変換を開始できます
例1:選択した属性に値を表示する
<xsl:value-of select="/food/fruits/item[@name='orange']" /><br />
to get more information about <a href="{/food/fruits/item[@name='orange']/@moreinfo}" target="new" ><xsl:value-of select="/food/fruits/item[@name='orange']/@name" /> </a>
HTMLの出力結果は次のようになります
Orange is the color and rich in vitamin C,
to get more information about <a href="http://www.orange.com" target="new">
例2:ループして、すべてのXML属性名とその値を表示する
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
HTMLの出力結果は次のようになります
attribute name : name, attribute value : mango
attribute name : moreinfo, attribute value : http://www.mango.com
attribute name : name, attribute value : banana
attribute name : moreinfo, attribute value : http://www.banana.com
attribute name : name, attribute value : orange
attribute name : moreinfo, attribute value : http://www.orange.com
attribute name : name, attribute value : Papaya
attribute name : moreinfo, attribute value : http://www.papaya.com
(245ダウンロード)ここで、上記のすべてのファイルをダウンロード
このスペースを見て、私は新しい知見でこれを更新しておこう...
コメントなし |タグ: チュートリアル 、 XML 、 XML属性 、 XSL 、 XSLT |に投稿されませんXSL