2011-06-22 14 views
1

別のXHTMLドキュメントから新しいXHTMLドキュメントを作成しようとしています。私は古いXHTML文書でDIVタグのいくつかを使用したいだけですが、私が正しいことをしているかどうかはわかりません。私はID = mbContentとの特別なDIVタグを選択したい場合は起動するには、私はXSLTでDIVタグを選択しますか?

<xsl:template match="x:div[@id='mbContent']"> 

を使用することができ、このDIVタグはように画像等他のdiv要素やコンテンツが含まれています。コンテンツに適用されているのと同じCSSスタイルを使用する場合はどうすればよいですか? CSSスタイルをコピーする方法はありますか、新しいCSSスタイルを追加する必要がありますか?新しいXHTML文書はant XHTMLの一部になるので、HEADタグを使用することはできません。そのようにCSSスタイルシートへの参照を入れてください。

ええと、主なXHTML documnetのHEADにあるCSSスタイルシートを使用すると、おそらくこのCSSスタイルをこのDIVに適用できますか?新しいXHTMLドキュメントにスタイルを適用するにはどうすればよいですか?

私は少し混乱していますが、私の質問は混乱しないように願っていますか? :)

こんにちは!私は以下のコードが私のために働いていないので、いくつかの新しい助けが必要です。これは正常ではありません xmlns:x="http://www.w3.org/1999/xhtml" and "x:div[@id='mbContent']" 私は、何か変わった理由でこのコードを受け入れないプロキシモジュールを持つCMSツールを使用していると思います。したがって、代わりにxsl:apply-templates select="//*[@id='mbSubMenu']"これを使用してDIV要素に値を追加するクラスまたはIDを追加するいくつかの代替ソリューションを探していますまた、次の例のようにコピーを使用しますか?新しい助けを得ましょう!ありがとう! :)

+1

考えられる[duplicate](http://stackoverflow.com/questions/6431330/css-style-and-xslt)。 –

答えて

1

XSLTドキュメントでxmlnsとして 'x'を使用するまで、式に使用されるXpathは問題ありません。

<div>のIDがmbContentであればテンプレートは一致し、選択されたコンテキストにはすべての子孫が含まれます。

要素のインラインCSSを変更できます。あなたはこの部分が他のXHTML文書の中にあると言って以来。 XMLを出力として選択できます。 必要に応じてインラインCSSを変更します。 異なるクラスを割り当てて、グローバルスタイルを自動的に取得することもできます。

考えられるのは、XML文書を指定すると、それを別のXML文書に変換するということです。 したがって、好きなようにスタイルを適用できます。

あなたの質問にお答えしたいと思います。

P.S. XPath式で適切なxmlnsを使用します。

次のHTMLドキュメントがあるとします。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
    <title></title> 
</head> 
<body> 
    <div id="mbContent"> 
     <div> 
      <span>Some complex structure</span> 
     </div>  
    </div> 
</body> 

これは、次のような出力になります、次のXSL

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.w3.org/1999/xhtml" 
xmlns:x="http://www.w3.org/1999/xhtml" 
exclude-result-prefixes="x"> 

<xsl:output method="xml" indent="yes"/> 

<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*" /> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="x:div[@id='mbContent']"> 
    <xsl:copy> 
     <xsl:attribute name="class"> 
      <xsl:text>someNewStyle</xsl:text> 
     </xsl:attribute> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

を適用します。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
    <title/> 
</head> 
<body> 
    <div class="someNewStyle" id="mbContent"> 
     <div> 
      <span>Some complex structure</span> 
     </div> 
    </div> 
</body> 

あなたのニーズに合うようにXSLを変更することができます。

ありがとう、

Ravish。

+0

ありがとう、私はxmlns:x = "http://www.w3.org/1999/XSL/Transform"を使用していますが、私はDIV mbContent外のコンテンツを取得します。(テキストのみ)このDIVにインラインスタイルを適用するにはどうすればよいですか? – user790843

+0

DIV mbContent(テキストのみ)以外のコンテンツにコメントを投稿してください:これは標準の組み込みテンプレートの出力と思われます。これを避けるには、XSLTコードの最後にあるのような空のテンプレートで他のものをキャッチするようにしてください。 – Andreas

+0

ブラウザで上記のコードを試してからソースを見ると、class = "someNewStyle"は追加されません!私はこのコード行をHTMLスカーレットの最初の行に置いていますか?<?xml-stylesheet type = "text/xsl" href = "transform.xsl"?>これは、実際のXHTMLドキュメント内に参照を挿入することによってXHTMLドキュメントを変換する唯一の方法ですか? XSLファイルとXHTMLファイルの両方がサーバー上の同じフォルダにある場合は、他の方法でソースを読むかリンクすることができますか?私のコメントへの答えをpreciate! :) – user790843

関連する問題