2016-03-02 3 views
1

XSL ОбразецXSL к XHTML Strict с DOCTYPE - META вопрос проверки тегов

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0" 
    > 
    <xsl:output method="html"/> 
    <xsl:template match="/Report"> 
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
      <head> 

Проблема: мне нужно определить РОУ TYPE

<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"DTD/xhtml1-strict.dtd"> 

в XSL, но это не позволяя мне положить его туда, говорит неверная таблица стилей.

Я пробовал:

<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;DTD/xhtml1-strict.dtd&quot;&gt;</xsl:text> 

, но это правильный способ сделать это? Интернет-валидаторы даже не видят, что строка, которая при визуализации html должна быть действительной.

  1. Каков правильный способ добавления DOCTYPE?
  2. должен ли мой xmlns:xsl="http://www.w3.org/1999/XSL/Transform" еще преобразовать там или?

У меня есть файл данных XML с таблицей стилей XSL, которую я преобразовываю в html. Я хочу добавить выше, чтобы сделать его XHTML Strict Compliant. Любой совет будет принят во внимание. Спасибо!

Ожидаемый результат

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <title> Strict DTD XHTML Example </title> 
    </head> 
    <body> 
     <p> 
Please Choose a Day: 
      <br /> 
      <br /> 
      <select name="day"> 
       <option selected="selected">Monday</option> 
       <option>Tuesday</option> 
       <option>Wednesday</option> 
      </select> 
     </p> 
    </body> 
</html> 

Сформирован XHTML

<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>OWASP ZAP Vulnerability Report</title> 
    </head> 
    <body> 
    </body> 
</html> 

Вопросы Использование: https://validator.w3.org/

  • двутавровых ssue, похоже, вызвано тегом META в элементе head, но я не понимаю, почему.

Итак, как мне остановить мой XSL от добавления тега META?

РЕШЕНИЕ

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0" 
    > 
    <xsl:output method="xml" encoding="UTF-8" indent="yes" /> 
    <xsl:template match="/Report"> 
<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt; 
</xsl:text> 
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
      <head> 

Изменение xsl:output method из HTML в XML. Но вернемся к другому вопросу, есть ли лучший способ объявить DOCTYPE?

ответ

2

Используйте атрибуты xsl:output, https://www.w3.org/TR/xslt#output, то есть doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd", тогда процессор XSLT при сериализации добавляет DOCTYPE.

Смежные вопросы