- PR -

MSXML3にてXML文書内のbrタグが改行されない

1
投稿者投稿内容
JAZZBASS
会議室デビュー日: 2002/07/14
投稿数: 3
投稿日時: 2002-07-14 02:29
初めてご質問させていただきます。
現在社内業務で大量XML文書をXSL参照を行う作業の検証を行っております。
現在以下のようなサンプルXML文書内のbr改行タグが認識されず
「1行目です。2行目です。」と1行でブラウザに表示されます。
IE5.5またはIE6でMSXML3 SP2を使用しています。
調査は継続してはおりますが現在も原因が判明しないため、書き込みさせていただきました。
改行タグを認識させる方法またはXML作成時の代替手段でよいアドバイスをいただければ助かります。宜しくお願い申しあげます。


test3.xmlの内容
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="test3.xsl"?>
<doc>
<item>1行目です。<br />2行目です。</item>
</doc>

test3.xslの内容
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/doc">
<html>
<head>
     <title>XSLサンプル3</title>
</head>
<body>
<xsl:value-of select="item" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>


seachicken
会議室デビュー日: 2002/07/14
投稿数: 1
投稿日時: 2002-07-14 06:21
JAZZBASSさん、

<xsl:value-of select="item" />ではなく<xsl:copy-of select="item" />を
使ってみればよいように思いましたが。
JAZZBASS
会議室デビュー日: 2002/07/14
投稿数: 3
投稿日時: 2002-07-14 11:54
引用:

seachickenさんの書き込み (2002-07-14 06:21) より:
JAZZBASSさん、

<xsl:value-of select="item" />ではなく<xsl:copy-of select="item" />を
使ってみればよいように思いましたが。




seachicken様、早速のアドバイス有り難うございました。
確認いたしましたところ、改行はされるようになったのですが
copy-ofですとツリーの内容が全て表示されるため、先頭に要素名が表示されてしまいます。
<item>では表示されませんでしたので<内容>で確認しました。

<xsl:copy-of select="内容" /> の出力結果

<内容>1行目です。
2行目です。

そこでいろいろ調べた結果、次の方法で解決できました。

<xsl:apply-templates select="内容"/>

<xsl:template match="br">
<br/>
</xsl:template>

お手数お掛けし申し訳ありませんでした。


[ メッセージ編集済み 編集者: JAZZBASS 編集日時 2002-07-14 12:28 ]
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-07-14 12:55
井上です。

私はいつも、以下のような方法を使っています。HTML タグを含むテキストは <text> 要素に書かれているものとします。

<xsl:apply-templates select="text"/>

<xsl:template match="text">
<xsl:copy-of select="* | text()"/>
</xsl:template>
_________________
www.kojii.net
JAZZBASS
会議室デビュー日: 2002/07/14
投稿数: 3
投稿日時: 2002-07-15 10:18
井上様

<xsl:copy-of select="*|text()" />
で全てうまくいきました。
有難うございました。
1

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