我正在尝试使用XSLT将XML文档转换为HTML。
该文件是外部的,没有完整记录。为此,我只知道(并因此处理)一些节点。
可以添加新节点。
我想首先确定是否有任何未知的子节点,如果是,则只在HTML表格中显示它们。没什么好看的。
我当前的xslt片段是......
<xsl:if test="*[not(service or searchtext or clientreference or threshold or resultcount or results or options or error)]">
<div class="requestSupportData">
<table class="zebra">
<caption>Request supportive data</caption>
<thead>
<tr>
<th>Element</th>
<th>Value</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="2">
<a href="#top">Top</a>
</th>
</tr>
</tfoot>
<tbody>
<xsl:for-each select="*[not(service or searchtext or clientreference or threshold or resultcount or results or options or error)]">
<tr>
<th>
<xsl:value-of select="local-name(.)"/>
</th>
<td>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</div>
我在这里想要实现的是没有任何节点不称为服务,搜索文本等等,因此,将它们渲染为HTML表格中的简单名称/值对。
我要么一无所获,要么包括不需要的元素。
此致
理查德。
答案 0 :(得分:3)
这个表达式:
*[not(service or searchtext or clientreference or ...)]
表示“所有没有子元素的子元素名为<service>
,<searchtext>
等。”将其更改为
*[not(self::service or self::searchtext or self::clientreference or ...)]
表示“所有未名为<service>
,<searchtext>
等的子元素”。