java - 将 XSL 样式表嵌入 XML

标签 java xml xslt servlets stylesheet

我有以下 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 样式表吗?是不是样式表错了?

谢谢

最佳答案

I have the following 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>

用IE打开XML文件时,浏览器显示转换结果:

XXX

关于java - 将 XSL 样式表嵌入 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763671/

相关文章:

java - 不带 'ln' 的字符串的 System.out.print

Python 元素树 : Parsing a string and getting ElementTree instance

xslt - 检查属性等于值的节点是否存在

xml - 使用 sed 在 xml 中复制一行并保持相同的缩进

xslt - 如何使用 xslt 1.0 删除特定匹配的元素

java - 如何使用 Java 加载转换后的 XML(基于 XSL 样式表)?

java - 单击 jqgrid 上的行显示 jqgrid

java - 如何将整数的四个字节中的每一个单独提取为 8 位值并显示

java - 添加到ArrayList

java - XStream:将部分 XML 保留为 XML