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

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

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

XMLをHTMLに変換


(過去ログ 7 を表示中)

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

■7656 / inTopicNo.1)  XMLをHTMLに変換
  
□投稿者/ スライム 伍長(45回)-(2006/10/20(Fri) 11:59:54)

分類:[その他の言語] 


分類:[その他の言語] 

いつもお世話になっています
使用環境はWindowsXPのVB.NET2003です
たのしいXMLと言うサイトを見つつXSLを書いています
テキストの表示、ノードの選択など順調にいったのですが、表示したテキストにリンクを付加する所で躓いてしまっています
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="basic_1.xsl"?>
<お気に入り>
 <IE>
  <name url="http://www.google.co.jp">Google</name>
  <title>ググる</title>
 </IE>
 <IE>
  <name url="http://www.yahoo.co.jp">Yahoo!</name>
  <title>やふぅ〜る</title>
 </IE>
 <IE>
  <name url="http://www.nifty.com">Nifty</name>
  <title>にふてぃ〜</title>
 </IE>
</お気に入り>
以上がXMLファイルの内容です
以下がXSLファイルの内容です
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>チャレンジXML:XSL編</title>
</head>
<body>
<p>ちゃんと出るか心配です</p>
<p><xsl:apply-templates /></p>
</body>
</html>
</xsl:template>

<xsl:template match="IE">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@url" />
</xsl:attribute>
<p><xsl:value-of select="name" /></p>
</a>
</xsl:template>
</xsl:stylesheet>
躓いている内容はnameの属性urlをnameのテキストあるいはtitleのテキストに付加させようとした所です
XMLファイル自体は表示され、リンクも付加されていたのですが、付加されているのが、ファイルが置かれているフォルダでした。
ファイルはc:\に置いていて、リンクされているのもc:\なんです
<xsl:attribute name="href">と
<xsl:value-of select="@url" />
の間に参考にしているサイトではアドレスが記述されていて、@urlはリンクするファイル名が指定されていました
属性ではリンクは付加されないのでしょうか?
アドバイスお願いします

0
引用返信 編集キー/
■7662 / inTopicNo.2)  Re[1]: XMLをHTMLに変換
□投稿者/ 魔界の仮面弁士 少佐(188回)-(2006/10/20(Fri) 14:07:38)

分類:[その他の言語] 

No7656に返信(スライムさんの記事)
> 使用環境はWindowsXPのVB.NET2003です
VS2005 を使うと楽ですよー。
XSLT のステップ実行などもできますので、今回の問題点もすぐに分かります。
http://www.vb-user.net/junk/replySamples/2006.10.20.13.34/q.png


> XMLファイル自体は表示され、リンクも付加されていたのですが、
> 付加されているのが、ファイルが置かれているフォルダでした。
別に、フォルダがリンクされているわけでは無かったりします。
上記の結果画像を見ていただくと分かりますが、href 属性の内容が無いようですね。

ついでにいうと、a 要素の内側に p 要素が含まれてしまっているので、
この点も修正が必要でしょう。


> <xsl:template match="IE">
> <a>
> <xsl:attribute name="href">
> <xsl:value-of select="@url" />
> </xsl:attribute>
> <p><xsl:value-of select="name" /></p>
> </a>
> </xsl:template>

このテンプレートで処理されるノードが、IE 要素であるという点に注意してください。
IE 要素には url という属性はありませんよね。だから、href が空になってしまうわけです。

url 属性を持っているのは name 要素ですから、このように書く必要があります。
http://www.vb-user.net/junk/replySamples/2006.10.20.13.34/a.png


ちなみに、<xsl:attribute> の代わりに、このように
変数を使って書くこともできます。

<xsl:template match="IE">
<xsl:variable name="address" select="name/@url"/>
<p>
<a href="{$address}">
<xsl:value-of select="title/text()"/>
</a>
</p>
</xsl:template>

# ここの掲示板の都合で、a href なタグを使うと弾かれてしまうようなので、
# 上記では意図的に a要素を全角aに置き換えて書いています。


0
引用返信 編集キー/
■7665 / inTopicNo.3)  Re[2]: XMLをHTMLに変換
□投稿者/ スライム 伍長(46回)-(2006/10/20(Fri) 14:48:35)

分類:[その他の言語] 

魔界の仮面弁士さんありがとうございます
凄く良く分かりました
どおりで変なリンクになっちゃっていた訳なんですね
IEではなくnameとすれば出来たかもしれませんね
後で試して見ようと思います
参考サイト通り、書かれている内容をそのままにしてしまってもうちょっと深く考えれば良かったです
属性では駄目で要素なら出来ると何処かで見て、属性からは駄目だと諦めかけてました
これで以前に、やっぱり魔界の仮面弁士さんに教えて頂いたお気に入りの独自管理がやっと出来そうです
改めて魔界の仮面弁士さんありがとうございました

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -