C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: XSLのjavascript内でXMLの値を取得する方法


(過去ログ 71 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■41223 / inTopicNo.1)  XSLのjavascript内でXMLの値を取得する方法
  
□投稿者/ たろ (47回)-(2009/09/15(Tue) 18:48:02)

分類:[.NET 全般] 

お世話になっております。たろです。

現在、
VS2005 ASP.NET C#
でWEBアプリの開発を行っています。

XMLとXSLを使用して画面を表示し、
XSLファイルのjavascriptで下記のように表示した値を取得しようとしたのですが、
XMLのエレメントしか取得できません。

XMLの値をjavascriptで取得する方法はありますでしょうか?

【XSL】
<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet xmlns:ns="urn:hl7-org:v3" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >


<xsl:template match="/">
<html>
<head>
<title>TEST</title>

<script type="text/javascript">
<![CDATA[
function Test_Click(formname, eleName)
{

var doc = document.forms[formname];

var ele = doc.elements[eleName];
var len = ele.length;
var cnt = 0;
var stk = "";
//チェックボックスにチェックがついている行の値を取得したい
for(var i = 0; i < len; i++){

alert(ele[i].checked);
if(ele[i].checked==true){
alert(stk);
stk += ele[i].value+"\n";
cnt++;
}
}

}

]]>
</script>
</head>
<body bottomMargin="0" leftMargin="0" topMargin="0" rightMargin="0" bgcolor="#FFFFCC">


<form id="IFORM" method="post" >
<table style="width:100%;height: 5%;" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFCC">
<tr>
<td style="width:16%;height:5%" > </td>
<td style="width:68%;height:5%; text-align: center;font-size: large; color:#3366FF" colspan="4"><b>TEST</b></td>
<td style="width:16%;height:5%"> </td>
</tr>
</table>
<table style="width:100%;height: 2%;" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFCC">
<tr>
<td style="width:16%;height:2%" > </td>
<td style="width:68%;height:2%; text-align: center;font-size: large; color:#3366FF" colspan="4">
<input name="TestBtn" type="button" value="テストボタン" onclick="Test_Click('IFORM','chkItem[]')"></input></td>
<td style="width:16%;height:2%"> </td>
</tr>
</table>
<table style="width:100%;height: 93%;" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFCC">
<tr>
<td style="width:16%;height:93%" > </td>
<td style="width:68%;height:93%; text-align: center; margin: auto; vertical-align:top;" colspan="4">
<table border="1" bgcolor="#E0FFFF" cellpadding="0" cellspacing="0" style="width:100%;">
<tr>
<th style="width:7%;height:30px;background-color:#3366FF;font-size:smaller;color:white">選択</th>
<th style="width:23%;height:30px;background-color:#3366FF;font-size:smaller;color:white">TEST1</th>
<th style="width:10%;height:30px;background-color:#3366FF;font-size:smaller;color:white">TEST2</th>
<th style="width:20%;height:30px;background-color:#3366FF;font-size:smaller;color:white">TEST3</th>
<th style="width:40%;height:30px;background-color:#3366FF;font-size:smaller;color:white">TEST4</th>
</tr>
<xsl:for-each select="ns:TEST/ns:TEST/ns:TEST">
<tr>

<td style="text-align: center;"><input type="checkbox" name="chkItem[]" value="ns:test1/@test1"/> </td>
<td style="text-align: left;"><xsl:value-of select="ns:test2/@test2"/> </td>
<td style="text-align: left;"><xsl:value-of select="ns:test3/@test3"/> </td>
<td style="text-align: left;"><xsl:value-of select="ns:test4/@test4"/> </td>
<td style="text-align: left;"><xsl:value-of select="ns:test5/@test5"/> </td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="width:16%;height:93%"> </td>
</tr>
</table>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


引用返信 編集キー/
■41228 / inTopicNo.2)  Re[1]: XSLのjavascript内でXMLの値を取得する方法
□投稿者/ 魔界の仮面弁士 (1290回)-(2009/09/15(Tue) 20:06:56)
No41223 (たろ さん) に返信
> XMLとXSLを使用して画面を表示し、
> XSLファイルのjavascriptで下記のように表示した値を取得しようとしたのですが、

XSLT の質問なのか、DHTML の質問なのか読み取れなかったのですが、
とりあえず DHTML 側の話だと解釈して回答します。


元の XML のスキーマが無いので想像になりますが、たとえば変換対象となる XML が
   http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/test.xml
だとすると、変換結果は
   http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/test.html
となり、生成される結果のテーブル行を抜き出した物は、
   http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/clip_text.txt
になりますよね。


で、それを提示の
> function Test_Click(formname, eleName)
> {
>   var doc = document.forms[formname];
>   var ele = doc.elements[eleName];
>   var len = ele.length;
>   var cnt = 0;
>   var stk = "";
>   //チェックボックスにチェックがついている行の値を取得したい
>   for(var i = 0; i < len; i++){
>     alert(ele[i].checked);
>     if(ele[i].checked==true){
>       alert(stk);
>       stk += ele[i].value+"\n";
>       cnt++;
>     }
>   }
> }

で処理したいとの事ですが…。
この JavaScript が何を目的としているのか、良く読み取れませんでした。
(変数 cnt も、実際には使われていないようですし…)



とりあえず、
> //チェックボックスにチェックがついている行の値を取得したい
の部分だけについていえば、こんな感じで処理できるかと思います。


function Test_Click(formname, eleName)
{
  var doc = document.forms[formname];
  var ele = doc.elements[eleName];
  var len = ele.length;
  var cnt = 0;
  var stk = "";
  for(var i = 0; i < len; i++){
    if(ele[i].checked){
      var TH = ele[i].parentNode;
      var TR = TH.parentNode;
      var cells = TR.cells;
      var cellsCount = cells.length;
      stk += "====== " + TR.rowIndex + "行目 ======\r\n";
      for(var c = 1 ; c < cellsCount ; c++)
        stk += c + "=[" + cells[c].innerText + "]\r\n";
    }
  }
  alert(stk);
}


最終結果
   http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/orator.html

引用返信 編集キー/
■41232 / inTopicNo.3)  Re[2]: XSLのjavascript内でXMLの値を取得する方法
□投稿者/ たろ (48回)-(2009/09/15(Tue) 20:38:59)
ご返信ありがとうございます!


No41228 (魔界の仮面弁士 さん) に返信
> ■No41223 (たろ さん) に返信
>>XMLとXSLを使用して画面を表示し、
>>XSLファイルのjavascriptで下記のように表示した値を取得しようとしたのですが、
>
> XSLT の質問なのか、DHTML の質問なのか読み取れなかったのですが、
> とりあえず DHTML 側の話だと解釈して回答します。
>
>
> 元の XML のスキーマが無いので想像になりますが、たとえば変換対象となる XML が
> http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/test.xml
> だとすると、変換結果は
> http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/test.html
> となり、生成される結果のテーブル行を抜き出した物は、
> http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/clip_text.txt
> になりますよね。
>
>
> で、それを提示の
>>function Test_Click(formname, eleName)
>>{
>> var doc = document.forms[formname];
>> var ele = doc.elements[eleName];
>> var len = ele.length;
>> var cnt = 0;
>> var stk = "";
>> //チェックボックスにチェックがついている行の値を取得したい
>> for(var i = 0; i < len; i++){
>> alert(ele[i].checked);
>> if(ele[i].checked==true){
>> alert(stk);
>> stk += ele[i].value+"\n";
>> cnt++;
>> }
>> }
>>}
>
> で処理したいとの事ですが…。
> この JavaScript が何を目的としているのか、良く読み取れませんでした。
> (変数 cnt も、実際には使われていないようですし…)
>

汚いソースで申し訳ないです。。

取得した値をパラメータに設定して別の画面を表示させる予定です。

>
>
> とりあえず、
>>//チェックボックスにチェックがついている行の値を取得したい
> の部分だけについていえば、こんな感じで処理できるかと思います。
>
>
> function Test_Click(formname, eleName)
> {
> var doc = document.forms[formname];
> var ele = doc.elements[eleName];
> var len = ele.length;
> var cnt = 0;
> var stk = "";
> for(var i = 0; i < len; i++){
> if(ele[i].checked){
> var TH = ele[i].parentNode;
> var TR = TH.parentNode;
> var cells = TR.cells;
> var cellsCount = cells.length;
> stk += "====== " + TR.rowIndex + "行目 ======\r\n";
> for(var c = 1 ; c < cellsCount ; c++)
> stk += c + "=[" + cells[c].innerText + "]\r\n";
> }
> }
> alert(stk);
> }
>

なるほど!
表示している値はこれで取得できますね!
すばらしいです。。

ちなみに、チェックボックスのvalueの値は取る事は可能でしょうか?

言葉足らずで申し訳ありませんが、
今回取得したい項目は表示しない項目なので、チェックボックスのvalueに設定するか、
隠し項目に設定して、それをjavascript側で取得したいのです。

何か方法はありますでしょうか?



>
> 最終結果
> http://www.vb-user.net/junk/replySamples/2009.09.15.19.38/orator.html
引用返信 編集キー/
■41234 / inTopicNo.4)  Re[3]: XSLのjavascript内でXMLの値を取得する方法
□投稿者/ 魔界の仮面弁士 (1291回)-(2009/09/15(Tue) 21:10:03)
No41232 (たろ さん) に返信
> ちなみに、チェックボックスのvalueの値は取る事は可能でしょうか?
チェックボックス要素の value プロパティから取得できますよ。

今回の場合、最初(左端)のセルの最初の子要素が <input type="checkbox"> に
なっていますから、たとえば先の私の例でいえば、
  cells[0].firstChild.value
などと書けますね。


> 今回取得したい項目は表示しない項目なので、チェックボックスのvalueに設定するか、
> 隠し項目に設定して、それをjavascript側で取得したいのです。

html 側に入れる必要が無い値なのであれば、

var checkList = new Array();
<xsl:for-each select="〜">
checkList.push('<xsl:value-of select="〜"/>');
</xsl:for-each>
function foo(rowIndex)
{
    alert(checkList[rowIndex]);
}

とか。

引用返信 編集キー/
■41266 / inTopicNo.5)  Re[4]: XSLのjavascript内でXMLの値を取得する方法
□投稿者/ たろ (49回)-(2009/09/16(Wed) 18:28:33)
ご返信ありがとうございます!


No41234 (魔界の仮面弁士 さん) に返信
> ■No41232 (たろ さん) に返信
>>ちなみに、チェックボックスのvalueの値は取る事は可能でしょうか?
> チェックボックス要素の value プロパティから取得できますよ。
>
> 今回の場合、最初(左端)のセルの最初の子要素が <input type="checkbox"> に
> なっていますから、たとえば先の私の例でいえば、
> cells[0].firstChild.value
> などと書けますね。
>
>
>>今回取得したい項目は表示しない項目なので、チェックボックスのvalueに設定するか、
>>隠し項目に設定して、それをjavascript側で取得したいのです。
>
> html 側に入れる必要が無い値なのであれば、
>
> var checkList = new Array();
> <xsl:for-each select="〜">
> checkList.push('<xsl:value-of select="〜"/>');
> </xsl:for-each>
> function foo(rowIndex)
> {
> alert(checkList[rowIndex]);
> }
>
> とか。


cells[0].firstChild.valueで取得でき解決しました。
ありがとうございました!

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -