- PR -

XSLTでの属性の生成について

1
投稿者投稿内容
Yasu
会議室デビュー日: 2004/08/03
投稿数: 6
投稿日時: 2004-08-05 11:26
初めて質問します。

<xsl:element name="book">
  <xsl:attribute name="id">SA100-2222</xsl:attribute>
   〜 略 〜
</xsl:element>

として、XML文書に変換すると

<book id="SA100-2222">
  〜 略 〜
</book>

と変換されます。この時、属性値の"(ダブルコーテーション)を
'(シングルコーテーション)で変換することは可能なのでしょうか。

簡単な質問ですみませんが、よろしくお願いします。



[ メッセージ編集済み 編集者: Yasu 編集日時 2004-08-05 11:27 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-08-05 12:47
XSLTの仕様では、XSLTプロセッサの出力オプションにはありません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
QuoteChar
プロパティを使用して、属性値を囲む引用符文字を決定します。有効な文字を次に示します。
一重引用符 (')
二重引用符 (")
QuoteChar の既定値は二重引用符 (") です。
.NET Framework 開発者ガイド
XmlTextWriter による XML 出力の書式設定
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpguide/html/cpconXMLOutputFormattingWithXmlTextWriter.htm

writer.QuoteChar = '\u0027';
で動きました。

他のXSLTプロセッサでも、ソースを掘り下げると、変更はできるでしょう
常用しないため、ドキュメント化されてないのかも。 xml printer writer quotechar ...
などの単語で検索すると

public void setQuoteCharacter(char quoteChar) {

write("=" + quoteCharacter);

みたいなソースが網にかかります。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-08-05 14:33 ]
Yasu
会議室デビュー日: 2004/08/03
投稿数: 6
投稿日時: 2004-08-05 15:12
MMX様、早速の回答ありがとうございます。

単純に一重引用符で変換するということはできないんですね。
プロセッサのソースを掘り下げてまでは考えていませんので
とりあえず「できない」と理解しておきたいと思います。

お忙しいところ、ありがとうございました。
TAKABE
常連さん
会議室デビュー日: 2003/05/14
投稿数: 43
投稿日時: 2004-08-05 17:52
 Yasuさま、こんにちは。
 大変馬鹿らしい方法ですが、以下のような裏技があります。

<xsl:element name="book">
<xsl:attribute name="id">SA100-2222</xsl:attribute>
<xsl:text>hoge</xsl:text>
</xsl:element>

 と書くようなところを、

<xsl:text disable-output-escaping="yes">&lt;book id=&apos;SA100-2222&apos;&gt;</xsl:text>
<xsl:text>hoge</xsl:text>
<xsl:text disable-output-escaping="yes">&lt;/book&gt;</xsl:text>

 と書くわけです。
 ただし…かなり特殊ですね。

[ メッセージ編集済み 編集者: TAKABE 編集日時 2004-08-05 17:54 ]

[ メッセージ編集済み 編集者: TAKABE 編集日時 2004-08-05 17:55 ]
1

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