![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
xslで質問させてください。
以下のようなxmlとxslを作っているのですが、xslの最後のほうで、
sample.xmlの/empList/emp/type/@idの値に応じて、typeList.xmlの/typeList/type/titleの値を取得したくて、
xsl:value-of select="document('typeList.xml')/typeList/type[@id = type/@id]/title/text()" />
と書いていますが、うまくいきません。どうすればいいでしょうか?
-----[sample.xml]
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="a.xsl" type="text/xsl"?>
<empList>
<emp>
<type id="1" />
<name>鈴木</name>
<desc>あああ</desc>
</emp>
<emp>
<type id="2" />
<name>田中</name>
<desc>いいい</desc>
</emp>
</empList>
-----[typeList.xml]
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="a.xsl" type="text/xsl"?>
<typeList>
<type id="1">
<title>タイプ1</title>
</type>
<type id="2">
<title>タイプ2</title>
</type>
</typeList>
-----[a.xsl]
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet
version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="html"
encoding="UTF-8"
omit-xml-declaration="yes"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
media-type="text/html"
/>
<xsl:template match="/">
<html>
<head><title>サンプル</title></head>
<body>
<xsl:apply-templates select="empList/emp" />
</body>
</html>
</xsl:template>
<xsl:template match="emp">
<h2><xsl:value-of select="name/text()" /></h2>
<p>タイプ:<xsl:value-of select="document('typeList.xml')/typeList/type[@id = type/@id]/title/text()" /></p>
<p>メモ:<xsl:value-of select="desc/text()" /></p>
</xsl:template>
</xsl:stylesheet>
No.1ベストアンサー
- 回答日時:
Q3207219-1.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="Q3207219-3.xsl" type="text/xsl"?>
<empList>
<emp>
<type id="1" />
<name>鈴木</name>
<desc>あああ</desc>
</emp>
<emp>
<type id="4" />
<name>田中</name>
<desc>いいい</desc>
</emp>
<emp>
<type id="2" />
<name>田中</name>
<desc>いいい</desc>
</emp>
<emp>
<type id="3" />
<name>田中</name>
<desc>いいい</desc>
</emp>
</empList>
Q3207219-2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
スタイルシートここはいらないだろう
<?xml-stylesheet href="a.xsl" type="text/xsl"?>
-->
<typeList>
<type id="2">
<title>タイプ2</title>
</type>
<type id="1">
<title>タイプ1</title>
</type>
<type id="3">
<title>猪突猛進タイプ</title>
</type>
<type id="4">
<title>遠隔操作タイプ</title>
</type>
</typeList>
Q3207219-3.xsl
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet
version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="html"
encoding="UTF-8"
omit-xml-declaration="yes"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
media-type="text/html"
/>
<xsl:template match="/">
<html>
<head><title>サンプル</title></head>
<body>
<xsl:apply-templates select="empList/emp" />
</body>
</html>
</xsl:template>
<xsl:template match="emp">
<h2><xsl:value-of select="name/text()" /></h2>
<p>タイプ:
<xsl:call-template name="hoge"><xsl:with-param name="Id" select="type/@id" />
<xsl:with-param name="Id2" select="document('Q3207219-2.xml')/typeList" />
</xsl:call-template>
</p>
<p>メモ:<xsl:value-of select="desc/text()" /></p>
</xsl:template>
<xsl:template name="hoge">
<xsl:param name="Id" />
<xsl:param name="Id2" />
<xsl:for-each select="$Id2/type">
<xsl:if test="$Id = @id">
<xsl:value-of select="title" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
【後記】
手元のeXtyleとMinefieldで一応きちんと確認しているが,
正直自信がない。
俺は,XSLTを頻繁に書いている人でもないし
どこかで引数や戻り値にノードリストを指定できないとか聞いたような気がするからだ。
(引数に出来ているのはMSXML 6(VB.NET Orcas付属)やGeckoのバージョンが関係して・・・ないか)
(そのため、並び替えた後に処理ができないとか、なんかそういう話があったような。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
公文書のxmlファイルの開き方が...
-
ワードで文字を入力する時の変...
-
XMLを作成してもタグしか表示さ...
-
ファイル名の一部削除について
-
XMLの編集?について
-
スマホのスプレッドシートでセ...
-
Excel関数で、セル内の文字列の...
-
【BAT(バッチ)ファイル】Web...
-
XMLとは何ですか?
-
特殊文字の検索方法
-
フォルダー内検索
-
Webページに関するさまざまな情...
-
head要素
-
ヤフー知恵袋みたいなサイトを...
-
メールアドレスについて
-
マスターノード
-
エクセルのマクロについて教え...
-
クラウドサービスのlaaS paaS s...
-
flexBOX同士の間隔
-
マイナポータルの住宅借入金当...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XSLで、XMLの空タグを制御したい。
-
タグの有無の判定
-
XSLでXMLデータをタブ区切りデ...
-
XSLTで固定長データファイルを...
-
XSL中の改行、タブを無効にした...
-
xmlのテキストにリンクを張りた...
-
重複するものを消したい
-
XSLTがブラウザで表示されません。
-
うまく表示されない
-
文字列の取得
-
xsl:param要素をxsl:templateの...
-
value-ofの値を属性値とするには
-
XMLをXSLを使いHTMLに変換した...
-
XMLから指定テキストのみを抜き...
-
ある文字列を含むノードが存在...
-
VBAからxml・スタイルシートを...
-
xsl、xpath式の書き方について
-
XSLで特定のタグだけを出力する...
-
XSL内でJavaScriptを記述し、Ja...
-
XSLTで直下のテキストのみ取得...
おすすめ情報