- PR -

[XSLT] プレフィックスなしの変換

1
投稿者投稿内容
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2002-12-04 21:38
以下のようなXMLを変換しようとしています。
ソースと変換結果のどちらもネームスペースプレフィックスを持たず、
且つソースと変換結果では別のネームスペースを使用します。
プレフィックスを使用する場合には難なくできているのですが、
プレフィックスを取り除くとタグの中身だけが書かれたりとうまくいきません。
このような変換を行うにはどうすればよいのかわからず困っております。
お知恵をお貸しねがえませんでしょうか。

【ソース】
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns="http://xmlns.foo.com/books" version="1.0">
 <book>
  <isbn>0-1234-5678-9</isbn>
  <title>(書籍の名前)</title>
  <author>(書いた人)</author>
 </book>
</books>

【欲しい結果】(詳細は省いてあります)
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<table>
<tr><th>ISBN</th><th>題名</th><th>著者</th></tr>
<tr><td>0-1234-5678-9</td><td>(書籍の名前)</td><td>(書いた人)</td></tr>
</table>
</body>
</html>


[ メッセージ編集済み 編集者: makura 編集日時 2002-12-04 21:40 ]
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2002-12-05 10:38
こんな感じではどうでしょうか?

【xmlデータ】
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<books xmlns="http://xmlns.foo.com/books" version="1.0">
<book>
 <isbn>0-1234-5678-9</isbn>
 <title>(書籍の名前)</title>
 <author>(書いた人)</author>
</book>
</books>

【a.xsl】
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bk="http://xmlns.foo.com/books">
<xsl:output method="xml"/>
<xsl:template match="/">
<html>
<body>
<table>
<tr><th>ISBN</th><th>題名</th><th>著者</th></tr>
<xsl:for-each select="bk:books/bk:book">
<tr><td><xsl:value-of select="bk:isbn/text()"/></td>
<td><xsl:value-of select="bk:title/text()"/></td>
<td><xsl:value-of select="bk:author/text()"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

朝一で書いてIE6(MSXML4)でしか試してないので、
間違っていたらご指摘下さい>ALL
ほかのxsltプロセッサで動くかちょっと心配…
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2002-12-05 22:44
chackさん、ありがとうございます。
IE6(MSXML3)でもNetscape7(Transformiix) でもきちんと表示することができました。

プレフィックスなしで記述されたXMLの要素を、プレフィックス付きで引けるとは
考えつきませんでした。
namespace-alias を使ってみたりといろいろやってみたのですが

これでようやく次へ進めます。ありがとうございました。


[ メッセージ編集済み 編集者: makura 編集日時 2002-12-05 22:45 ]
1

スキルアップ/キャリアアップ(JOB@IT)