中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

XMLってなに?番外編2(XML名前空間について考える2)

さーて前回はXMLの中での名前空間の扱いをしらべた。

こういうXMLを考えよう。

<A><B>Bの中身</B></A>

このXMLをvalue-ofすることを考えてみよう。

<xsl:value-of select="/A/B" />

これでBの中身にアクセスできる。

では名前空間定義済みの場合にはどうなるのであろうか。

<A xmlns="http://www.example.com/tatoeba">
 <B>Bの中身</B>
</A>
<xsl:value-of select="/A/B" xmlns="http://www.example.com/tatoeba" />

上記のXMLとXSLの組み合わせを展開してみよう。

<http://www.example.com/tatoeba_A>
 <http://www.example.com/tatoeba_B>Bの中身
 </http://www.example.com/tatoeba_B>
</http://www.example.com/tatoeba_A>
<xsl:value-of select="/A/B" />

XMLの方は想像したとおりに展開されるのに、XSLのほうには展開されていない。
XSLもXML文書であるという点を考えてほしい。
以下のようなXSLが合ったとしよう。

<xsl:value-of select="/A/B" xmlns="http://www.example.com/tatoeba">
 <A />
</xsl:value-of>

このようなXSLであれば

<xsl:value-of select="/A/B">
 <http://www.example.com/tatoeba_A />
</xsl:value-of>

このように展開されるものだろう。
なぜXSL命令の中で展開されないのかを考えると、実は1つの結論しか出てこない。
名前空間なしXMLに対してアクセスする方法がなくなってしまうからだ。

名前空間のないシンプルなXMLが合った場合にアクセスできないのではXSLは大きな欠陥呼ばわりされてしまう事間違いなしである。
なのでXSL(プログラムでも同様)で名前空間を定義したXMLを操作する場合には

<xsl:value-of select="/the:A/the:B" xmlns:the="http://www.example.com/tatoeba">
 <A />
</xsl:value-of>

と利用する。

わかっていただけただろうか。
XMLを利用する際に名前空間はきっても切れないものなので、確実に理解してほしい。
次回からは本流に戻って中級編の開始です。

投稿日時 : 2004年10月22日 20:27

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント