- PR -

xml:spaceについて

1
投稿者投稿内容
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2004-07-22 14:49
xml:space属性について質問します。
よろしくお願いします。

「xml:space="preserve"」にして、XSL中に要素と属性を作成しようとすると要素はできるが属性が作成されません。「xml:space="default"」とするとちゃんと属性が出るんです。

例:<abc attr="属性" />となると思っていたのですが、属性が追加されません。
<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xml:space="default" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />

<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>

<xsl:template match="c">
<xsl:element name="abc">
<xsl:attribute name="attr">
属性
</xsl:attribute>
</xsl:element>
<xsl:apply-templates />
</xsl:template>

</xsl:stylesheet>
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2004-07-22 14:55
すみません。下のxml:spaceをdefaultのまま送ってしまいました。
属性が作成できないのはxml:space="preserve"にしたときです。

<xsl:stylesheet version="1.0" xml:space="preserve" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />

よろしくお願いします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-07-22 16:18
xsl:element の内容が
空白テキストノードの次に
xsl:attribute が来る事になり
属性がelementノードの直後に付けられないから、では

<xsl:element name="abc"><xsl:attribute name="attr">
属性
</xsl:attribute>
と書くと、  <abc attr=" &#xA;属性 &#xA;" /> が出ます。

スタイルシート自体に xml:space="preserve" する理由は何?
入力XMLの読み込みには無関係と思います。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-07-22 16:27 ]
hirotan
常連さん
会議室デビュー日: 2004/07/20
投稿数: 41
投稿日時: 2004-07-22 16:26
MMXさん
ここのところ度々質問させてもらっていますが、たくさんの回答をいただきまして
本当に助かります。ありがとうございます。

引用:

スタイルシート自体に xml:space="preserve" する理由は何?
入力XMLの読み込みには無関係と思います。



たまたま何かのサンプルを流用したときにこの記述があっただけで、特に理由はありません。
途中で、属性が追加できなくてはまってしまいました。仕様ならば仕方ないですね。


1

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