Встраивание таблицы стилей XSL в XML - PullRequest
3 голосов
/ 19 марта 2012

У меня есть следующий XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://www.fakedomain.com/sally.xsl"?>

И следующее содержимое в sally.xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<xsl:for-each select="documentcollection/document">
<p>
<xsl:for-each select="rss/channel/item">
<xsl:value-of select="title"/><br />
<xsl:value-of select="description"/><br />
<xsl:value-of select="link"/><br />
</xsl:for-each>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Однако браузер отображает XML, как будто строка XSL не являетсяподарок.Знаете ли вы, почему браузер игнорирует таблицу стилей XSL?Таблица стилей не так?

Спасибо

Ответы [ 4 ]

2 голосов
/ 19 марта 2012

У меня есть следующий XML:

<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="http://www.fakedomain.com/sally.xsl"?>

Это не правильно сформированный XML-документ (без верхнего элемента), поэтому он не слишком удивителенбраузер не рассматривает это как таковое.

Решение :

Обновите ваш "XML" до действительно правильно оформленного XML-документа, например:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="file:///c:/temp/delete/xxx.xsl"?>
<t/>

Сэта таблица стилей в c:\temp\delete\xxx.xsl:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
     XXX
 </xsl:template>
</xsl:stylesheet>

, когда файл XML открывается с помощью IE, браузер отображает результат преобразования :

XXX

0 голосов
/ 19 марта 2012

xsl:for-each петля select="rss/channel/item" не закрыта.

0 голосов
/ 19 марта 2012

Это может быть та же политика происхождения ограничения безопасности. Если ваши XML и XSLT размещены не в одном месте, браузер может отказаться получать XSLT и применять его к вашему XML-файлу.

0 голосов
/ 19 марта 2012

Похоже, вы не закрыли один из своих тегов для каждого?

...