![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
XML,DTD,XSLの勉強をしています。
最終的に写真が表示され、その下に「PM 7:30」もしくは「19:30」と表示するようなページを作ろうと思っているのですが、属性の意味がよく理解できておらず下の3つのうちどれを採用したらいいか悩んでいます。どれが正解というか、どれを選ぶのがいい方法なんでしょうか?
また、その理由(属性について)教えて頂けないでしょうか?具体的には次の2つが疑問点です。
1. 写真を表示するのに、写真のアドレスを属性にする理由はなんとなく分かるような気がするにですが、いまいちはっきりした理由が理解できていません。
DTDを<!ELEMENT アルバム (#PCDATA) >にして、XMLを<アルバム>0101.jpg</アルバム>でも写真の表示は可能なのでしょうか?
2. 一番の疑問点なのですが、時間を(#PCDATA)にするのか、EMPTYにして属性で CDATA にするべきなのかがよく分かりません。
(「分」も属性値にしてしまった方がいいのでしょうか?)
(xslは、まだ作成していません。)
よろしくお願い致します。
具体例↓ 3つ
「arubamu.dtd」
<?xml version="1.0" encoding="Shift_JIS"?>
<!ELEMENT アルバム (時,分) >
<!ATTLIST アルバム file CDATA #REQUIRED >
<!ELEMENT 時 EMPTY >
<!ATTLIST 時 ampm (am|pm) "am" >
<!ATTLIST 時 time CDATA #REQUIRED >
<!ELEMENT 分 (#PCDATA) >
「アルバム.xml」
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE アルバム SYSTEM "arubamu.dtd">
<アルバム file = "0101.jpg" >
<時 ampm = "pm" time = "7" />
<分>30</分>
</アルバム>
------------------------------------------------------------------
「arubamu2.dtd」
<?xml version="1.0" encoding="Shift_JIS"?>
<!ELEMENT アルバム (時) >
<!ATTLIST アルバム file CDATA #REQUIRED >
<!ELEMENT 時 EMPTY >
<!ATTLIST 時 ampm (am|pm) "am" >
<!ATTLIST 時 time CDATA #REQUIRED >
<!ATTLIST 時 minute CDATA #REQUIRED >
「アルバム2」
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE アルバム SYSTEM "arubamu2.dtd">
<アルバム file = "¥0101.jpg" >
<時 ampm = "pm" time = "7" minute = "30" />
</アルバム>
-------------------------------------------------------------------
「arubamu3.dtd」
<?xml version="1.0" encoding="Shift_JIS"?>
<!ELEMENT アルバム (時,分) >
<!ATTLIST アルバム file CDATA #REQUIRED >
<!ELEMENT 時 (#PCDATA) >
<!ATTLIST 時 ampm (am|pm) "am" >
<!ELEMENT 分 (#PCDATA) >
「アルバム3.xml」
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE アルバム SYSTEM "arubamu3.dtd">
<アルバム file = "0101.jpg" >
<時 ampm = "pm">7</時>
<分>30</分>
</アルバム>
No.1ベストアンサー
- 回答日時:
XMLでは,ルート要素が必要です。
たとえば,次のように,<アルバム>というルート要素を定義し,すべての要素を,このルート要素の中に入れるようにします。
下の例では,個々の画像について,ファイル名を要素とし,時間や画像幅を属性としています。要素にするか属性にするかは自由に設定できますが,画像などは,実体としてのファイルがあって,そのファイルの属性として撮影日時などがあるので,これに合わせて要素や属性を決めると理解しやすいかもしれません。
--------sample.xml---------------
<?xml version="1.0" encoding="UTF-8"?>
<アルバム>
<画像 ampm = "pm" time = "7" min="30" width="300">
0101.jpg
</画像>
<画像 ampm = "am" time = "9" min="40" width="300">
0102.jpg
</画像>
</アルバム>
このXMLから,画像と時間を表示するXSLは次のような感じです。
--------sample.xsl------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="アルバム/画像">
<img src="{.}" width="{@width}"/>
<br/>
<xsl:value-of select="@ampm"/>
<xsl:value-of select="@time"/>:
<xsl:value-of select="@min"/>
<br/>
<hr/>
</xsl:template>
</xsl:stylesheet>
これを表示するhtmlは次のとおり(IEのみに対応)
---------------------------------------------
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello xml</title>
<xml id="myxml" src="sample.xml"></xml>
<xml id="myxsl" src="sample.xsl"></xml>
<script language="JavaScript">
<!--
function start() {
here.innerHTML = myxml.documentElement.transformNode(myxsl);
}
-->
</script>
</head>
<body onload="start()">
<div id="here">ここに表示</div>
</body>
</html>
遅くなってしまい申し訳ありませんでした。
大変詳しく教えて頂きありがとうございました。おかげさまで理解することができ、XSLTもつくる事ができました。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 写真・ビデオ iPhoneのプライバシーとセキュリティの写真の項目について 2 2023/06/24 23:11
- iPhone(アイフォーン) iPhoneのプライバシーとセキュリティの写真の項目について 1 2023/06/24 20:25
- iPhone(アイフォーン) iPad Musicに音楽を入れたらアルバムの写真がメチャクチャになりました 1 2022/10/26 13:39
- 写真・ビデオ 写真の管理について質問です。 今携帯で写真の管理はすべてGoogleフォトを使っています。 しかし、 3 2022/09/20 16:28
- 写真 祖母の古い白黒写真がアルバムで出てきました。 写真を台紙に貼るタイプのアルバムです。 その写真を残し 3 2022/06/04 12:44
- Android(アンドロイド) 誰か助けてください! スマホをXperia XZ2から10ivにしました。 XZ2ではカメラで写真を 6 2023/08/21 23:15
- Android(アンドロイド) 写真やスマホに詳しい人助けてください( ; ; ) スマホのアルバム(Android)を整理している 2 2022/12/28 11:11
- その他(社会・学校・職場) 大学 卒業アルバム 3 2022/10/11 11:00
- 失恋・別れ 元カレとのLINEのトークの中のアルバムに付き合ってた時の写真残ってるけど、一方的にアルバム削除して 1 2022/04/04 20:07
- 写真・ビデオ 【 Pixel 4a 】今でも、Google フォト が「無料で容量無制限」で使える機種です。 1 2023/05/08 21:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xmlファイルが上手にHTMLに変換...
-
XSLT
-
XML、XSLTの適応エラー(IEから...
-
XSLTでの正規表現判定
-
CPUの考え方を教えてください ...
-
UTF-8でエンコーディングとはど...
-
東芝のDynabookなのですがアン...
-
Access VBAでXMLが読み込めない
-
SNMP リンクダウンとノードダ...
-
メモリのセクションに関して
-
このエラー、何とかなりません...
-
replaceChildメソッドについて
-
特殊記号が勝手にエスケープさ...
-
VBSでxmlの値を書き換えたい
-
XSLTで直下のテキストのみ取得...
-
文字列や画像のurlをhtmlに代入...
-
4バイトを10進数に変換する方法
-
昔Winnyってありましたけど、あ...
-
XMLファイル内のデータ(値)を変...
-
XSLTがブラウザで表示されません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XML、XSLTの適応エラー(IEから...
-
xmlファイルが上手にHTMLに変換...
-
XSLTでの正規表現判定
-
XSLT 文字列を指定した回数分...
-
XMLを出力する時のエラー原因
-
XSLT
-
xmlstarletで他ファイルからエ...
-
XMLの属性について。
-
不特定ノードに出現する同じタ...
-
formから値を取ってくる
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
UTF-8でエンコーディングとはど...
-
バッチファイルでテキストファ...
-
ルート要素ノードが2個ある場合?
-
Excel-VBAでXMLの複数ノードの...
-
SNMP リンクダウンとノードダ...
-
同じタグ名の項目取得
おすすめ情報