もうすぐクリスマスなのに、むなしく質問をさせて頂きます。
XSLスタイルシートを使って、XML文書をHTML文書に変換することを今試して
みているのですが、<name>myrimyri</name>というタグがあるとして、
そのタグの内容だけ表示しないようにしたいんです。どうすればいいですか?
もっと分かりやすい例として、
<root>
<name>myrimyri</name>
<age>20</age>
<root>
というxml文書があるとして、それを以下のHTML文書に変換したいです。
(ageのタグ内容だけを表示したい。)
<html>
<body>
20
</body>
</html>
そのXSL文を教えて下さい。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

表示させたくない<name>タグの部分は、<xsl:template match="name"/>という具合に閉じてしまうだけでできますよ。



<xsl:stylesheet>
<xsl:template match="/">
<html>
<xsl:apply-templates />
</html>
</xsl:template>

<xsl:template match="name"/>

<xsl:template match="age">
<body>
<xsl:value-of select="."/>
</body>
</xsl:template>
</xsl:stylesheet>
    • good
    • 0
この回答へのお礼

なんだ(^^; …汗汗 単純。。ですね。
どうもありがとうございます。

お礼日時:2001/12/27 12:48

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qとtopreceding-siblingを使ったグループ化

下記のxmlを

<xml xmlns:s="uuid:#dummy#" xmlns:dt="#dummy#" xmlns:rs="#dummy#" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="COUNTRY" rs:number="1" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="4" rs:fixedlength="true"/>
</s:AttributeType>
<s:AttributeType name="NAME" rs:number="2" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="9" rs:fixedlength="true" rs:maybenull="false"/>
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row COUNTRY="JAPAN" NAME="TARO" AGE="12"/>
<z:row COUNTRY="JAPAN" NAME="JIRO" AGE="23"/>
<z:row COUNTRY="CHINA" NAME="SABURO" AGE="34"/>
</rs:data>
</xml>

下記のxslを使用してCOUNTRY毎にグルーピングして
csv形式で出力したいですが以下のxslだとうまくいきません。

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:key name="COUNTRY" match="//z:row" use="@COUNTRY" />

<xsl:template match="/">

<xsl:for-each select="//z:row[not(@COUNTRY = preceding-sibling:://z:row/@COUNTRY)]">
<xsl:value-of select="@COUNTRY" />,<xsl:value-of select="@NAME" />,<xsl:value-of select="@AGE" />
</xsl:for-each>

</xsl:template>
</xsl:stylesheet>

[欲しい結果]
JAPAN,TARO
JAPAN,JIRO
スペース
CHINA,SABURO

下記のxmlを

<xml xmlns:s="uuid:#dummy#" xmlns:dt="#dummy#" xmlns:rs="#dummy#" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="COUNTRY" rs:number="1" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="4" rs:fixedlength="true"/>
</s:AttributeType>
<s:AttributeType name="NAME" rs:number="2" rs:writeunknown="true">
<s:dat...続きを読む

Aベストアンサー

#1>"c:\windows\system32\msxml3.dll"にしなければいけないのではないか
あんまり詳しくはないのですが、私は、IE6で動作確認しています。
IE6は、msxml3.dllは使ってなかった(別途ダウンロードしてインストールしなければいけなかったような気がします)と思います。
質問文のXSLで欲しい結果にならない理由がDLLだという意味なら、
それは、違うと思います。
select="//z:row[not(@COUNTRY = preceding-sibling:://z:row/@COUNTRY)]">
でセレクトされるのは、それまでとCOUNTRYがことなるもの
つまり
JAPAN,TARO
CHINA,SABURO
の2つのデータをセレクトすることを意味していると思われるからです。
#1>XMLのデバッグにはどのような方法があるのでしょうか?
この時のこの値という意味なら、開発環境でインスペクトすればいいと思いますが、
構文エラーが表示されるので、まずは、IEで動作させてみるのがいいと思います。
例えば、質問文のXSLであれば、
xmlns:xsl="http://www.w3.org/TR/WD-xsl"に「xsl:keyがない」
ネームスペース「z:」が定義されていないとか表示されます。
あとついでに言えば、<xsl:key>宣言は、xsl:templateの中で使われていないので必要ないと思います。

#1>"c:\windows\system32\msxml3.dll"にしなければいけないのではないか
あんまり詳しくはないのですが、私は、IE6で動作確認しています。
IE6は、msxml3.dllは使ってなかった(別途ダウンロードしてインストールしなければいけなかったような気がします)と思います。
質問文のXSLで欲しい結果にならない理由がDLLだという意味なら、
それは、違うと思います。
select="//z:row[not(@COUNTRY = preceding-sibling:://z:row/@COUNTRY)]">
でセレクトされるのは、それまでとCOUNTRYがことなるもの...続きを読む

Q

の使い方

xhtml+cssをやり始めです。

実は、<br />と<p></p>の使い方についてわかんなくて教えてくださーい。

普通のhtmlでは改行したいときは、<br />を入れまくっていましたが、xhtmlは<br/>ではなく改行は<p></p>でといわれました。

<p>あいうえお</p>
<p>かきくけこ</p>

といれると改行にはなりますが、1行あけたい場合はどうしますか?

<p>あいうえお</p>
<p></p>
<p>かきくけこ</p>

としても1行あきませんよね?
こういう場合は

<p>あいうえお</p>
<br />
<p>かきくけこ</p>

でいいのですかね???

単純な質問ですみません。

Aベストアンサー

基本的に、<p>タグで段落を作るときに、勝手に一行開けてくれると考えていいかと思います。
そして、<br>は行をあけない普通の改行ということになります。

つまり、一行あけるときは
<p>あいうえお</p>
<p>かきくけこ</p>

行をあけないときは
<p>あいうえお<br />
かきくけこ</p>
となります。

*余談ながら、xhtmlでは<body>の直下に普通のテキストを書くことができませんので、文章を書くときはそれを<p>で囲ってやることが必要となります。

Q単独

お世話になります。

現在、サンプルのXSLTスタイルシート内を解析中なのですが、
各テンプレート内に、
<xsl:apply-templates />という単独での要素が、
いくつも出てきます。

ネット上で調べてみたところ、
「ほかのテンプレートの処理に移ることが出来る」
ということのようですが、
いまいち、この単独での要素を、
記述する意味が、よくわかりません。
(最近、XSLTを本で勉強しはじめたばかりなのですが、
  その本には、”<xsl:apply-templates select="mains">”みたいな例しか掲載されておらず、
  <xsl:apply-templates />という単独での説明が、残念ながら存在しておりませんでした・・・)

そこでご質問内容ですが、
XSLTスタイルシート内のテンプレート内に、
<xsl:apply-templates />という単独で、
で記述するのは、
どのようなことを実現させたいときに、
記述しているのでしょうか?

以上になります。
出来ましたら、例などを出していただきまして、
具体的に理解しやすく教えていただけますと
助かります。
どうぞよろしくお願いします。

お世話になります。

現在、サンプルのXSLTスタイルシート内を解析中なのですが、
各テンプレート内に、
<xsl:apply-templates />という単独での要素が、
いくつも出てきます。

ネット上で調べてみたところ、
「ほかのテンプレートの処理に移ることが出来る」
ということのようですが、
いまいち、この単独での要素を、
記述する意味が、よくわかりません。
(最近、XSLTを本で勉強しはじめたばかりなのですが、
  その本には、”<xsl:apply-templates select="mains">”みたいな例しか掲載されておらず、
  <xs...続きを読む

Aベストアンサー

わからないときは、仕様で確認するといいかも。
「select 属性が無いときは、カレントノードの全ての子ノード」ってかいてあったよ?

5.4 Applying Template Rules - XSL Transformations (XSLT)
→ http://www.w3.org/TR/xslt/#section-Applying-Template-Rules

「In the absence of a select attribute, the xsl:apply-templates instruction processes all of the children of the current node, including text nodes.」


だから、
select="node()"
の省略とみなして、いい気がする。

QXSLTを使用したXML->XML変換で...

XSLTを使用したXMLからXMLへの変換で、やり方が分からないのでどなたかお教え願います。

以下にXMLを記述します。

----[入力側]-----
<INPUT>
<IN1>
<old>100</old>
<new>100</new>
</IN1>
<IN2>
<IN21>
<old>200</old>
<new>200</new>
</IN21>
<IN22>
<old>300</old>
<new>300</new>
</IN22>
</IN2>
</INPUT>

----[出力側]-----
<OUTPUT>
<OUT1>
<OUT11>
<old>100</old>
<new>100</new>
</OUT11>
<OUT12>
<OUT121>
<old>200</old>
<new>200</new>
</OUT121>
<OUT122>
<old>300</old>
<new>300</new>
</OUT122>
</OUT12>
</OUT1>
</OUTPUT>


【質問内容】
 集団項目でないタグ(入力側のIN1およびIN2)を集団項目として出力したい

XSLTを使用したXMLからXMLへの変換で、やり方が分からないのでどなたかお教え願います。

以下にXMLを記述します。

----[入力側]-----
<INPUT>
<IN1>
<old>100</old>
<new>100</new>
</IN1>
<IN2>
<IN21>
<old>200</old>
<new>200</new>
</IN21>
<IN22>
<old>300</old>
<new>300</new>
</IN22>
</IN2>
</INPUT>

----[出力側]-----
<OUTPUT>
<OUT1>
<OUT11>
<old>100</old>
<new>100</new>
</OUT11>...続きを読む

Aベストアンサー

> 入力側のIN1,IN2が複数回繰り返された場合、
> 出力側もOUT1が複数回繰り返されるって感じです。

IN1とIN2が必ず1対1に対応するという条件でいいなら(複数の組が存在しても可)これでいけるでしょう。



IN1およびIN2以下の構造はオリジナルのまま出力されます。

<xsl:template match="INPUT">
 <OUTPUT>
  <xsl:apply-templates />
 </OUTPUT>
</xsl:template>
<xsl:template match="IN1">
 <xsl:text disable-output-escaping="yes">&lt;OUT&gt;</xsl:text>
  <xsl:copy-of select="." />
</xsl:template>
<xsl:template match="IN2">
 <xsl:copy-of select="." />
 <xsl:text disable-output-escaping="yes">&lt;/OUT&gt;</xsl:text>
</xsl:template>

> 入力側のIN1,IN2が複数回繰り返された場合、
> 出力側もOUT1が複数回繰り返されるって感じです。

IN1とIN2が必ず1対1に対応するという条件でいいなら(複数の組が存在しても可)これでいけるでしょう。



IN1およびIN2以下の構造はオリジナルのまま出力されます。

<xsl:template match="INPUT">
 <OUTPUT>
  <xsl:apply-templates />
 </OUTPUT>
</xsl:template>
<xsl:template match="IN1">
 <xsl:text disable-output-escaping="yes">&lt;OUT&gt;</xsl:text>
  <xsl:copy-of sele...続きを読む

QXML→XSL→HTML?

XMLファイルをHTMLみたいに表示したいのですが、
そのときにXalanというのはかならず必要なのでしょうか?
本にはJAXPというのをおとせとかいてあるのですが、
実際に指定されているサイトにいくとそれがありません。
それかXalan等は必要なくHTMLみたいに表示することは可能なのでしょうか?
そのへんの作り方を教えて下さい。
よろしくお願いします。

Aベストアンサー

答えは「Yes」と「No」です:)

XMLファイルをHTMLみたいに表示する、ということは、一般的には、XMLファイルを元にHTMLファイルに変換、変更するということです。 この変換の手段をXSLT(eXtensible Stylesheet Language Transformation)といいます。 ここでは、とくに"Transformation"(変換)がポイントとなります。

この「変換」を何を用いって行うかが、ご質問だと思います。 通常は、"XSLTプロセッサー"の類のソフトを使います(例:XMLをプロセスしてHTML変換する)。 Xalanはそのなかの一ソフトです。 他にもプロセッサーはありますが、コマンドライン処理でいいのか、それともプログラム言語を使っておこなうのか(Javaなど)によって、どのプロセッサーがいいのかが決まってきます(ちなみに、英語のサイトではありますが、プロセッサー一覧がリストされているサイトを参考URLにつけておきました)。

ただし、この「変換処理」は、通常2ステップで行います。 (1)XMLを読み込み、各パーツに区分けする(parsing: パーシング)、(2)読み組んだものを変換する(processor: プロセッサー)。 ですので、このパーシングする「パーサー」というソフトも必用となります。 Javaですと一般的には、Xercesというものが使われます。

最後に、JAXPの位置づけですが、今説明したとおり、パーサーもプロセッサーも何種類かあり、必ずしも同じ構文を使ってプログラムできるわけではありません(バージョンによって機能も違います)。 ただ、プログラマーとしては、パーサーが変わったから構文も変えなくてはいけないとなると、大変ですよね。 そこで、JAXPは、下のレベルで実装されているパーサー及びプロセッサーの上に「かぶさる」APIで、常に同じAPIのインターフェースをプログラマーに提供します。ようするに、プログラムを変えなくても、パーサーとプロセッサーをプラグ・アンド・プレイできるということです(対象となるソフトは、JAXPと互換性がある必用があります)。

長くなりましたが、「Xalan等は必用なくHTMLみたいに表示することは可能か」ですが、Javaなどをご利用になるのでしたら、必要ですね。

ただし、今ですと、IEの6以降は、パーサーとプロセッサー機能を組み込んでいるので、XML文にXSLを指定すれば、変換もしてくれます(IEの5くらいから一部サポートがありましたが、チョット不安定です)。 ちなみに、IEもパーサーが必要で、XML Parser 3.0というのが一緒に配布されています。


Hope that helps.
-mp

参考URL:http://www.xmlsoftware.com/xslt.html

答えは「Yes」と「No」です:)

XMLファイルをHTMLみたいに表示する、ということは、一般的には、XMLファイルを元にHTMLファイルに変換、変更するということです。 この変換の手段をXSLT(eXtensible Stylesheet Language Transformation)といいます。 ここでは、とくに"Transformation"(変換)がポイントとなります。

この「変換」を何を用いって行うかが、ご質問だと思います。 通常は、"XSLTプロセッサー"の類のソフトを使います(例:XMLをプロセスしてHTML変換する)。 Xalanはそのなかの一ソフト...続きを読む


おすすめ情報