0

問題は、共通の「XHTML テンプレート」がありますが、相対位置が異なり、一部のページに css ファイルがないことです。

私はサイトマップ(繭)でこれをやろうとしました

<map:match pattern="index.html">
    <map:generate src="data/courses-small.xml" type="file"/>
    <map:transform src="xsl/department_listing.xsl" type="xslt2" >
      <map:parameter name="relative_path" value="{baselink:SitemapBaseLink}"/>
    </map:transform>
    <map:serialize type="xhtml" />
  </map:match>

そして、共通の xsl の上にこれがあります

<xsl:param name="relative_path"/>

後で私はこのようにパラメータを使用しています:

<xsl:template match="/">
        <html>
            <head>
                <title><xsl:value-of select="$displaytitle"/></title>
                 <link rel="stylesheet" type="text/css" href="http://localhost:8080/cocoon/assignment2/css/style.css" /> 
                <link rel="stylesheet" type="{$relative_path}css/style.css" />
            </head>

問題は、$relative_path が値を生成せず、変数が空で、修正方法がわからないことです。

よろしくお願いします。

4

1 に答える 1

0

ここでは $relative_path が値を生成しないのは正常です

$relative_path のコンテキストで行ったように、繭アプリケーションのルートにある URL を「フォルダー単位で」「一致」させると、論理的に空の文字列が生成されます。<map:match pattern="index.html">…&lt;/map:match>

でも、

  • $relative_pathまたは../に似たコンテキストのように、ルートに対して1つのフォルダー構造を模倣するURLを「一致」させると、文字列に解決されます<map:match pattern="subfolder/index.html">…&lt;/map:match><map:match pattern="*/index.html">…&lt;/map:match>
  • ../疑似フォルダ構造に応じて必要な数だけ出力します(../../../..のコンテキストのように<map:match pattern="foo/*/bar/*/index.html">…&lt;/map:match>

これでいいはずです。


そうではありません。セットアップに追加の癖がある可能性があります。

  • CSS のマッチャーがあることを確認してください。ブラウザーのアドレス バーに URL を入力した場合、Cocoon によって正常に提供されていますか?

  • タイプミスをしないでください: コードではなく SO にあるだけかもしれませんが、XSL で HTML を修正する必要があります。

    <link rel="stylesheet" type="{$relative_path}css/style.css" />
    <!-- should read: -->
    <link rel="stylesheet" type="text/css" href="{$relative_path}css/style.css" />
    
  • Dimitre Novatchevが指摘した<xsl:param name="relative_path"/>ように、次のように XSL の正しい位置にあることを確認してください。

    <xsl:stylesheet version="1.0" 
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:param name="relative_path" />
      <xsl:template match="/">
        …
      </xsl:template>
    </xsl:stylesheet>
    

.

于 2012-11-05T01:19:37.020 に答える