Xml XSL。如何仅显示一次节点
这是由下面的XSL+XML+CSS代码构建的HTML输出的结果,到目前为止,我一直在努力实现:Xml XSL。如何仅显示一次节点,xml,xslt,Xml,Xslt,这是由下面的XSL+XML+CSS代码构建的HTML输出的结果,到目前为止,我一直在努力实现: GoPro 3 Black | | GoPro 3 Silver | ----------------------------------------------------------------------------- | Video resolution | 4K | Video resolution | 4K
GoPro 3 Black | | GoPro 3 Silver |
-----------------------------------------------------------------------------
| Video resolution | 4K | Video resolution | 4K |
| | 30, 25, 24 | | 15, 12.5 |
| | Ultra wide | | Ultra wide |
| | ... | | ... |
| | | | |
| Video format | H.264 | Video format | H.264 |
| | ... | | ... |
| | | | |
第一列和第三列来自以下XML标记这是您可以在下面找到的完整XML代码的一部分:
<section>
<name>Video resolution</name>
<row>
<value></value>
</row>
</section>
<section>
<name>Video format</name>
<row>
<value></value>
</row>
</section>
如果我完全理解您试图实现的目标,那么一个非常简单的修复方法就是限制仅显示第一项的节名称 原始代码中的此部分显示名称:
<div class="column caption">
<strong><xsl:value-of select="name"/></strong>
</div>
添加一个if元素:
<xsl:if test="not(parent::item/preceding-sibling::item)">
<div class="column caption">
<strong><xsl:value-of select="name"/></strong>
</div>
</xsl:if>
和section/name将不再显示,而是显示输出中的第一个项目,即第一列。
还有其他的解决方案,你可以重新设计你的匹配流,但这一个很快,并没有那么脏
注意:只有在每个项目的章节名称和顺序相同的情况下,这才有效。您能保证每个项目都有相同的章节,名称和顺序都相同,或者某些项目可能缺少某些章节吗?是的,每个“项目”都有相同的“章节”。“名称”将紧跟在“节”之后。唯一肯定会更改的标记是“行”和内部“值”的数量。
body {
padding: 0px;
margin: 0px;
}
.item {
float: left;
}
.column {
float: left;
padding-bottom: 1000px;
margin-bottom: -1000px;
}
.caption {
width: 160px;
}
.values {
width: 200px;
}
.container {
overflow: hidden;
}
.clearfix:after {
content: "";
display: table;
clear: both;
}
<div class="column caption">
<strong><xsl:value-of select="name"/></strong>
</div>
<xsl:if test="not(parent::item/preceding-sibling::item)">
<div class="column caption">
<strong><xsl:value-of select="name"/></strong>
</div>
</xsl:if>