У меня есть формат документа XML, который со временем превратился в нечто большее, чем тонкая оболочка вокруг HTML. Чтобы помочь в редактировании (в конечном счете, с функцией «Предварительный просмотр» Coda), я пытаюсь сделать перевод XSLT.Ошибка на стороне XSLT на стороне клиента
Образец документа:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="x.xsl" type="text/xsl" ?>
<htmldocument>
<title>Document Title</title>
<section>
<sectiontitle>Section Title</sectiontitle>
<div>
<p>First Paragraph</p>
<p><b>Second Paragraph</b></p>
</div>
</section>
</htmldocument>
Мой XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/htmldocument">
<html>
<head>
<style type="text/css">
body
{
font-size: 15px;
font-family: Helvetica;
}
</style>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="//title">
<h1>
<xsl:apply-templates />
</h1>
</xsl:template>
<xsl:template match="/htmldocument/section">
<div>
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template match="/htmldocument/section/div">
<xsl:copy-of select="." />
</xsl:template>
<xsl:template match="/htmldocument/section/sectiontitle">
<h2>
<xsl:apply-templates />
</h2>
</xsl:template>
</xsl:stylesheet>
Если я использую xsltproc для обработки XML в HTML-файл, все работает, как ожидалось:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
body
{
font-size: 15px;
font-family: Helvetica;
}
</style>
</head>
<body>
<h1>Document Title</h1>
<div>
<h2>Section Title</h2>
<div xmlns="">
<p>First Paragraph</p>
<p><b>Second Paragraph</b></p>
</div>
</div>
</body>
</html>
Однако , если я открою файл XML в браузере, хотя преобразование явно происходит, его отображение отображаемого HTML - это la rgely не хватает информации о стиле. В частности, <div>
и <p>
, по-видимому, имеют display:inline
, а элемент <b>
не влияет на вес шрифта.
Я могу добавить дополнительный стиль через элемент <style>
, но я не хочу, чтобы изобретать колесо.
Я что-то упустил, или я просто слишком много ожидаю от визуализации XSLT на стороне клиента?