質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

XSLT

XSLTは、組み立てられた文書を(XML、HTML、そしてプレーンテキストのような)別のフォーマットに変化する為にデザインされたXMLの為の変換用言語です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1825閲覧

XSLTを使いHTMLファイルの変換(実行結果が変わらない問題)

tamagoice

総合スコア1

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

XSLT

XSLTは、組み立てられた文書を(XML、HTML、そしてプレーンテキストのような)別のフォーマットに変化する為にデザインされたXMLの為の変換用言語です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/10/25 13:25

前提・実現したいこと

XSLTを使いブックマークファイルの変換(ブックマーク名とURLの抽出)
・ブックマークファイルとはブラウザからエクスポート出来るhtmlファイル
・xsltprocコマンドでのhtml→xmlの変換(--htmlオプションにて)

<理想変換後>
<target>https://www.youtube.com/</target> <body>YouTube</body>
<target>https://www.yahoo.co.jp/</target> <body>Yahoo! JAPAN</body>
<target>https://twitter.com/</target> <body>Twitter</body>
<target>https://www.apple.com/</target> <body>apple</body>

発生している問題・エラーメッセージ

分からないなりにXSLTファイルを用意し、変換しようと思ったのですが上手く変換できません。エラーがあるわけではないんですが、XSLTスタイルシートをどのように書いても出力結果が同じになってしまいます。ちゃんとmatchしてくれません。

<変わらない出力結果>

<?xml version="1.0" encoding="UTF-8"?>

BookmarksBookmarks



お気に入りバー



YouTube

Yahoo! JAPAN

Twitter

apple



リーディング リストの保存




該当のソースコード

html

1<!--変換したいhtmlファイル--> 2 3<!DOCTYPE NETSCAPE-Bookmark-file-1> 4<!-- This is an automatically generated file. 5 It will be read and overwritten. 6 DO NOT EDIT! --> 7<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> 8<TITLE>Bookmarks</TITLE> 9<H1>Bookmarks</H1> 10<DL><p> 11 <DT><H3 ADD_DATE="1598059180" LAST_MODIFIED="1634114793" PERSONAL_TOOLBAR_FOLDER="true">お気に入りバー</H3> 12 <DL><p> 13 <DT><A HREF="https://www.youtube.com/" ADD_DATE="1634114632" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABx0lEQVQ4jZ2TQWtTQRDHfzO7yUsNKSG0heJJ0YKnCvVSkHrV7+BBeu7Vk9+lH8CLN6EXk4Lo1V48lGClFBELGmmSmr73djy8fS8vll4c+LO7s7OzM///LhQmBmrg+uDtZrgIBQQAKyf/YQbiBexFt9t9niSP7ji3umrW7og0UfWL0ZaOzGYjmBxn2c/BdPpJxuNz+vDwFxxnqmaqZs4V8L5AuS6haqmqXcDpO3jCEN4YmEFmkMcxrSCSGqSh8GcGIY52Am91Ce5HJ5EYBRwbG45222HmUHVS+DX2DhASuKu3oAeolGSqCiDs7gqHh8L2thCCxOQSbxFAO9BToClzNQSJokwmsLUFgwHs78P6eklnlQho6c0axUKbTVhZgUYjHpeqCwE8kMWFxYNF9uVlGA5hbw8ODuqJzajqnPENPtfYDxU2N4OtrRVzkVDfC0V8/h2G/g98AR7ESkJF8tFRcYdzkOf15iRW6y/hlD48voCz+BbmELFrvhrG8OMjPBOAV3D7qXM791R73Var00qSJRoNTyifB5Dn+eVsNv19dTX+mmWj93n+4SWciM1LKkmqy7RoImFBqPqPfH39K7t/4A18f74nAH8Bjm35s3ZkOjEAAAAASUVORK5CYII=">YouTube</A> 14 <DT><A HREF="https://www.yahoo.co.jp/" ADD_DATE="1634114654" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA9UlEQVQ4je2QsUoDQRRFz4srCAFrGzvBIlVmFsJ2NpaCoIVfIAga/AJ7y5AydRDBwsLORguLKIMgaOMXWJjCQiyWvRa7YbMbEfv4qplz79x578F/mXAXYDs1PjDC/p8CJgfh+mCHwJ0RNoA05161NyeQ3ULjGrLNaWFB+CvhJdxpGdxOchbvlcw/58yf23SC6CxDeg+sg22DmsAQspbx+FJ0ugb2CjwZoRNV5xl9iHgX9AC6zGm0YozeSldjCwRkR8DXj4vRUqJilOMZDXcj3NnkHtUN1bLKAkU7Bg5gcVx2XTH4LtCbiSFYob8Dn0ZY/f3j+apvArFNZWAcX+gAAAAASUVORK5CYII=">Yahoo! JAPAN</A> 15 <DT><A HREF="https://twitter.com/" ADD_DATE="1634114722" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACMUlEQVQ4jY2TO09UURSFv73PnYfzQlEKAROjIRbaaYE2xtjZj7UWZrSh8geMGq1RY0wMBEi0wcRWQ4Gxwl8gBTExMIBGzQAzwzzuvWdbzIyhYBJWuR9r7XPW3nAUlE35bAGL5gYXmcmAzKD4Ick+iYgdDI/N/r2qQeKGON1cT2bfAm60WitslQp/AoCx+fpNdXJtQ+QJAMVFx4lzypsr4fh8bUqSiWkJUoLBeLt5Hx9VSeoL4FMAoBJf0KHC4zMLe2fjVvRoqzS8DsSFmd1hxJ7hTXyz3sZMNZ2btE5jL3by+v8TxudaE7hoRTPZk75e+y3CB/OyhJM05hcA1yuOJJNT36jPVe4U7lE2DQCIomOoX7NWO4/qiKSzJcJ2yaJOBKiAGJghpiLOVH70vqdLYEGcUQ0mzTxmPvbNmnUbJQCj2wxiPvCdEDH71iPwCiabd4e+evMPxAW/RNQABcQwMzABEcQTpLCwtd1o5ZcBKIvXvlXeBR8tbHlNZYK+h93G7viYxZpOKaLT1ZLsUjalq9T1fDuRrojIUws7qyouBjDEG8RAqLl80jfqy5Wd7HMwoSy+RwDMWZoRZGMnN0MUvjPRliCRmUdcwmk2n7Tm/tIudpspafdFAQKA037/kq77h3Jcbmkhl7cYCD3SaQKs+WbzVeV75mVf9dBVPjXbGE0muCxE59Usg1E151Yr1Z8rTE20e7suB9WPjuLiwCs8cEwmFN8rF4vCdeALAP6wsQ/iHwyf/mrLM8vhAAAAAElFTkSuQmCC">Twitter</A> 16 <DT><A HREF="https://www.apple.com/" ADD_DATE="1634114760" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABLElEQVQ4jb2SMUvEQBCF39vcmhSCxWnhHxCt7MXK1sbGwsrmrKyCkFtSRSHJFVcrCGIncidY2Ata+wf8AYKFgoUQJdyOzR0cueimcrqZx/vmDbtEg8qybMnzvA7JyyiKXqc11cDcVko9iMiJ1vqrqrdcAJJHANZIdsIw/KjqtQl6vd5Cv99fHLeP1tqNoiiGaZouzyyoMUcAIgBzJE9JDqy1WwBiAIGI3IhIGMfx+wwgz/NdkgPHVd8kN7vd7lPdCYcOM0geTMwzAJIrDn9RluX99KCawHMAtO/77b8ALw5AazQaHSdJMv8b4M4BAICdIAguagFKqTMAbw0gt7WA8T+vvsQzgM9JQ3JojLmuBQCAMWYAYA/AlbV22xizKiLrJM9FJNda7zdI+I/1A4bxW6WYfmNUAAAAAElFTkSuQmCC">apple</A> 17 </DL><p> 18 <DT><H3 ADD_DATE="1598059186" LAST_MODIFIED="0">リーディング リストの保存</H3> 19 <DL><p> 20 </DL><p> 21</DL><p> 22

xslt

1<?xml version="1.0" encoding="UTF-8" ?> 2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 3<xsl:output method="xml" encoding="UTF-8" /> 4 5 <xsl:template match="/"> 6 <xsl:apply-templates/> 7 </xsl:template> 8 9 <xsl:template match="DT"> 10 <xsl:apply-templates/> 11 <body> 12 <xsl:value-of select="A"/> 13 </body> 14 </xsl:template> 15 16 <xsl:template match="A"> 17 <target> 18 <xsl:value-of select="@HREF"/> 19 </target> 20 </xsl:template> 21 22</xsl:stylesheet>

試したこと

・スタイルシートに何を書こうが変化がありません。何も書かなくてもこの出力が出ます。
・オンライン変換ツールでhtmlファイルをxmlファイルにし、それをXSLT変換した場合は上手くいきました。

XML

1<!--オンライン変換ツールで変換したブックマークデータ--> 2 3<?xml version="1.0" encoding="UTF-8"?> 4<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> 5<article lang=""> 6 <para><note><remark>This is an automatically generated file.</remark></note><note><remark>It will be read and overwritten.</remark></note><note><remark>DO NOT EDIT!</remark></note>Bookmarks</para> 7 <sect1> 8 <title>お気に入りバー</title> 9 <para><ulink url="https://www.youtube.com/">YouTube</ulink> </para> 10 <para><ulink url="https://www.yahoo.co.jp/">Yahoo! JAPAN</ulink> </para> 11 <para><ulink url="https://twitter.com/">Twitter</ulink> </para> 12 <para><ulink url="https://www.apple.com/">apple</ulink> </para> 13 </sect1> 14 <sect1> 15 <title>リーディング リストの保存</title> 16 </sect1> 17</article>

・それを参考にtidyでxmlファイルに変換し、その後XSLT変換を試みました書式が変わるだけで同じような実行結果になります。

XML

1<!--tidyにてXMLに変換したブックマークデータ 2(tidyオプション:-asxml)--> 3 4<!DOCTYPE netscape-bookmark-file-1> 5<!-- This is an automatically generated file. 6 It will be read and overwritten. 7 DO NOT EDIT! --> 8<html xmlns="http://www.w3.org/1999/xhtml"> 9<head> 10<meta name="generator" content= 11"HTML Tidy for HTML5 for Windows version 5.8.0" /> 12<meta http-equiv="Content-Type" content= 13"text/html; charset=utf-8" /> 14<title>Bookmarks</title> 15</head> 16<body> 17<h1>Bookmarks</h1> 18<dl> 19<dd></dd> 20<dd> 21<h3 add_date="1598059180" last_modified="1634114793" 22personal_toolbar_folder="true">お気に入りバー</h3> 23<dl> 24<dd></dd> 25<dt><a href="https://www.youtube.com/" add_date="1634114632" icon= 26"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABx0lEQVQ4jZ2TQWtTQRDHfzO7yUsNKSG0heJJ0YKnCvVSkHrV7+BBeu7Vk9+lH8CLN6EXk4Lo1V48lGClFBELGmmSmr73djy8fS8vll4c+LO7s7OzM///LhQmBmrg+uDtZrgIBQQAKyf/YQbiBexFt9t9niSP7ji3umrW7og0UfWL0ZaOzGYjmBxn2c/BdPpJxuNz+vDwFxxnqmaqZs4V8L5AuS6haqmqXcDpO3jCEN4YmEFmkMcxrSCSGqSh8GcGIY52Am91Ce5HJ5EYBRwbG45222HmUHVS+DX2DhASuKu3oAeolGSqCiDs7gqHh8L2thCCxOQSbxFAO9BToClzNQSJokwmsLUFgwHs78P6eklnlQho6c0axUKbTVhZgUYjHpeqCwE8kMWFxYNF9uVlGA5hbw8ODuqJzajqnPENPtfYDxU2N4OtrRVzkVDfC0V8/h2G/g98AR7ESkJF8tFRcYdzkOf15iRW6y/hlD48voCz+BbmELFrvhrG8OMjPBOAV3D7qXM791R73Var00qSJRoNTyifB5Dn+eVsNv19dTX+mmWj93n+4SWciM1LKkmqy7RoImFBqPqPfH39K7t/4A18f74nAH8Bjm35s3ZkOjEAAAAASUVORK5CYII="> 27YouTube</a></dt> 28<dt><a href="https://www.yahoo.co.jp/" add_date="1634114654" icon= 29"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA9UlEQVQ4je2QsUoDQRRFz4srCAFrGzvBIlVmFsJ2NpaCoIVfIAga/AJ7y5AydRDBwsLORguLKIMgaOMXWJjCQiyWvRa7YbMbEfv4qplz79x578F/mXAXYDs1PjDC/p8CJgfh+mCHwJ0RNoA05161NyeQ3ULjGrLNaWFB+CvhJdxpGdxOchbvlcw/58yf23SC6CxDeg+sg22DmsAQspbx+FJ0ugb2CjwZoRNV5xl9iHgX9AC6zGm0YozeSldjCwRkR8DXj4vRUqJilOMZDXcj3NnkHtUN1bLKAkU7Bg5gcVx2XTH4LtCbiSFYob8Dn0ZY/f3j+apvArFNZWAcX+gAAAAASUVORK5CYII="> 30Yahoo! JAPAN</a></dt> 31<dt><a href="https://twitter.com/" add_date="1634114722" icon= 32"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACMUlEQVQ4jY2TO09UURSFv73PnYfzQlEKAROjIRbaaYE2xtjZj7UWZrSh8geMGq1RY0wMBEi0wcRWQ4Gxwl8gBTExMIBGzQAzwzzuvWdbzIyhYBJWuR9r7XPW3nAUlE35bAGL5gYXmcmAzKD4Ick+iYgdDI/N/r2qQeKGON1cT2bfAm60WitslQp/AoCx+fpNdXJtQ+QJAMVFx4lzypsr4fh8bUqSiWkJUoLBeLt5Hx9VSeoL4FMAoBJf0KHC4zMLe2fjVvRoqzS8DsSFmd1hxJ7hTXyz3sZMNZ2btE5jL3by+v8TxudaE7hoRTPZk75e+y3CB/OyhJM05hcA1yuOJJNT36jPVe4U7lE2DQCIomOoX7NWO4/qiKSzJcJ2yaJOBKiAGJghpiLOVH70vqdLYEGcUQ0mzTxmPvbNmnUbJQCj2wxiPvCdEDH71iPwCiabd4e+evMPxAW/RNQABcQwMzABEcQTpLCwtd1o5ZcBKIvXvlXeBR8tbHlNZYK+h93G7viYxZpOKaLT1ZLsUjalq9T1fDuRrojIUws7qyouBjDEG8RAqLl80jfqy5Wd7HMwoSy+RwDMWZoRZGMnN0MUvjPRliCRmUdcwmk2n7Tm/tIudpspafdFAQKA037/kq77h3Jcbmkhl7cYCD3SaQKs+WbzVeV75mVf9dBVPjXbGE0muCxE59Usg1E151Yr1Z8rTE20e7suB9WPjuLiwCs8cEwmFN8rF4vCdeALAP6wsQ/iHwyf/mrLM8vhAAAAAElFTkSuQmCC"> 33Twitter</a></dt> 34<dt><a href="https://www.apple.com/" add_date="1634114760" icon= 35"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABLElEQVQ4jb2SMUvEQBCF39vcmhSCxWnhHxCt7MXK1sbGwsrmrKyCkFtSRSHJFVcrCGIncidY2Ata+wf8AYKFgoUQJdyOzR0cueimcrqZx/vmDbtEg8qybMnzvA7JyyiKXqc11cDcVko9iMiJ1vqrqrdcAJJHANZIdsIw/KjqtQl6vd5Cv99fHLeP1tqNoiiGaZouzyyoMUcAIgBzJE9JDqy1WwBiAIGI3IhIGMfx+wwgz/NdkgPHVd8kN7vd7lPdCYcOM0geTMwzAJIrDn9RluX99KCawHMAtO/77b8ALw5AazQaHSdJMv8b4M4BAICdIAguagFKqTMAbw0gt7WA8T+vvsQzgM9JQ3JojLmuBQCAMWYAYA/AlbV22xizKiLrJM9FJNda7zdI+I/1A4bxW6WYfmNUAAAAAElFTkSuQmCC"> 36apple</a></dt> 37</dl> 38</dd> 39<dd> 40<h3 add_date="1598059186" last_modified="0">リーディング リストの保存</h3> 41<dl> 42<dd></dd> 43</dl> 44</dd> 45</dl> 46</body> 47</html>

補足情報(FW/ツールのバージョンなど)

ブラウザからエクスポートしたブックマークデータをそのままXSLT変換したいので、htmlファイル側に直接書き込んだり消したりはなしでお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cx20

2021/10/25 15:24

XSLT自体がXML文書を変換する為の言語である為、XML形式でない入力元(HTMLファイル)からの変換は厳しいのではないでしょうか。。
cx20

2021/10/25 16:24

xsltprocのオプションに「--html」を渡すと入力をHTMLパーサとして処理してくれるようですね。失礼しました。。
tamagoice

2021/10/25 16:45

いえいえ、上手くいかず死にそうだったのでコメントして頂けただけで嬉しかったです!ありがとうございました!
guest

回答1

0

ベストアンサー

<xsl:template match="DT">n

match= や select=に書くタグ名や属性名を小文字にしてください。

投稿2021/10/25 15:19

int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamagoice

2021/10/25 16:19

上手くいきました、ありがとうございます!
tamagoice

2021/10/25 17:34

すみません、もう一つ質問良いでしょうか? 同じXSLT関連の質問で、タグ<a>にmatchした時だけタグ<a>の値を出力したいのですがどうしたらいいのでしょう。たぶんvalue-ofは子ノードにしか使えない(?)と思うのですが<dt>は至る所にありmatch条件に使いづらいです。
int32_t

2021/10/25 22:06

> もう一つ質問良いでしょうか? ダメです。新しい質問を作ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問