埋め込み時にタグを無効にする方法

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
spico
パワーユーザー
記事: 32
登録日時: 2007年4月13日(金) 18:06

埋め込み時にタグを無効にする方法

投稿記事 by spico » 2007年8月21日(火) 18:00

お世話になっております。続けての質問ですみません。
altなどタグ内の要素にtextareaに入力したテキストを読み込みたいのですが、
その際に、<br />などのタグを除去したいのですが可能でしょうか?

宜しくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 埋め込み時にタグを無効にする方法

投稿記事 by webmaster » 2007年8月22日(水) 12:25

 spicoさん、ご質問ありがとうございます。
 タグ除去に関しては、エントリ全体のタグを除去する機能はあるのですが、
特定の項目のタグのみ除去するという機能が現在ございません。m(__)m

 XSLTを駆使して実現することはできるかと思います。
 少し探してみたところ、このようなXSLを公開して下さっている方がいらっしゃいました。

 http://www7a.biglobe.ne.jp/~goroh/categ ... 161.i.html

コード: 全て選択

<!-- タグの除去処理(ここから) -->
<xsl:template name="EraseTag">
	<xsl:param name="str" select="''" />
	<xsl:param name="chk_str" select="concat(substring-before($str, '<'), substring-after($str, '>'))" />
	<xsl:choose>
		<xsl:when test="$chk_str = ''">
			<xsl:value-of select="$str" />
		</xsl:when>
		<xsl:otherwise>
			<xsl:call-template name="EraseTag">
				<xsl:with-param name="str">
					<xsl:value-of select="$chk_str" />
				</xsl:with-param>
			</xsl:call-template>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>
<!-- タグの除去処理(ここまで) -->
 まず、上記のソースを、XSLTのどこかにコピー&ペーストして下さい。
 場所は、以下の場所が良いでしょう。

コード: 全て選択

  <!-- この場所へコピー&ペースト -->
</xsl:stylesheet>
 使い方としては、alt用のtextarea項目名を仮に"alttext"として、

コード: 全て選択

<img src="{myimage1}">
  <xsl:attribute name="alt">
    <xsl:call-template name="EraseTag">
      <xsl:with-param name="str">
        <xsl:value-of select="alttext" />
      </xsl:with-param>
    </xsl:call-template>
  </xsl:attribute>
</img>
 のような感じになるかと思います。
 (試していないので、間違っていたらすいません)

 一度お試し頂ければ幸いです。

spico
パワーユーザー
記事: 32
登録日時: 2007年4月13日(金) 18:06

ありがとうございました。

投稿記事 by spico » 2007年8月23日(木) 13:12

そのままコピーペーストで問題なく実現できました。
内容はまったくわかりませんが...、思ったいたより難しいことだったのですね。
調べていただいてありがとうございました。

返信