討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
關於在XML中使用Textarea的換行符號問題...
更改我的閱讀文章字型大小
作者 : jiaga0522(JG)
[ 貼文 14 | 人氣 6827 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/24 上午 01:48:13
XML
<Body>
 <Line>XXX</Line>
 <Line>YYY</Line>
 <Line>ZZZ</Line>
</Body>

XSL
<textarea="type" name="Text" cols="60" rows="10">
 <xsl:for-each select="Body/Line">
  <xsl:value-of select="."/>
 <xsl:for-each>
</textarea>

如何將XML的三行資料讀入Textarea,並且能換行。
我試過了/n、/r/n、等等,都會被當做字串。

  <xsl:value-of select="concat(.,'/n')"/>
以上內容會被輸出成「XXX/nYYY/nZZZ/n」

  <xsl:value-of select="."/>/n
以上內容會被輸出成:
XXX/n
 YYY/n
 ZZZ/n

「 YYY/n」最前面的空白是「 <xsl:for-each>」的第一個空白。
「 ZZZ/n」最前面的空白是「 <xsl:for-each>」的第一個空白。
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jiaga0522註記此篇回應為最佳解答 2005/8/24 下午 04:52:46
可以用 HTML Entity:
<xsl:text> </xsl:text>
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jiaga0522註記此篇回應為最佳解答 2005/8/24 下午 04:56:05
&#x0a;
(把上面變回半形)
作者 : jiaga0522(JG)
[ 貼文 14 | 人氣 6827 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/25 下午 11:55:53
感謝您的回答...^^

不過想再問一個問題...^^!

我將XML...改成以下形式
<Body>
 <Line>XXX[&#xA;]YYY[&#xA;]ZZZ[&#xA;]</Line>
</Body>

在Texarea可以正常顯示。

但我想在一般的網頁上顯示,希望將[&#xA;]替換成[<br/>]

translate(Line,'[&#xA;]','[&lt;]br/[&gt;]')

但結果當然是不行……

是否有其他正確的寫法……

或者否可能要用迴圈和一個變數來取得[&#xA;]之前的字串,

然後再迴圈結束前加[<br/>]

Str = Line
<for-each>
 <xsl:value-of select="substring-before(Str,'[&#xA;]')"/> //取前面
 Str = substring-after(Str,'[&#xA;]') //取後面
 [<br/>]
</for-each>

for-each可否跑非結點的判斷式,例;Str != ""。

目前是有解決的方法,但覺得不理想(將三行分成三個<Line>來跑迴圈)。

所以想請教一下可否有其他方法。

非常感謝您的答覆....^^
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jiaga0522註記此篇回應為最佳解答 2005/8/26 上午 01:08:53
>但我想在一般的網頁上顯示,希望將[&#xA;]替換成[<br/>]
>
>translate(Line,''[&#xA;]'',''[&lt;]br/[&gt;]'')

XSLT 好像還未有 Replace 函數,暫時的解法是用 Template:
ASPN : XSLT Cookbook : Search and Replace
http://aspn.activestate.com/ASPN/Cookbook/XSLT/Recipe/65426

或者用程式預先處理一下。
作者 : jiaga0522(JG)
[ 貼文 14 | 人氣 6827 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/26 下午 06:31:32
非常感謝...^^..

<xsl:template name="TranslateReplace">
 <xsl:param name="Text"/>
 <xsl:param name="From"/>
 <xsl:choose>
  <xsl:when test="contains($Text, $From)">
   <br/>
   <xsl:variable name="Before" select="substring-before($Text, $From)"/>
   <xsl:variable name="After" select="substring-after($Text, $From)"/>
   <xsl:value-of select="$Before"/>
   <xsl:call-template name="TranslateReplace">
    <xsl:with-param name="Text" select="$After"/>
    <xsl:with-param name="From" select="$From"/>
   </xsl:call-template>
  </xsl:when>
  <xsl:otherwise>
   <xsl:value-of select="$Text"/>
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>
 板主 : 徵求中
 > XML - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - XML - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
XML
1 HKLN.net 490 
2 wensons 120 
3 DEMO999 80 
4 吉爾菲艾斯 50 
5 Snaking 40 
6 PLAYER 30 
7 小朱 30 
8 Demonbane 30 
9 Cog 30 
10 Ben 30 
XML
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875