2012-02-28 2 views
1

Я пытаюсь получить пространства имен, написанные во внешнем css (фактически два отдельных файла). Когда я запускаю файл в своем браузере, он не будет использовать объявленные пространства имен. Я думаю, что этот файл звонит файл CSS, но его не применяя стиль пространства имёнпроблема получения объявленных пространств имен для работы

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<?xml version="1.0" encoding="utf-8"?> 


<html xmlns:act="http://www.superstarmovies.com/actors" 
    xmlns:mov="http://www.superstarmovies.com/movies" 
    xmlns="http://www.w3.org/1999/xhtml" > 

<head> 
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> 
<title>Superstar Movies: Stars of the Month</title> 
<link rel="stylesheet" href="movies.css" type="text/css" ?> 
<link rel="stylesheet" href="actors.css" type="text/css" ?> 
<link rel="stylesheet" href="superstar.css" type="text/css" /> 
</head> 

<body> 
<div id="heading"><img src="logo.gif" alt="Superstar Movies" /></div> 

<div id="main"> 
<h1>Stars of the Month</h1> 
<h3>Movies by Our Featured Stars!</h3> 
<act:actors> 

    <act:actor> 
     <act:name>Halle Berry</act:name> 
    <act:date>August 14, 1966</act:date> 
    <act:birthplace>Cleveland, Ohio</act:birthplace> 
      <mov:movie genre="action" star="Halle Berry"> 
     <mov:name>Catwoman</mov:name> 
    <mov:date>(2004)</mov:date> 
    <mov:length>104 minutes</mov:length> 
    </mov:movie> 

    <mov:movie genre="horror" star="Halle Berry"> 
     <mov:name>Gothika</mov:name> 
    <mov:date>(2003)</mov:date> 
    <mov:length>98 minutes</mov:length> 
    </mov:movie> 

    <mov:movie genre="drama" star="Halle Berry"> 
     <mov:name>Monster&apos;s Ball</mov:name> 
    <mov:date>(2001)</mov:date> 
    <mov:length>111 minutes</mov:length> 
    </mov:movie> 

    <mov:movie genre="fantasy" star="Halle Berry"> 
     <mov:name>X-Men</mov:name> 
    <mov:date>(2000)</mov:date> 
    <mov:length>104 minutes</mov:length> 
    </mov:movie> 

    <mov:movie genre="romance" star="Halle Berry"> 
     <mov:name>Jungle Fever</mov:name> 
    <mov:date>(1991)</mov:date> 
    <mov:length>132 minutes</mov:length> 
    </mov:movie> 
    </act:actor> 

    <act:actor> 
    <act:name>Tom Hanks</act:name> 
    <act:date>July 9, 1956</act:date> 
    <act:birthplace>Concord, California</act:birthplace> 

<mov:movie genre="drama" star="Tom Hanks"> 
    <mov:name>Catch Me If You Can</mov:name> 
<mov:date>(2002)</mov:date> 
<mov:length>141 minutes</mov:length> 
</mov:movie> 

<mov:movie genre="adventure" star="Tom Hanks"> 
    <mov:name>Cast Away</mov:name> 
<mov:date>(2000)</mov:date> 
<mov:length>143 minutes</mov:length> 
</mov:movie> 

<mov:movie genre="action" star="Tom Hanks"> 
    <mov:name>Saving Private Ryan</mov:name> 
<mov:date>(1998)</mov:date> 
<mov:length>170 minutes</mov:length> 
</mov:movie> 

<mov:movie genre="adventure" star="Tom Hanks"> 
    <mov:name>Apollo 13</mov:name> 
<mov:date>(1995)</mov:date> 
<mov:length>140 minutes</mov:length> 
</mov:movie> 

<mov:movie genre="comedy" star="Tom Hanks"> 
    <mov:name>Forrest Gump</mov:name> 
<mov:date>(1994)</mov:date> 
<mov:length>142 minutes</mov:length> 
</mov:movie> 

<mov:movie genre="drama" star="Tom Hanks"> 
    <mov:name>Philadelphia</mov:name> 
<mov:date>(1993)</mov:date> 
<mov:length>125 minutes</mov:length> 
</mov:movie> 

<mov:movie genre="comedy" star="Tom Hanks"> 
    <mov:name>Big</mov:name> 
<mov:date>(1988)</mov:date> 
<mov:length>104 minutes</mov:length> 
</mov:movie> 
    </act:actor> 

</act:actors> 
</div> 

<address> 
Superstar Movies &#183; 123 Moviestar Lane &#183; Hollywood, FL 12345 
</address> 

</body> 

</html> 

CSS

@namespace act "http://www.superstarmovies.com/actors"; 

act|actor  {display: block; font-family: Arial, Helvetica, sans-serif; 
      margin-bottom: 20pt} 

act|name, act|date {display: block} 

act|name   {font-size: 14pt; color: DarkRed; font-style: bold} 

act|date, act|birthplace {display: inline; font-style: italic; color: DarkRed} 

act|birthplace   {padding-left: 0.5em} 

@namespace mov "http://www.superstarmovies.com/movies"; 

mov|movie  {display:block; font-family: Arial, Helvetica, sans-serif} 

mov|name, mov|date, mov|length {display: inline} 

mov|name   {font-style: bold; color:#003;} 

mov|length  {font-style: italics; padding-left: 0.5em} 

Мысли?

ответ

5

В вашем XHTML:

  1. Ваша разметка не очень хорошо образован:

    • Ваше объявление XML должен прийти первым, то ваш DOCTYPE объявление:

      <?xml version="1.0" encoding="utf-8"?> 
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
      
    • Некоторые из ваших тегов <link /> не закрыты должным образом, они должны быть:

      <link rel="stylesheet" href="movies.css" type="text/css" /> 
      <link rel="stylesheet" href="actors.css" type="text/css" /> 
      
  2. Ваша страница должна быть подана как application/xhtml+xml сервером. Типичные серверы не знают, что вы используете XHTML, поэтому вместо этого они отправляют их как text/html. Браузеры не смогут обрабатывать файлы text/html как XML, поэтому они не будут применять CSS к вашим пользовательским XML-элементам.

    Если вы работаете с PHP, это просто вопрос, добавив это в самом начале файла XHTML:

    <?php header('Content-Type: application/xhtml+xml'); ?> 
    

    Или в ASP, добавьте это:

    <% Response.ContentType = "application/xhtml+xml"; %> 
    

    Вы должны также имеют сопроводительный метатег, но не обязательно, чтобы ваша страница проверялась, и браузеры все равно игнорируют его:

    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> 
    

    Вы можете найти короткий урок истории на UA, рассматривающий XHTML в качестве суффикса HTML-тегов в this answer, чтобы лучше понять это.

В вашем CSS:

  1. Это font-weight: bold, не font-style: bold.

  2. Это font-style: italic, а не font-style: italics.

  3. Убедитесь, что ваши инструкции @namespace размещены в начале ваших таблиц стилей.Из spec:

    @namespace Любые правила должны соблюдать все правила @charset и @import и предшествовать всем другим, не игнорировали на-правил и наборов правил в таблице стилей.


Но со всем, что сказал, почему вы не размещая своих актеров и фильмов в свои собственные файлы XML, а затем превращая их с помощью XSLT в знакомую, фактический XHTML?

+0

Если, конечно, вы просто делаете это как упражнение, и в этом случае не так много нужно сказать, помимо выделения ошибок в вашем коде. – BoltClock

+0

Хорошо, я делаю все изменения в файле HTML, и, как я думаю, это то, о чем вы говорили на шаге 4. Я не уверен, почему его просто не читал .css вообще. Да, это для задания, и я не использую php для этого. Я думаю, что это что-то глупое и основное, что мне не хватает. Я отредактировал исходный html-файл, чтобы отразить изменения – Overcranked

+2

@Overcranked: Точка о 'application/xhtml + xml' является самой важной. Если вы не используете свой XHTML с правильным типом контента, ваши пользовательские элементы обрабатываются неправильно, и ваш CSS просто не может применяться. Используете ли вы какую-либо серверную технологию для своего задания? ASP.NET, возможно? – BoltClock