代码之家  ›  专栏  ›  技术社区  ›  LokaBanan

Xquery递归

  •  0
  • LokaBanan  · 技术社区  · 7 年前

    我有一个关于Xpath的问题,这是我非常有经验的。我正在做一个作业,我应该反转所有元素,以便音乐标签内的子元素成为属性,并且属性成为子元素。

    是否可以使用Xpath实现这一点,我应该如何实现?还是编写XML文件的DTD并在Xquery中编写解决方案更好?

    我的XML如下所示:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <music>
    
    <song genre="rocknroll" album="1134" artist="249" id="11992"><name>The Sound of Silence</name><nr>1</nr></song>
    <song genre="rocknroll" album="4329" artist="932" id="34311"><name>Material Girl</name><nr>2</nr></song>
    <song genre="hardrock" album="5293" artist="1167" id="54312"><name>Paradise City</name><nr>1</nr></song>
    <song genre="classic" album="7002" artist="156" id="78340"><name>La Primavera</name><nr>1</nr></song>
    
    <artist id="249" isband="yes">Simon and Garfunkel</artist>
    <artist id="932" isband="no">Madonna</artist>
    <artist id="1167" isband="yes">Guns N'Roses</artist>
    <artist id="156" isband="no">Antonio Vivaldi</artist>
    
    <album issued="1964" id="1134" label="Columbia Records">Wednesday Morning, 3 AM</album>
    <album issued="1984" id="4392" label="Sire Records">Like A Virgin</album>
    <album issued="1988" id="5293" label="Geffen Records">Appetite for Destruction</album>
    <album issued="2004" id="7002" label="Naxos Records" performers="Wiener Philharmoniker">Le Quattro Stagioni</album>
    
    </music>
    

    提前感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Michael Kay    7 年前

    XPath只能选择输入树中的节点,或计算新的原子值(如字符串和数字)。它无法构造新树。为此,您需要XSLT或XQuery。

    出于其他原因,编写DTD可能会很有用,但它不会使生成此问题所需的XSLT或XQuery代码变得更容易。