中の技術日誌
 

XMLってなぁに? 初級編 第9回

2005/08/14

この文書は執筆時点(2004/後半)での知識を基にしており、現状とあっていない可能性があります。

第9回

ここに2つのファイルがあるとしよう

a.xml
<A>
<NAME>名前</NAME>
<INT>20</INT>
</A>
b.xml
<A>
<NAME>名前</NAME>
<POWER>10</POWER>
</A>

さてこのa.xmlとb.xmlははたして同じことを表現するXMLなのだろうか?
両方の内容を見ると<NAME>は同じなんらかかの名前を意味していそうだ。
ただ、a.xmlには<INT>があって、<POWER>がない。
b.xmlには<POWER>があって、<INT>が無い。
<POWER>は力?<INT>はかしこさ?
なんだかゲームの設定情報にも思えないことも無い。

ちょっと視点を変えるとa.xmlは魔法のxmlで、b.xmlは武器のxmlに思えないことも無い。

このように<A>タグの意味を分けるためなどにタグに本籍を設定することが出来る。
それがXMLnamespaceだ。

a.xml
<?xml version="1.0" encoding="utf-8"?>
<A xmlns="http://xxx.example.com/">
<NAME>名前</NAME>
<INT>20</INT>
</A>

このようにxmlns=""と設定すると、この<A>タグの本籍地を設定することが可能になる。
上記のXMLでいうと、http://xxx.example.com/という名前空間の<A>タグと言う意味になる。

では以下のXSLファイルを適用してみよう。
a.xmlに対して適用してみてほしい。

a.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" />                  

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

<xsl:template match="A">A[<xsl:apply-templates />]A</xsl:template>
<xsl:template match="NAME">NAME[<xsl:apply-templates />]NAME</xsl:template>
<xsl:template match="INT">INT[<xsl:apply-templates />]INT</xsl:template>
</xsl:stylesheet>                  

結果.txt
名前20

結果はこのとおりXSLにて修飾していた内容が適用されていない。
なぜだろうか。



勉強会: 05/18 大阪 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告