XHTMLからXMLへのXSLT変換

私は非常に単純なxsltを使ってhtmlページをxmlファイルに変換しています。

But it appears to me that the starting point is not that straightforward to me.My first goal is to convert a <html> tag into a tag.

私は以下のxsltをやった:

 
   
     
    
 

 
   
 

 
  
     Conversion Test
  
 

However, now after I run this xslt, the result xml is purely of the same content of the original html page, it seems that the third template match that I wrote (to match the <html> tag) never gets hit.

ソースhtmlは以下のようになります:


 
   <head>..</head>
   <body>...</body>
 </html>

専門家が私をここで少し助けてくれましたか?

2
@DevNull、ソースhtmlで私の質問を更新しました。
追加された 著者 Kevin,
あなたはあなたのhtmlの例を挙げることができますか? (特に xmlns = "http://www.w3.org/1999/xhtml" のような名前空間)
追加された 著者 Daniel Haley,
ありがとう。良い質問+1
追加された 著者 Daniel Haley,

3 答え

XSLT 1.0:

xsl:stylesheetxmlns:x = "http://www.w3.org/1999/xhtml" を追加し、一致を match = "x:html" (注:「x」を使用する必要はありません;必要なものは任意に選択できます)。

XSLT 2.0:

上記の方法を使用するか、一致する名前空間接頭辞を "*"( match = "*:html" )に置き換えてください。また、 xsl:stylesheetxpath-default-namespace = "http://www.w3.org/1999/xhtml" を追加することもできます。

4
追加された
ありがとう、それは働いた!はい、HTMLは実際にはxhtmlで、私はXSLT1.0を使用しています。
追加された 著者 Kevin,
ソース文書の性質も反映するようにタイトルを更新しました。
追加された 著者 Kevin,
@ケビン - あなたは大歓迎です。また、XML出力に名前空間を必要としない場合は、 xsl:stylesheetexclude-result-prefixes = "#all" を追加します。 (注: x を除外するにはx に置き換えることができます。
追加された 著者 Daniel Haley,

XSLTの目的は xml のドキュメントを他の xml ドキュメントに変換することです。 HTMLはXML文書ではありません。 XHTMLはXMLですが、実際はHTMLで再フォーマットされていますので、XSLTを使用して簡単にやりたいことがわかりません。

0
追加された
だから今あなたはタイトルを更新する:)。これは私の問題を反映しています。
追加された 著者 Rob,

最初のテンプレートを削除するか、すべてのノードを node()で照合するよりも具体的にするとよいでしょう。

0
追加された
@ lkuty、私は最初のテンプレートを削除しようとしました。結果として得られるxmlは、単にマークアップのないテキストの大きなノードです。元のhtmlページのすべてのテキストが含まれています。
追加された 著者 Kevin,
アイデンティティ変換を削除すると言っていますか?
追加された 著者 Daniel Haley,
私は間違っていた。最初のルールは3番目のルールの中から選択できると考えましたが、実際には要素の一致パターンのデフォルトの優先順位は node()より大きく、問題にはなりませんでした。私はちょうどNSについて考えなかった。
追加された 著者 lkuty,