xml - XSL if else 条件

标签 xml xslt xpath

我有一个要求,我希望有 if else 语句来检查节点是否具有属性或它只有字符串。

例如:1个节点有0 File(s) found另一个具有 <autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='64' filename='AFP_p.tgp' /> 等属性

下面是两个节点的示例

<product>
<autoIncludeUser>0 File(s) found</autoIncludeUser>
<autoIncludeSystem>
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='64' filename='AFP_p.tgp' />
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='3,879' filename='AnalystsExpressionMacros.tgp' />
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='475' filename='base64Converter.tgp' />
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='&lt;DIR&gt;' filename='codePages' />
</autoIncludeSystem>
<autoIncludeStudio>0 File(s) found</autoIncludeStudio>
<externalLibrarySystem>
<externalLibrarySystem_info mdate='08/23/2011' mtime='09:52' ampm='PM' filesize='196,608' filename='AFPtoXML_DP.dll' />
<externalLibrarySystem_info mdate='08/23/2011' mtime='09:52' ampm='PM' filesize='13,259' filename='ASN1toXSDRunner.jar' />
<externalLibrarySystem>
</product>

我如何确定一个节点是否只有字符串或属性,并基于此我可以获得值 Stringattrib values分别。

最佳答案

我们可以通过下面的代码实现if else

<xsl:choose>
    <xsl:when test="something to test">

    </xsl:when>
    <xsl:otherwise>

    </xsl:otherwise>
</xsl:choose>

这就是我所做的

<h3>System</h3>
    <xsl:choose>
        <xsl:when test="autoIncludeSystem/autoincludesystem_info/@mdate"> <!-- if attribute exists-->
            <p>
                <dd><table border="1">
                    <tbody>
                        <tr>
                            <th>File Name</th>
                            <th>File Size</th>
                            <th>Date</th>
                            <th>Time</th>
                            <th>AM/PM</th>
                        </tr>
                        <xsl:for-each select="autoIncludeSystem/autoincludesystem_info">
                            <tr>
                                <td valign="top" ><xsl:value-of select="@filename"/></td>
                                <td valign="top" ><xsl:value-of select="@filesize"/></td>
                                <td valign="top" ><xsl:value-of select="@mdate"/></td>
                                <td valign="top" ><xsl:value-of select="@mtime"/></td>
                                <td valign="top" ><xsl:value-of select="@ampm"/></td>
                            </tr>
                        </xsl:for-each>
                    </tbody>
                </table>
                </dd>
            </p>
        </xsl:when>
        <xsl:otherwise> <!-- if attribute does not exists -->
            <dd><pre>
                <xsl:value-of select="autoIncludeSystem"/><br/>
            </pre></dd> <br/>
        </xsl:otherwise>
    </xsl:choose>

我的输出

enter image description here

关于xml - XSL if else 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7239308/

相关文章:

xml - XStream 同时解析属性和值

c# - XmlSerializer - 反射(reflect)类型时出错

firefox - 如何使用 XSL 在 Mozilla 中显示。

c# - 在 XML 中写出元音变音字符?

python - 如何从 Flipkart 评论页面获取正确的选择器以进行网页抓取?

python - 正则表达式,re.compile,返回None而不是匹配

java - getNodeName、getLocalName 未返回预期值

xml - 是否可以使用 XSLT 检测 (xml) 标记的存在?

xml - 使用 shell 脚本(centos 环境)从 postgresql artifacoty 获取最新版本的 postgresql 版本

vb.net - 带有 HTML Agility 包的 VB.NET 中的 XPath