Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№128-12-2005 12:49:17

CJIECAPb
Участник
 
Группа: Members
Зарегистрирован: 27-12-2005
Сообщений: 3

XSLT преобразование

Имеется файл test.xml:

Выделить код

Код:

<?xml version="1.0" encoding="WINDOWS-1251"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<site>
<form action="test.xml" method="post" name="Main">
<input type="text" value="" name="F1"/>
<input type="text" value="" name="F2"/>
<select>
	<option value="0">A</option>
	<option value="1">B</option>
	<option value="2">C</option>
</select>
<input type="submit" name="GO"/>
</form>
</site>

и соответствующий файл стиля test.xsl:

Выделить код

Код:

<?xml version="1.0" encoding="WINDOWS-1251"?>
<!DOCTYPE local [
<!ENTITY nbsp  "&#xA0;">
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="html" encoding="WINDOWS-1251"/>
<xsl:template match="/">
<html>
<head>
<title>Test</title>
</head> 
<body>
<table border="1">
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="form|option|input/@*|form/@*|select/@*|option/@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="input|select">
<tr>
<td>
Поле
</td>
<td>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>

Данный xml корректно отображается в IE. Xalan преобразует его в следующий html:

Выделить код

Код:

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251">
<title>Test</title>
</head>
<body>
<table border="1">

<form action="test.xml" method="post" name="Main">

<tr>
<td>
Поле
</td><td><input type="text" value="" name="F1"></td>
</tr>

<tr>
<td>
Поле
</td><td><input type="text" value="" name="F2"></td>
</tr>

<tr>
<td>
Поле
</td><td><select>
	<option value="0">A</option>
	<option value="1">B</option>
	<option value="2">C</option>
</select></td>
</tr>

<tr>
<td>
Поле
</td><td><input type="submit" name="GO"></td>
</tr>

</form>

</table>
</body>
</html>

но Firefox ровным счётом ничего не отображает.
Подскажите пожалуйста, в чём проблема. И ещё, есть способ (например использование какого-нибудь расширения) посмотреть результат, который возвращает встроенный в Firefox XSLT прцессор ("Просмотр исходного кода страницы" показывает только исходный xml)?

Отсутствует

 

№228-12-2005 13:16:35

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: XSLT преобразование

CJIECAPb
Вообще-то, в отличие от IE, Gecko имеет нативную поддержку XML и в HTML ничего не преобразует.

Отсутствует

 

№328-12-2005 13:49:13

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
Веб-сайт

Re: XSLT преобразование

Не уверен, но похоже, результат преобразования должен быть правильным xhtml. А у вас получается неправильный т.к. form не может быть вложет в table.

Если вместо таблиц написать div'ы то всё показывается, да и Ctrl-A -> View selection Source тоже показывает результат преобразования.

Отредактировано Lynn (28-12-2005 13:50:33)


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№428-12-2005 14:15:13

CJIECAPb
Участник
 
Группа: Members
Зарегистрирован: 27-12-2005
Сообщений: 3

Re: XSLT преобразование

Огромное спасибо!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]