Глава 6 Преобразование в XML, HTML, XHTML, RTF. Xml в html


html - Вставить XML в HTML (совместимый с Firefox)

У меня есть XML файл (динамически созданный) и таблица стилей XSL; если я открою XML файл в Firefox, я получу хорошую таблицу вывода.

Однако я хочу отобразить эти данные на странице HTML. Я пробовал использовать:

HTML файл:

<html> <body> <xml src="test_data.xml"> </xml> </body> </html>

Но я не могу ничего сделать. И мой XML файл, и мой XSL файл находятся в одном каталоге.

Я попытался удалить <html> и <body> из моего XSL-вывода, но не получаю никаких результатов.

В сети я читал, что некоторые методы отличаются для IE и Firefox; как я могу отобразить XML файл на странице HTML в Firefox?

XML файл (test_data.xml):

<?xml-stylesheet type="text/xsl" href="report_proteins.xsl"?> <group_list> <protein_group> <protein name="A_1" /> <protein name="A_2" /> </protein_group> <protein_group> <protein name="B_1" /> </protein_group> <protein_group> <protein name="C_1" /> <protein name="C_2" /> <protein name="C_3" /> </protein_group> </group_list>

Файл XSL (report_proteins.xsl):

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h3>MAP proteins</h3> <table border="0"> <tr> <th bgcolor="#E7FFCC">Group number</th> <th bgcolor="#D2FBFF">Proteins</th> </tr> <xsl:for-each select="group_list/protein_group"> <tr> <td> <xsl:number /> </td> <td> <xsl:for-each select="protein"> <xsl:value-of select="@name"/><xsl:text>&#160;</xsl:text> </xsl:for-each> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> задан user 19 окт. '11 в 7:21 источник поделиться

qaru.site

html - Преобразование XML в HTML (в отличие от xhtml)

Я хочу преобразовать некоторый xml в HTML, который имеет следующий формат:

<TR> <TD> col1 <TD> col2 <TD> col3 </TR>

Примечание: Вывод HTML, в комплекте с необязательными закрывающими тегами, опущенными. Это проблема и причина, по которой этот вопрос существует.

Фрагмент XSL, который я использую, это:

<?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output doctype-system='http://www.w3.org/TR/html4/strict.dtd' doctype-public='-//W3C//DTD HTML 4.01//EN' indent='yes' method='html' /> ... <xsl:for-each select="/"> <TR><TD><xsl:value-of select="col1"/><TD><xsl:value-of select="col2"/><TD><xsl:value-of select="col3"/></TR> </xsl:for-each>

Вы можете видеть, что кишки XSL соответствуют моему желаемому HTML (завернутый для удобства чтения):

<TR> <TD><xsl:value-of select="Column1"/> <TD><xsl:value-of select="Column2"/> <TD><xsl:value-of select="Column3"/> </TR>

Примечание: Те из вас, кто знает ошибку, которую я получаю от XSLT: надеюсь, уже знают ответ.

Когда представлен мой XSL (который, не забывайте, является формой xml), я получаю неверную ошибку:

Конечный тег "TR" не соответствует начальному тегу "TD".

Это имеет смысл. Действительно:

<TD><xsl:value-of select="Column3"/> </TR>

i не закрывает элемент TD перед закрытием TR. Итак, вопрос:

Как преобразовать xml в HTML, учитывая, что HTML не xml?

См. также

Обновить один

Было предложено , что в любом случае можно просто включить закрывающие теги, чтобы сделать проверку подлинности XSL (показано, чтение):

<TR> <TD><xsl:value-of select="col1"/></TD> <TD><xsl:value-of select="col2"/></TD> <TD><xsl:value-of select="col3"/></TD> </TR>

то, используя xsl:output method='html', окончательное содержимое HTML будет иметь теги </TD>, магически опущенные. Кроме того, что это не работает:

<TR><TD>col1</TD><TD>col2</TD><TD>col3</TD></TR>

Обновить два

Было высказано предположение, что я сдаюсь, не утруждай себя вопросом, и просто добавьте необязательные закрывающие теги. Это возможно, но это не мой вопрос. Кроме того, "решение" не работает для элементов, где закрывающий тег запрещен, например:

<BR/>

или

<BR></BR>

Как бы я включил элемент <BR> в свой вывод HTML, учитывая, что в HTML запрещено, чтобы закрыть элемент <BR>.

qaru.site

HTML » XHTML » XML

Основное различие между HTML и XHTML состоит в том, что в XHTML применяется синтаксис XML, который предназначен для помощи в разработке синтаксически корректных и правильных документов XML. XHTML представляет собой словарь XML, в то время как HTML — это лишь предшествующий XHTML язык разметки.

В связи с тем, что XHTML является приложением XML, некоторые действия. которые совершенно правильны в HTML4 на базе SGML, должны быть изменены. Перечислим правила, которые необходимо соблюдать при переходе от HTML к XHTML:

1. Документы должны быть правильно сформированы.

Это означает, что все элементы обязаны иметь закрывающий тег(например, <p></p>) или быть написаны в специальной форме(например, <br />), а также должна соблюдаться корректная вложенность элементов.

Хотя перекрывание элементов не допускалось и в SGML, некоторые браузеры лояльно к этому относились и в большинстве случаев отображали именно то, что хотел показать автор документа.

ПРАВИЛЬНО: вложенные элементы<p>выделяем это <em>слово.</em></p>

НЕПРАВИЛЬНО: элементы перекрываются<p>выделяем это <em>слово.</p></em>

2. Имена элементов и атрибутов должны быть в нижнем регистре.

Документы XHTML должны использовать нижний регистр для всех имен элементов и атрибутов HTML. Это необходимо, поскольку XML чувствителен к регистру, например, <ul> и <UL> это различные теги.

3. Правила написания значений атрибутов.

Все значения атрибутов, даже цифровые должны быть заключены в двойные("") или одинарные('') кавычки.

ПРАВИЛЬНО: атрибут в кавычках<td colspan="8">

НЕПРАВИЛЬНО: атрибут не в кавычках<td colspan=8>

Если значение атрибута содержит амперсанд, он должен выражаться мнемоникой ("&amp;"). Например, если атрибут href элемента <a> ссылается на скрипт CGI, который принимает параметры, он (атрибут) должен быть выражен так:

http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=userа не так:http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.Предопределенные значения атрибутов (например атрибут type элемента input) регистрозависимы и должны быть написаны в нижнем регистре. Однако, это не касается значений атрибутов определяемых авторами документов (например значения для атрибутов id, name или class), которые также регистрозависимы, но допускают использование символов в верхнем регистре.

Следует учесть, что ведущие и ведомые пробелы в значениях атрибутов удаляются браузерами, а один или несколько последовательных пробелов между словами (а также переводы строк) преобразуются в одиночный межсловный пробел (символ пробела ASCII в западных языках).

XML не поддерживает минимизацию атрибутов. Пары атрибут/значение обязательно должны быть выписаны полностью. Имена атрибутов, такие как compact и checked, не могут появляться в элементах без определенных значений.

ПРАВИЛЬНО: атрибут написан полностью<dl compact="compact">

НЕПРАВИЛЬНО: атрибут минимизирован<dl compact>

4. Для непустых элементов необходимы конечные теги.

В HTML4 на базе SGML, некоторые элементы допускали отсутствие конечного тега при наличии других последующих элементов с закрывающими тегами. Такое отсутствие конечных тегов не допускается в XHTML на базе XML. Все элементы, за исключением тех, которые объявлены в определении типа документа как EMPTY, должны иметь конечный тег.

ПРАВИЛЬНО: закрытые элементы<p>Здесь какой-то текст.</p><p>Еще параграф с текстом.</p>

НЕПРАВИЛЬНО: незакрытые элементы<p>Здесь какой-то текст.<p>Еще параграф с текстом.

5. Пустые элементы

Пустые элементы обязаны иметь конечный тег, или стартовый тег обязан заканчиваться />. Например, <br /> или <br></br>.

Для совместимости с устаревшими браузерами следует писать пробел перед /> в одиночном пустом элементе.

Следует использовать минимизированный синтаксис для тегов пустых элементов, например, <br /> так как альтернативный синтаксис <br></br>, допускаемый XML, дает непредсказуемые результаты во многих существующих браузерах.

При создании пустого объекта элемента, чья модель содержимого не EMPTY(например, пустой заголовок или параграф), не следует использовать минимизированную форму(т.е. нужно использовать <p> </p>, а не <p />).

ПРАВИЛЬНО: пустые теги закрыты<br /><hr />

НЕПРАВИЛЬНО: пустые теги не закрыты<br><hr>

6. Элементы <script> и <style>.

В XHTML элементы <script> и <style> объявлены как имеющие содержимое #PCDATA. Как результат этого, < и & будут рассматриваться как начало разметки, а мнемоники, такие как &amВот образец минимального документа XHTML:p;lt; и &amp;, будут считаться процессором XML мнемониками символов < и & соответственно. Перенос содержимого элементов <script> или <style> в раздел, помеченный CDATA, позволит избежать расшифровки этих мнемоник.

<script type="text/javascript">//<![CDATA[... unescaped script content ...//]]></script>Разделы CDATA распознаются процессором XML и являются узлами в объектной модели документа(Document Object Model)

Альтернативой может быть использование внешних документов скриптов и стилей.

7. Исключения SGML.

SGML предоставлял создателям определений типа документа возможность исключать некоторые элементы как содержимое элемента. Такие запрещения (называемые "исключения") невозможны в XML.

Например, Строгое определение типа документа HTML4(Strict DTD) запрещает вложение элемента <a> в другой элемент <a> на любую глубину. Хотя эти запрещения и могут отсутствовать в определении типа документа, определенные элементы не могут вкладываться.

В XHTML:<a> не может содержать другие элементы <a>.<pre> не может содержать элементы <img>, <object>, <big>, <small>, <sub> или <sup>.<button> не может содержать элементы <input>, <select>, <textarea>, <label>, <button>, <form>, <fieldset>, <iframe> или <isindex>.<label> не может содержать другие элементы <label>.<form> не может содержать другие элементы <form>.

8. Элементы с атрибутами "id" и "name"

HTML 4 определил атрибут name для элементов a, applet, form, frame, iframe, img и map, а также ввёл атрибут id. Оба эти атрибута созданы для использования в качестве идентификаторов фрагмента.

В XML идентификаторы фрагмента имеют тип ID, и в элементе может быть только один атрибут типа ID. Таким образом, в XHTML 1.0 атрибут id определён как атрибут типа ID. Чтобы быть уверенным, что документы XHTML 1.0 являются правильно структурированными документами XML, документы XHTML 1.0 обязаны использовать атрибут id для определения идентификаторов фрагмента, и даже в тех элементах, которые исторически имели атрибут name.

Также следует помнить, что значение атрибута id в пределах документа должно быть уникальным.

В XHTML 1.1 для элементов a и map атрибут name удален, вместо него следует использовать атрибут id.

9. Двойные тире в комментариях

В комментариях двойные тире "--" могут обозначать только начало и конец комментария.

НЕПРАВИЛЬНО:<!-- использовать разделитель, написанный ниже -- нельзя и этот комментарий -- неверен --><!--------------------------------->

ПРАВИЛЬНО:<!-- использовать разделитель, написанный ниже - - можно и этот комментарий - - верен --><!--==== - - - - ====-->

Таким образом, двойные тире "--" не обозначающие начало и конец комментария в его тексте должны быть чем-либо заменены или разделены пробелом, например "- -".

10. Символы < и & в тексте документа

Символы < и & в тексте документа должны быть заменены соответствующими последовательностями &lt; и &amp;.

Нет необходимости, но желательно заменять также и > на &gt;.

11. Вот образец минимального документа XHTML:

<?xml version="1.0" encoding="windows-1251"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head><title>XHTML</title></head><body><p>Подробности о разметке на сайте W3C: <a href="http://w3c.org/MarkUp/"> http://w3c.org/MarkUp/ </a></p></body></html>

Корневым элементом документа должен (обязан) быть <html>.

Корневой элемент документа обязан обозначить пространство имён XHTML путём использования атрибута xmlns[XMLNAMES]. Пространство имён XHTML определено в http://www.w3.org/1999/xhtml.

В документе обязано присутствовать объявление DOCTYPE, предшествующее корневому элементу(<html>).

Публичный идентификатор, включённый в объявление DOCTYPE, обязан быть ссылкой на одно из определений типа документа. 

Взято с www.xhtml.ru

www.my-article.net

Глава 6 Преобразование в XML, HTML, XHTML, RTF. XSLT

Предположим, web-узел вашей компании использует основанное на XML программное обеспечение фирмы Commerce One, в котором для безопасной коммуникации через Интернет применяется Java Message Service (JMS). Ваша деятельность была настолько успешной, что вы только что поглотили своего конкурента. К сожалению, для своего узла в Интернете ваш бывший конкурент использует другой основанный на XML продукт, RosettaNet. Как вам теперь преобразовать заказ на покупку xCBL Commerce One, написанный на XML, в заказ на покупку RosettaNet, также написанный на XML, но совершенно на другом диалекте?

Разумеется, применить XSLT. Такого рода XML-XML преобразования становятся все более и более распространенными. Все больше компаний применяют JMS для безопасных коммуникаций через Интернет, и поскольку JMS выполняется в Java, будет разумным связать JMS с основанными на Java процессорами XSLT, такими, как Xalan или Saxon.

В этой книге мы уже рассматривали преобразование XML в HTML, XML и простой текст, но в текущей главе сделаем это более подробно. Мы также рассмотрим здесь новый тип преобразования — из XML в JavaScript. В главе 10 мы познакомимся с преобразованиями из XML в базу данных на основе SQL, а в главе 11 — с преобразованиями из XML в XSL-FO.

Основная задача XSLT состоит не просто в замене одного элемента на другой, но в полной реорганизации содержимого XML-документа. Например, вам может потребоваться реорганизовать planets.xml в терминах плотности планет при помощи XSLT для создания нового XML-документа:

<?xml version="1.0" encoding="UTF-8"?>

<DATA>

 <DENSITY>

  <VALUE>.983</VALUE>

  <NAME>Mercury</NAME>

  <MASS>.0553</MASS>

  <DAY>58.65</DAY>

  <RADIUS>1516</RADIUS>

 </DENSITY>

 <DENSITY>

  <VALUE>.943</VALUE>

  <NAME>Venus</NAME>

  <MASS>.815</MASS>

  <DAY>116.75</DAY>

  <RADIUS>3716</RADIUS>

 </DENSITY>

 <DENSITY>

  <VALUE>1</VALUE>

  <NAME>Earth</NAME>

  <MASS>1</MASS>

  <DAY>1</DAY>

  <RADIUS>2107</RADIUS>

 </DENSITY>

</DATA>

Мы рассмотрим преобразование, которое полностью меняет содержимое planets.xml, оставляя только небольшой код HTML и код JavaScript для отображения нескольких кнопок в браузере.

До сих пор мы создавали новые элементы только при помощи элементов буквального результата, то есть рассматривая новые элементы как текст и встраивая их в таблицу стилей. Но, как мы увидим в этой главе, не всегда возможно знать имена создаваемых новых элементов. Можно состыковать вместе создаваемые элементы по ходу дела, рассматривая их как сырой текст, но это явная недоработка, поскольку разметка трактуется как текст. В этой главе мы начнем применять элементы XSLT <xsl:element>, <xsl:attribute>, <xsl:processing-instruction> и <xsl:comment> для создания новых элементов, атрибутов, инструкций обработки и комментариев на этапе выполнения. Хорошее знание этих элементов необходимо при реорганизации содержимого XML.

Мы также рассмотрим использование режимов XSLT для осуществления нескольких преобразований с документом и сориентируемся, как применять только один из нескольких подходящих шаблонов.

В большей части этой главы исследуются возможности элемента <xsl:output>, с краткого обзора которого я и начну.

Поделитесь на страничке

Следующая глава >

it.wikireading.ru

Построчный вывод из XML в HTML?

Стоит задача, есть xml документ из него нужно взять данные и вывести в html документ, то есть сделать сцепку. Но почему-то у меня из xml документа данные не подтягиваются в hmtl, подскажите, пожалуйста, где допущена ошибка?

<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/css" href="lab1.css"?> <!-- lab1.xml --> <file_1> <bookstore xmlns:xlink="http://www.w3.org/1999/xlink"> <table> <tr> <book data-title="Рассматриваются теория и практика речевой деятельности. Представлены ее биологический, социальный, культурно-исторический и лингвистический аспекты. Подробно освещаются исполнительные механизмы коммуникативной системы человека: порождение и восприятие устных и письменных сообщений"> <th><author>Абелева И.Ю.</author> <name>Речь о речи. Коммуникативная система человека.</name> <publish>— М.: Логос,</publish> <year>2004.</year> <str>- 304 с.</str></th> </book> </tr> </table> </bookstore> </file_1>

Документа Html:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <xml src="lab1.xml"></xml> <h3>Список книг</h3> <table datasrc="#dsoBook" border="6" cellpadding="5"> <thead> <th>Автор</th> <th>Названия</th> <th>Издательство</th> <th>Год издания</th> <th>Страниц</th> </thead> <tr align="center"> <td><span DATAFLD="author"></span></td> <td><span DATAFLD="name"></span></td> <td><span DATAFLD="publish"></span></td> <td><span DATAFLD="year"></span></td> <td><span DATAFLD="str"></span></td></tr> </table> </body> </html>

ru.stackoverflow.com

XML для начинающих // Вебшкола онлайн



XML был создан для описания данных с прицелом на то, что представляют собой данные.

HTML был создан для отображения данных с прицелом на то, как выглядят отображаемые данные.

Что такое XML?

  • XML расшифровывается как Расширяемый язык разметки (EXtensible Markup Language)
  • XML — это язык разметки, похожий на HTML
  • XML был создан для описания данных
  • Теги XML не предопределены. Вы можете использовать свои теги
  • XML использует Определение Типа Документа (Document Type Definition — DTD) или схему XML (XML Schema) для описания данных
  • XML рекомендован W3С

Главное различие между XML и HTML

XML был разработан для передачи данных.

XML не является заменой HTML.

XML и HTML были разработаны с различными целями:

  • XML был создан для описания данных и основное внимание уделяется тому, какие данные передаются
  • HTML был разработан для отображения данных основное внимание уделяются отображению данных
  • Таким образом, HTML больше связан с отображением информации, в то время как XML — описанием информации.

XML ничего не делает

XML не был создан для выполнения каких-либо действий.

Может быть это будет непросто понять, но XML не выполняет никаких действий. Этот язык разметки был создан для структурирования, хранения и передачи информации. Следующий пример является запиской от Антона Ире, представленной в XML:

<note>

<to>Ira</to>

<from>Anton</from>

<heading>Напоминание</heading>

<body>Не забудь о встрече на этой неделе!</body>

</note>

Как видите, язык XML очень лаконичен.

Записка (<note>) состоит из заголовка (<heading>) и содержимого (<body>) письма. В ней указаны отправитель (тег <from> — «от кого письмо») и получатель (тег <to> — «кому»). Но это письмо ничего не делает. Это чистая информация, завернутая в теги. Для того, чтобы отправить, получить и отобразить эту информацию, кто-то должен написать программу.

XML — свободный расширяемый язык разметки

Теги XML не предопределены. Вы можете вводить свои теги.

Теги и структура документа в HTML заданы заранее. Создатель html-документа может только использовать теги, определенные стандартами.

XML позвволяет вводить свои теги и структуру документа автору xml-документа. Теги, приведенные в примере (например, <to> и <from>) не определены стандартом XML. Эти теги введены автором документа.

XML является дополнением HTML

XML — это не замена HTML.

Важно понять, что XML не является заменой HTML. В будущем веб-разработчики будут использовать XML для описания данных, в то время как, HTML будет использоваться для форматирования и отображения этих данных.

Мое лучшее определение XML таково: XML — это кроссплатформенный, не зависящий от программного и аппаратного обеспечения инструмент передачи информации.

Заметка: Кроссплатформенный — пригодный для любой операционной системы и любого аппаратного обеспечения.

Если вы знаете, существуют различные операционные системы, кроме знакомой нам Windows. Это ОС Linux, Mac и другие.

Насчет аппаратного обеспечения можно сказать следующее: это могут быть обычные ПК, ноутбуки, карманные компьютеры и т.д.

XML в будущей веб-разработке

XML будет использоваться везде.

Мы являемся свидетелями разработки XML с момента его создания. Было удивительно видеть, как быстро XML стандарт был разработан и как быстро большое количество поставщиков программного обеспечения приняли этот стандарт. Мы твердо убеждены в том, что XML будет столь же важной составляющей будущего Интернет, как HTML, который является основой интернета, и что XML будет самым распространенным инструментом для всех манипуляций с данными и передачи данных.

 

weblabla.ru

HTML — это не XML / Хабр

Многие считают, что html — это подмножество xml. И, соответственно, пишут код в том же стиле. Но это не так, между этими разметками есть различия. Есть некоторые правила xml, которые неприменимы в html.

Я рассмотрю три основные ошибки тех, кто пытается писать html в стиле xml.

1. Самозакрывающиеся теги

Первая и самая распространенная ошибка. Я много раз видел, как кто-то пытается закрыть html тег с помощью /> Например, <button/> или <br />. Но даже если элемент не имеет содержимого, все равно так писать нельзя. Потому как в отличие от xml в html закрывать теги с помощью /> запрещено. Тег можно закрывать только явно, с помощью </tag>. Это не просто хороший стиль. Браузер воспринимает символ "/" внутри элемента как ошибку и игнорирует его. Элемент просто не закрывается.

Давайте посмотрим, как браузер обрабатывает такие теги. Выполним следующий html:

<div> Красный <div/> Продолжение красного </div> <div>Следующий элемент</div> Все вроде бы нормально, но выглядеть это будет так:

Как видно, браузер не закрыл элемент, завершающийся />. Его нужно было закрывать при помощи явного </div>.

И кстати, даже серьезные компании, бывает, пишут неправильно.

Пример

Яндекс.Метрика пишет свой img тег так: <img src="//mc.yandex.ru/watch/24049213" style=«position:absolute; left:-9999px;» alt="" />

2. Закрытие тегов

Хорошо, теги нужно явно закрывать. Значит, нужно всегда писать <tag></tag>? Нет. Не все так просто. Согласно спецификации в html некоторые теги нужно обязательно закрывать, некоторые необязательно, а некоторые запрещено.

Приведу примеры:

  • Обязательно нужно закрывать div, span, script, table и footer;
  • Такие теги, как option, li, tr, body можно закрывать, а можно и нет. С точки зрения качества кода, конечно, лучше всегда закрывать теги, но стандарт разрешает не делать этого;
  • А вот некоторые теги, такие как input, br, img и hr закрывать запрещено. Если написать <input></input> или<img></img> — то это будет невалидный html. Такие теги нужно оставлять незакрытыми.
Конечно, эти примеры не полные. По каждому отдельному тегу смотрите документацию.

3. Запись булевых атрибутов

Как записывать булевы атрибуты в html (такие как checked и disabled)? Те, кто пишет html в стиле xml, случается, записывают их так: <option selected=«true»></option> Так делать не нужно. В html нет значения «true». Стандарт говорит, что если атрибут заявлен в разметке, то его значение уже true.

Можно выбрать один из трех вариантов записи:

  • <option selected=«selected»></option>
  • <option selected=""></option>
  • <option selected></option>
Я предпочитаю использовать короткий третий вариант, вроде: <input id=«smth» disabled type=«text»>.

P.S. Эти правила относится к html, а не к xhtml. Однако даже если ваша страница оформлена как xhtml, браузер будет разбирать ее как html, если сервер отдает ее с mime-type 'text/html'. Для того, чтобы странице стать действительной xhtml, ее mime-type должен быть 'application/xhtml+xml'. Только тогда браузер будет парсить эту страницу по xml правилам.

habr.com