簡體   English   中英

XQuery | 如何將所有屬性轉換為元素

[英]XQuery | How to transform all attributes into elements

我需要准備一個XQuery文件,對於任何輸入XML文件,該文件都會將所有屬性轉換為元素。 我在下面的XSLT中完成了它。 tranformation.xsl

<xsl:template match="*" name="xsl:initial-template">
    <xsl:element name="{name()}">
        <xsl:for-each select="@*">
            <xsl:element name="{name()}">
                <xsl:value-of select="."/>
            </xsl:element>
        </xsl:for-each>

        <xsl:apply-templates select="child::node()"/>

    </xsl:element>
</xsl:template>

在XQuery 3.1中,您可以使用

declare function local:apply($nodes as node()*) as node()* {
    $nodes ! (
        typeswitch(.) 
            case document-node() 
              return local:apply(node())
            case element() 
              return element {node-name()} {
                                              @* ! element{node-name()} { data() }, 
                                              local:apply(node()) 
                                           }
            default return .
    )
};

local:apply(/)

在線示例位於https://xqueryfiddle.liberty-development.net/bFukv8c/3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM