質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Q&A

3回答

5284閲覧

xmlで要素を繰り返す方法。

reizouko

総合スコア26

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

0グッド

0クリップ

投稿2016/05/18 14:32

xmlで要素を変数に代入して使う方法はありますか?

dtdを使えば

<! ENTITY test "<A>a</A>"> &test; ```とすることで、参照できるかと思います。 ですが、dtdを使わずに同じことをする方法はないでしょうか。 イメージは、xml中で以下のように記述し、
<?xml version="1.0" encoding="Shift_JIS" ?>

test = "<A>a</A>"
&test;
&test;

IEなどで見たときに、 <A>a</A> <A>a</A> と表示されていると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

他の方も書いておられるように質問の趣旨がいまいち判然としませんが、もしXMLで

  • 複雑な記述の繰り返しを書きたくないので
  • 入力にあたるものを簡単に書いて
  • 出力にあたるものを自動的に複雑なものの繰り返しを生成したい

というようなご希望であれば、XSLTの技術を使用するのが良いのではないかと考えられます.

例に挙げられているのは実体定義と実体参照で必ずしもこれにはマッチしませんが、例えば入力側に

<ans/>

と書いて、出力をHTMLを例にとるならば、XSLTスタイルシートで(あくまで例で特別な意味はありませんが)

<xsl:template match="ans"> <div style="padding-top: 6px;padding-right: 6px;padding-bottom: 30px;padding-left: 30px;color: #204962;background-image: url(img/icon_a.gif);background-repeat: no-repeat;">回答</div> </xsl:template>

とテンプレート記述すれば、「簡単な入力」から「複雑な出力」を自動生成するということができます.
外していたらすみません.

投稿2016/05/26 14:45

tmakita

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

DTDはXMLの文書構造を定義するものなので、変数を代入しているというのとは少し違います。また、XMLはその文書の内容をどのように視覚的に表示するかという情報を持ちません。
JAVAやPHPなど各種プログラム言語や、XML文書の変換用言語であるXSLTを用いて変換(表示)します。

【Document Type Definition - Wikipedia】
https://ja.wikipedia.org/wiki/Document_Type_Definition#EMPTY

【ごくごく簡単なDTDの説明】
http://www.kanzaki.com/docs/html/read-dtd.html

【XSL Transformations - Wikipedia】
https://ja.wikipedia.org/wiki/XSL_Transformations

【XMLマスター】
http://www.xmlmaster.org/article/d01/c08/

【サンプルで覚えるXSLTプログラミング】
http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt00.html

投稿2016/05/19 01:37

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご質問の主旨が良く分からないのですが・・・

そもそもなぜそのような機能?を必要とするのでしょうか!?

もしxmlにそのような仕様が有って reizoukoさんが記載されたイメージのような表記が許された場合、2番目の要素だけ変更するといった処理はどの様に実現可能になりますか?

xmlは、初期のhtmlと異なり、表示する事が目的の静的な物ではなく、コンピュータで自動処理し易いようにデータ構造を表現する手段なので、人間にとっては冗長に思える繰り返しもそのままベタで表現されます。

ただ、それを生成する際に同じことを何度も書くのは非効率なので、xmlの定義(自動生成)をするための言語としてDTDが有るのではないでしょうか。

これは例えて言えば、大量のデータを効率良く処理するために「配列」を使う場合が多いですけれども、配列だって要素がたまたま同じ値だからといってそれらの要素を省略する仕組みが無いのと同じです。

コンピュータの視点から見れば、仮に冗長であっても仕組みが単純で高速処理できる方が嬉しいです。

そして、人間に取っては扱い難いxmlを扱いやすくする為の道具として、例えば

  • 定義の為のDTD
  • 操作するためのXpath

などが有るのではないでしょうか。

投稿2016/05/19 00:07

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tmakita

2016/05/26 14:49

重箱の隅をつつくようで恐縮です. 「操作するためのXpath」とありますが、XPathはあくまでもXMLの特定の部分を「指定する」構文であり、「操作する」ものには該当しないのではないでしょうか? 以上
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問