こんな馬鹿な質問でごめんなさい。XMLファイルをXSLスタイルシートを使って表示させたいですけど、どうやら、XSLファイルの作り方が間違っているようで…
でも、どこだか分からないんです。助けてください。
---XMLファイルの内容は---
<root>
<first>
<second1>22</second1>
<second2>2</second2>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third>
</first>
<first>
...
rootの中にはfirstがいくつかあって、
firstの中にはsecondが二つ、thirdがいくつか、
thirdの中にはfourthが二つあります。
xsl:for-each を使って2と4をそのまま表示させたいのですが、
xsl:for-eachの中にxsl:for-eachを書くんですか?
どなたか書き方を教えて下さい。
No.3ベストアンサー
- 回答日時:
マッチしたものを全部出力すればいいだけなら、for-each とか使わなくても、
apply-templates を繰り返していけばいいと思います。例えば次のように。
というか、match したものに対して、その中でいろいろ繰り返すのが for-each
なので、template の中に for-each が出てくるのが基本です。
<?xml version="1.0" encoding="shift_jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<html><xsl:apply-templates /></html>
</xsl:template>
<xsl:template match="first">
<xsl:apply-templates/>
!!!!<br/>
</xsl:template>
<xsl:template match="second1">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="second2">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="third1">
<xsl:apply-templates/>
----<br/>
</xsl:template>
<xsl:template match="fourth1">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="fourth2">
<xsl:value-of select="."/><br/>
</xsl:template>
</xsl:stylesheet>
No.2
- 回答日時:
どのようなXSLファイルを試されたのでしょうか?
2と4をそのまま表示させたいの意味もあいまいです。22と44は?
具体的なフォーマットは?
second1 と second2 はこのままでは別の名前として扱われますが、
それが意図していることですか?
この回答への補足
ええと、XML文書に少し問題があったようで、Samaraさんが書いている通りです。
second1 とsecond2は別の名前です
表示としては、各firstの終わりのところで、!!!!を出力し、各third1の終わりで----を出力させて、以下のようにしたいです。
22
2
4
44
----
4
44
----
!!!!
。。の繰り返し。
私の書いた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="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<xsl:for-each select="first">
<xsl:apply-templates/>
!!!!<br/>
</xsl:for-each>
</xsl:template>
<xsl:template match="second1">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="second2">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:for-each select="third1">
<xsl:template match="fourth1">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="fourth2">
<xsl:value-of select="."/><br/>
</xsl:template>
----
</xsl:for-each>
</xsl:stylesheet>
以上です。でも、stylesheet はfor-eachを使えないとエラーが出ました。
No.1
- 回答日時:
私もXML初心者なのであまり自信はありませんが、書かれているXML自体に問題がありませんか?(それともタイプミスでしょうか?)
以下myrimyriさんが書かれたXMLですが、
---XMLファイルの内容は---
<root>
<first>
<second1>22</second1>
<second2>2</second2>
<third1> ←---------------このタグの終了タグは?
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third> ←---------------このタグの開始タグは?
<third1> ←-----------?
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third> ←-----------?
</first>
<first>
...
つまり、<third1>の終了タグの名前が</third>(←終りに" 1 "がない)または<third1>(←はじめに" / "がない)という、状態になっています。どの様なXSLを書かれたのか分かりませんが、とりあえずXMLをもう一度見直してみて下さい。
上のXMLを直すと、こんな感じでしょうか?
<root>
<first>
<second1>22</second1>
<second2>2</second2>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third1>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third1>
</first>
<first>
...
お役に立ちますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 訳し方を教えてください! 2 2022/12/26 19:45
- Excel(エクセル) Excelのマクロについて 1 2023/04/17 17:22
- 英語 アメリカのアニメ Family Guy の台詞の和訳 1 2022/11/14 14:50
- TOEFL・TOEIC・英語検定 Many Japanese schools had been closed for four mon 2 2022/04/17 17:35
- 英語 An ideal occlusal scheme plays an important role i 2 2022/09/30 21:27
- 英語 数+単位で名詞を修飾する場合の表現方法について 9 2023/03/02 10:40
- 英語 four hours を発音する時、 リンキングで、 four の 「 r 」と、hours の 「 3 2022/04/17 14:22
- 英語 例示を一旦終える口頭表現について 4 2022/08/19 10:21
- 日本語 複数枚ある画像を日付降順(最新順)に並べた場合、最新から3番目までの順位を何と言いますか? 2 2022/08/05 23:14
- その他(言語学・言語) 0から10まで 4 2022/06/15 23:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ノードの並び替え
-
XMLのHTMLへの変換 (初心者)
-
東芝のDynabookなのですがアン...
-
XML、XSLTの適応エラー(IEから...
-
XML文書の指定した属性値を持つ...
-
XMLで要素が記述された順番に意...
-
XMLからデータを取得
-
XMLを出力する時のエラー原因
-
VBAのXML処理でメモリが足りない?
-
XMLDocumentでスキーマを無視し...
-
終了タグが認識されない?
-
昔Winnyってありましたけど、あ...
-
DataSetのwriteXmlでのXML宣言
-
VB6.0でDOMを使用して...
-
C#のDataGridViewにCheckBox
-
同じタグ名の項目取得
-
Excel-VBAでXMLの複数ノードの...
-
c言語 ノードの連結
-
UTF-8でエンコーディングとはど...
-
TreeViewのNodeについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
XSLTで固定長データファイルを...
-
XSLTにてタグ名を取得する方法
-
XSLで、XMLの空タグを制御したい。
-
xmlの属性が重複しているのをx...
-
ノードの並び替え
-
XSL中の改行、タブを無効にした...
-
XMLのHTMLへの変換 (初心者)
-
xmlのテキストにリンクを張りた...
-
XMLをXSLを使いHTMLに変換した...
-
重複するものを消したい
-
空かスペースを認識させること...
-
スタイルシートを使用したXM...
-
XSLTがブラウザで表示されません。
-
XSL内でJavaScriptを記述し、Ja...
-
XMLとXSLTでリンクを張る方法
-
VBAからxml・スタイルシートを...
-
うまく表示されない
-
XML,XSL,JavaScriptの連携
-
XSLでの指定方法
おすすめ情報