Xml 到 XSLT:获取属性值等等

Posted

技术标签:

【中文标题】Xml 到 XSLT:获取属性值等等【英文标题】:Xml to XSLT: getting attributes value and so on 【发布时间】:2021-12-20 04:24:36 【问题描述】:

我有这个 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<interface id="RESTInterface">
          .....     
            <abstract_method name="authenticateUser">
                <access>public</access>
                <parameters>
        <argument type="String">account</argument>
        <argument type="String">password</argument> 
                </parameters>
                <throws>
                    <exception>RemoteException</exception>
                    <exception>SecurityException</exception>
                </throws>
                <return>boolean</return>
            </abstract_method>
            <abstract_method name="verifyUser">
                <access>public</access>
                <parameters>
                    <argument type="aURL">link</argument>
                </parameters>
                <return>void</return>
            </abstract_method>
</interface>

我正在尝试创建一个 xslt 样式表来创建这个结果:

【问题讨论】:

你应该展示一个尝试等等。 【参考方案1】:

你可以像这样开始。 (我假设您可能仅限于 XSLT 1.0)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="_http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
    <xsl:template match="/">
        <html>
            <body>
                <xsl:apply-templates select="interface"></xsl:apply-templates>
            </body>
        </html>
    </xsl:template>
    
    <xsl:template match="interface">
        <h1><xsl:value-of select="@id"/></h1>
        <table>
            <thead>
                <tr>
                    <td>Operation</td>
                    <td>Argument(s)</td>
                    <td>Return</td>
                    <td>Exception</td>
                </tr>
            </thead>
            <xsl:apply-templates select="abstract_method"></xsl:apply-templates>
        </table>
        
    </xsl:template>
    
    <xsl:template match="abstract_method">
        <tr>
            <td><xsl:value-of select="@name"/></td>
            <td><p><xsl:apply-templates select="./parameters/argument"></xsl:apply-templates></p></td>
            <td><p><xsl:value-of select="./return/text()"/></p></td>
            <td><p><xsl:choose>
                <xsl:when test="count(./throws/exception) &gt; 0">Yes</xsl:when>
                <xsl:otherwise>No</xsl:otherwise>
            </xsl:choose></p></td>
        </tr>
    </xsl:template>
    
    <xsl:template match="argument">
        <span><xsl:value-of select="./text()"/>: <xsl:value-of select="@type"/>
        <xsl:if test="following-sibling::argument">, </xsl:if></span>
    </xsl:template>
</xsl:stylesheet>

【讨论】:

以上是关于Xml 到 XSLT:获取属性值等等的主要内容,如果未能解决你的问题,请参考以下文章

如何通过abap中的XSLT程序读取XML文件的属性

XSLT:XML 第一个属性需要转换为具有第二个属性值的元素

想要使用 XSLT 从 Xml 属性中获取价值

获取元素的值并使其成为 XSLT 中属性的值?

XSLT - 如何仅输出属性值并忽略元素的值

使用 xslt 2.0 合并具有相同父属性值的元素的 xml 内容