たとえば、
<root>
<test>
<a>あああああああああああああ<bold>いいいい</bold>あああああああ</a>
<test>
<test>
<a>ううううううう<bold>えええええ</bold>ううううう</a>
<test>
</root>
こんなxmlがあった場合、
<bold>ではさまれた部分を
htmlの<b>に置き換えることは可能なのでしょうか。
ただしちゃんと<a>の要素の中としてです。
<bold>部分だけ取り出してではなく。
つまり、
<p>あああああああああああああ<b>いいいい</b>あああああああ</p>
<p>ううううううう<b>えええええ</b>ううううう</p>
みたいな出力を得たいです。
No.2ベストアンサー
- 回答日時:
=========source.xml=============
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>
<a>あああああああああああああ<bold>い<strong>い</strong>いい</bold>あああああああ</a>
</test>
<test>
<a>ううううううう<bold>えええええ</bold>ううううう</a>
</test>
</root>
=============transform.xsl===============
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes" />
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="test">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="bold">
<xsl:element name="b">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="a">
<xsl:element name="p">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
====================result.xml===================
<?xml version="1.0" encoding="UTF-16"?>
<root>
<p>あああああああああああああ<b>い<strong>い</strong>いい</b>あああああああ</p>
<p>ううううううう<b>えええええ</b>ううううう</p>
</root>
No.3
- 回答日時:
補足。
>#1さん
もとのXMLファイルが
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>
<a>あああああああああああああ<bold width="15px">いbold<strong>い</strong>いい</bold>あああああああ</a>
</test>
<test>
<a>ううううううう<bold>えええええ</bold>ううううう</a>
</test>
</root>
だったら?
【bold要素の中のテキスト『いbold』の『bold』は変換してはいけない】
ちなみに俺の奴の場合,
<bold width="15px">いbold<strong>い</strong>いい</bold>
→<b width="15px">いbold<strong>い</strong>いい</b>
と、属性はそのまま保持される。
(単純に<bold>を<b>に変換したものとは異なる。まあこの程度の変換なら正規表現なんかを使って出来るかもしれないけどね。)
#各XML,XSLTにおいて名前空間に関する検討はしていないので注意。
#あと、HTMLにおいてb要素にはたぶんwidth属性がない、ということや、Strictでないソースだということは理解しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの置換が上手くいかない Microsoft® Excel® 2019 MSO (バージョン 5 2022/08/17 22:26
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS ワードプレスで太字が反映されません PC(MacBook)の画面上には、太字は反映されるのに、スマホ 3 2022/12/18 18:56
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- HTML・CSS 【CSS】特定のリンクを含むaタグを指定できるかどうか? 3 2022/10/15 02:45
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XSLで、XMLの空タグを制御したい。
-
ノードの並び替え
-
タグの有無の判定
-
xslでの最小値、最大値の取得
-
xmlのテキストにリンクを張りた...
-
XMLのHTMLへの変換 (初心者)
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
バッチファイルでテキストファ...
-
昔Winnyってありましたけど、あ...
-
あせんうぶり言語
-
VB6でXMLを作成しているのです...
-
SNMP リンクダウンとノードダ...
-
あるノードリストに、特定の名...
-
HTTPステータス 404 - There is...
-
コンテキストメニュークリック...
-
Listからのnull要素を削除方法は?
-
ルート要素ノードが2個ある場合?
-
ノードとは
-
このエラー、何とかなりません...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XSLで、XMLの空タグを制御したい。
-
タグの有無の判定
-
XSLでXMLデータをタブ区切りデ...
-
XSLTで固定長データファイルを...
-
XSL中の改行、タブを無効にした...
-
xmlのテキストにリンクを張りた...
-
重複するものを消したい
-
XSLTがブラウザで表示されません。
-
うまく表示されない
-
文字列の取得
-
xsl:param要素をxsl:templateの...
-
value-ofの値を属性値とするには
-
XMLをXSLを使いHTMLに変換した...
-
XMLから指定テキストのみを抜き...
-
ある文字列を含むノードが存在...
-
VBAからxml・スタイルシートを...
-
xsl、xpath式の書き方について
-
XSLで特定のタグだけを出力する...
-
XSL内でJavaScriptを記述し、Ja...
-
XSLTで直下のテキストのみ取得...
おすすめ情報