1

我正在尝试使用 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 表中的简单名称/值对。

我要么一无所获,要么一无所有,包括不需要的元素。

问候,

理查德。

4

1 回答 1

3

这个表达式:

 *[not(service or searchtext or clientreference or ...)]

表示“所有没有名为,等的子元素的子元素” 将其更改为<service><searchtext>

 *[not(self::service or self::searchtext or self::clientreference or ...)]

这意味着“所有命名的子元素<service><searchtext>等。”

于 2013-05-20T17:50:25.230 回答