2009 3月 7 二零零九年
下面,我有挖,因為情況commaned它的另一個小的Javascript弄虛作假的peice。 在我的網站之一,我有這種情況,在那裡我有兩次實施“windows.onload”。 將來到像我這樣的經驗的心(我必須誠實地說,因為我一直在使用JavaScript框架和圖書館,我福爾戈我自己...傷心,但真正做簡單的事情)的第一件事,就是下面的方法...
的window.onload = onloadfn1;
的window.onload = onloadfn2;
的window.onload = onloadfn3;
等等......
抱歉地說,但是,這不會工作,不想討論太多的Javascript執行科學......但根據我最近的經驗,只有最後一個函數(onloadfn3)會生病實際上得到執行。
在正常情況下,與礦(後來,我談一點),你可以做下列之一執行複式的onload函數....
或類似這樣的東西
函數doOnLoad(){
onloadfn1();
onloadfn2();
onloadfn3();
}
的window.onload = doOnLoad;
對於我目前的狀況,我不能使用上述...
為什麼我需要調用windows.onload兩次,而不是在一個單一的onload函數調用兩個函數? 這裡是快看看我的問題陳述...
“我的網站頁面結構像WordPress主題.... 即有一個共同的header.php文件,包括Footer.php獲取到所有的網站頁面。 那裡是中Footer.php的onload的功能implementaion做一些常見的onload函數。 有幾頁,需要自己的OnLoad的東西,除了共同onload函數所做的。 如果我給回調函數直接在window.onload處理程序,它會隨著騎在Footer.php以前分配的回調“
.... 是我的問題的理解
?
好吧! 有幾個解決方案,我沒有找到。 他們都非常相似,主要由西蒙·威利森(給出一個解決方案implementions http://simonwillison.net/2004/May/26/addLoadEvent/ )...
解決方案:
只是這段JavaScript代碼添加到網站...
功能addLoadEvent(FUNC){
oldonload = window.onload的;
(typeof運算的window.onload ='功能'){
的window.onload =功能
}否則{
=(){
(oldonload){
oldonload()
}
函數()
}
}
}
並調用,而不是通常“windows.onload”
addLoadEvent(FunctionToRunOnPageLoad);
addLoadEvent(函數(){
/ *更多的代碼運行在頁面加載*
});
這個代碼片斷的優勢...
1。 首先,它可以讓你有多個windows.onload事件,呼籲從你的代碼的單獨部分,不overridding以前的定義
2。 這實在是不顯眼的。 它可以被放置在與其它腳本文件中或在一個單獨的文件。
3。 它的工作原理window.onload的,即使已經設置。
5個評論 |標籤: 提示和技巧 |張貼在最佳實踐 , JavasScript , Web開發人員 , XSL
2008 2008年 09月 20日
問題陳述:
我跑進這是一個有關的XSL文本域的問題。 在簡單的話,問題出現了,當你有一個空白<TEXTAREA>標記,然後將其折疊<textarea />。
也就是說,如果你有像您的XSL和XML數據textarea的值以下,返回什麼...
<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ TEXTAREA>
由於瀏覽器不認識到這一點,這將導致其他形式的HTML文本區域運行。
可能解決方案:
在XSL中添加非破空間後的XSL():價值tag.BEWARE,要照顧這個額外的空間,在這一領域的客戶端驗證,您添加。
<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ TEXTAREA>
或
<xsl:value-of select="concat (DESCRIPTION,'')"/>
或
插入1 <xsl:value-of select="@unknown" />標籤指向一個未知的屬性。 這將強制PHP XSLT分析器生成一個文本區域的開幕和閉幕的標籤,即使它有什麼之間。
或
插入<xsl:text>領域,包含空間,強制關閉標籤。
然而,雖然上述方案似乎來解決這個問題,我仍然不相信他們是正確的和最佳的方式來解決它。 如果有任何其他更好的方式解決這個怪癖,請讓我們知道。
張貼在XSL中沒有評論 |標籤: XSL怪癖
2008 2008年 09月 14日
我每次都做一個XSL:IF或XSL:當測試,我回去的參考書籍。 我似乎永遠記住他們。 我以為那裡會有更多和我一樣,他們寧願喜歡所有的人,可能在一個地方,需要時隨時可以稱為。
對於那些誰是新的XSL的語法:中頻
<xsl:if test="expression">
< - 內容:模板 - >
</ XSL:如果>
在xsl:如果/ XSL:當測試集
以下條件是所有簡單和自明。 所以,我相信它不會需要太多的解釋
<xsl:if test="position()=last()-1">
這樣,如果列表中的最後一個元素!
</ XSL:如果>
<xsl:if test="SALARY> 5000“>
這個人的工資是比盧比更大。 5000
</ XSL:如果>
<xsl:if test="count(JOBS)> 3“>
在此列表中的工作有3個以上!
</ XSL:如果>
<xsl:if test="(@DEPT ='SALES')或(@JOINYEAR = '1997')">
此人是從1997年的銷售部門或加入他的新年
</ XSL:如果>
<xsl:if test="EXPERIENCE">
此人有至少一個經驗的子元素。
</ XSL:如果>
<xsl:if test="@HOBBY">
人有一個愛好屬性。
</ XSL:如果>
以及XSL:選擇/ XSL的條件,可用於相同的文字:
XSL:選擇
XSLT的XSL:choose指令是類似的xsl:如果,但有幾個關鍵的不同:
•一個XSL:選擇單元可以測試多個條件,根據這些條件是真正的結果樹,並添加不同的節點。
•一個xsl:選擇元素可以有一個默認的模板添加到結果樹中,如果條件都不是真實的。 (比較的xsl:如果沒有相當於一個“其他”的條件。)
•XSL:選擇元素具有特定的子元素,有必要為它工作,而你可以把任何格式的內容,你想裡面一個xsl:if元素。
<xsl:choose>的
<xsl:when test="boolean-expression">
做一些事情時,這個布爾表達式是TURE
</ XSL:當>
<xsl:otherwise>做別的東西</ XSL:否則>
</ XSL:選擇>
沒有評論 |標籤: XSL:中頻 , XSL: |張貼在XSL中
2008 2008年 8月 13
如果你的要求是分裂一個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 2008年 8月 4
我有這個strage問題,同時創造一個XSL的今天。 看著整個淨的答案,但couldnt找到任何.... 其實我猜! DINT我知道我的問題是什麼,所以我看的呢?
無論如何! 以防萬一你有這同樣的問題也莫名其妙的力量,你成功地降落在此頁的權力......你會感謝我萬噸......如果你不小心降落此頁面上的一些奇怪的命運和你剛好是一個XSL開發, 會盡此注意現在,未來的事業,如果有一天,你面對這個問題,那麼該部隊可能不會與你同在。
問題陳述:
我有這樣的XML,其中有兩個節點與多個項目中,這兩個節點之間的項目有一一對應。 在下面的例子中,每個在節點<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>
對不起!! 這不會工作......啊!! 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,可能是有幫助......你盡一切其他的選項,它仍然不會工作嘛! 那是什麼發生在我ATLEAST ...
回复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>
不要問我為什麼工作。 因為我沒有權利的原因......如果你這樣做! 請不要刪除評論。 這可能是非常有用的。 還可以! 如果你有更好的這篇文章的標題,請給我一條線 
沒有評論 |標籤: XSL , XSL怪癖 , XSLT |張貼在XSL中
2008 2008年 8月 2
上週,我創建了一個客戶端progessive HTML / CSS佈局,在IE6,IE7和FF測試,似乎完全正常......直到! 佈局更進一步下來manufacting週期。 它失敗了。 頁面佈局元素在HTML佈局時被轉換成XSL和XML應用到它...遊民!地方去!
無法入睡週末,預計在星期一早上,當我要解決這個的SH **。 但現在有一點在處理這樣的情況下(瀏覽器怪癖,我的意思)的遭遇,我知道了,別的什麼也不做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轉換是你的結構域,然後還有時候,我們需要一個動態代碼peice要使用庫項目(可重複使用的要作出)。 我的意思,可能與這個示例場景中更明確。
想像你正在創建一個網站(使用的XML,XSL transfroms當然)和大多數的網頁將有一個評論模塊 。 好吧! 然後,複製或粘貼此代碼到每一頁的模板(我不說,但維修和返工一場噩夢),甚至更好,你創建包含文件可以在任何你想它在您的網頁拉( S)...
那麼,如何創造一個XSL INCLUDE文件,它包括在另一個XSL文件 ? 這裡是如何...
只是把事情說清楚......這裡是快速的文件列表,您將創建......在這裡,我們將納入食品父頁左右的水果和蔬菜的信息。
1。 food.xml - XML數據文件的轉換將應用於
2。 food.xsl - 主要XSL文件,這將改變我們的food.xml
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>
所以讓我們開始改變我們的上面的XML使用XSL
例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
下載上述所有文件(880下載)
觀看這個空間,我會不斷更新這一新的發現......
沒有評論 |標籤: 教程 , XML , XML屬性 , XSL , XSLT |張貼在XSL中