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

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

ただいまの
回答率

90.48%

  • XML

    668questions

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

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

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 775

reizouko

score 18

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>
と表示されていると嬉しいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

他の方も書いておられるように質問の趣旨がいまいち判然としませんが、もし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>


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

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

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

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

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

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

  • 定義の為のDTD
  • 操作するためのXpath
    などが有るのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/26 23:49

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

    キャンセル

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • XML

    668questions

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