我在 Opera 将我的p
标签拆分到不应该的地方时遇到问题。
这是示例 XML:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="temp.xsl"?>
<data>
<item name="car">
<summary>It goes by land.</summary>
</item>
<item name="plane">
<summary>It simply flies.</summary>
</item>
</data>
这是 XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/data">
<html>
<link rel="stylesheet" type="text/css" href="temp.css"/>
<body>
<xsl:for-each select="item">
<h1><xsl:value-of select="@name"/></h1>
<xsl:if test="count(summary)>0">
<p class="summary"><xsl:copy-of select="summary" /></p>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
和CSS:
body {
font-size:14px; text-align:center; width:400px; margin:0 auto; font-family:Verdana;
}
h1 {
color: #231F20; font-size: 1.2em;
}
.summary {
text-align: justify; padding: 1em; background-color: #F0F4F8;
border-left: 1px solid #BBB; border-right: 1px solid #BBB;
}
当我在 IE9 中运行它时,它看起来像这样:
IE9 不尊重正文的宽度,但这并不重要,XSLT 正确地转换了数据。summary
xml 标签放在标签之间,p
带有class="summary"
.
但是当我在 Opera 12 中运行它时,我得到了这个:
正如你所看到的,宽度是被尊重的,但是p
标签被分成了两部分,summary
标签插入在中间。这可以在 Opera 的检查器中看到:
我需要使用,copy-of
而不是value-of
,因为我希望<summary>
标签包含html
标签,如b
,i
或span
。
为什么 Opera 将p
标签分成两个空标签并在它们之间插入summary
?以及如何避免这种情况,使我能够将标签的内容放在summary
标签内p
?